Das Design admin4l: die Admin-Seite aus Layouts gebaut
Diese Seite ist für Administratoren, die die Administrationsoberfläche anordnen wollen, und für Entwickler, die
Admin-Blöcke hinzufügen. admin4l ist admin4, dessen Seite von Exponential Layouts zusammengesetzt wird: Kopfbereich,
linke und rechte Seitenleiste, Hauptbereich und Fußzeile sind Zonen eines Admin-Layouts, und was jede Zone zeigt,
sind Blöcke. Mit den mitgelieferten Layouts sieht die Seite genau wie admin4 aus: dasselbe Markup, dieselben Klassen,
dieselben Stylesheets.
Darauf umstellen
In der
site.ini.append.phpdes Admin-Siteaccess:[DesignSettings] SiteDesign=admin4l AdditionalSiteDesignList[] AdditionalSiteDesignList[]=admin4 AdditionalSiteDesignList[]=admin3 AdditionalSiteDesignList[]=admin2 AdditionalSiteDesignList[]=adminadmin4lenthält nur, was sich von admin4 unterscheidet (das Seitenlayout, das Zonen-Template und die Block-Templates); jedes andere Template und alle Stylesheets kommen ausadmin4.Leeren Sie die Caches:
php bin/php/ezcache.php --clear-tag=ini --allow-root-user, dann--clear-id=template,template-override,template-block,content.
Der Sicherheitsschalter
Eine Einstellung bringt jede Admin-Seite zum einfachen admin4 zurück, gleich, was die Layouts und Regeln sagen. In
settings/siteaccess/<admin siteaccess>/explayouts.ini.append.php:
[AdminLayoutSettings]
Enabled=disabledEnabled=enabled schaltet die Layouts ein. Zwei weitere Fälle greifen ohne jede Einstellung auf das eigene Template von
admin4 zurück:
- die Seite, wenn kein Admin-Layout aufgelöst wird oder das aufgelöste Layout keine Blöcke hat;
- eine Zone, die nichts ausgibt (sie wird stattdessen aus dem eigenen Template von admin4 gezeichnet). Die Hauptzone zeigt immer das Ergebnis des Moduls, auch wenn kein Block für das Modulergebnis in ihr platziert ist.
Ein Block, der auf halbem Weg scheitert, lässt stehen, was er schon ausgegeben hat; nur eine Zone, die leer herauskommt, greift auf den Rückfall zurück.
Layouts, Zonen und Blöcke
| Layout-Typ | Zonen | Seitenspalten |
|---|---|---|
admin_3col | header, topmenu, left, right, main_top, main, main_bottom, footer | links und rechts |
admin_2col | header, topmenu, left, main_top, main, main_bottom, footer | links |
admin_full | header, topmenu, main, footer | keine |
Die Zonen main_top und main_bottom werden nur auf einer Seite gezeichnet, die den Rahmen #maincolumn hat: nicht
auf einer Seite, die admin4 in #a4-main eingehüllt zeichnet (main_wrapped), und nicht, wenn eine Ansicht
hide_left_menu setzt. admin_full deklariert sie deshalb nicht. Ein Block, der in einem früher gespeicherten Layout
dort platziert ist (Installationen, die vor dieser Änderung befüllt wurden, haben einen Brotkrumenpfad in main_top von
admin_full, siehe die Verhaltensänderung), bleibt gespeichert, wird aber nie angezeigt.
Die Layouts werden im Reiter Layouts bearbeitet, wie Website-Layouts. Admin-Layouts, -Regeln und -Blöcke sind eine
eigene Gruppe: Der Editor führt sie nur als Admin-Layouts auf (?group=admin oder all), die Blockliste eines
Website-Layouts bietet nie einen Admin-Block an, und ein Website-Layout erreicht nie die Administrationsoberfläche.
Blöcke ([AdminBlockSettings] in explayouts.ini, jeder mit Group=admin; das Ansichts-Template eines Blocks ist
design:explayouts/block/<identifier>.tpl):
| Teil der Seite | Blöcke |
|---|---|
| Kopfbereich | admin_logo, admin_menu_button, admin_search, admin_theme_switch (nicht nur die Theme-Schaltfläche: Er zeichnet die ganze Gruppe von Werkzeugen, die admin4 hinter die Suche setzt, den Website-Link und das Website-Menü, die Schaltfläche für den Farbmodus, die Kontexthilfe und das Benutzermenü; der Name blieb, damit gespeicherte Layouts weiter funktionieren), admin_sidebar_controls (die Seite zeichnet das Logo und die Menüschaltfläche vor dem Menübereich und den Rest der Kopfzone danach, sodass die Tab-Reihenfolge die von admin4 ist; admin_sidebar_toggles, die Menüschaltfläche und die Steuerungen der Seitenleisten in einem Block, funktioniert weiter in Layouts, die vor der Aufteilung gespeichert wurden, und wird nach den Werkzeugen gezeichnet); admin_tab_menu für die Zone topmenu: Es zeichnet nur die Listeneinträge, die Seite zeichnet den einen Menübereich darum |
| Linke Seitenleiste | admin_left_menu (das Menü des aktuellen Navigationsteils; der optionale Parameter part erzwingt einen), admin_content_tree |
| Rechte Seitenleiste | admin_toolbar_right, admin_toolbar_developer (die Werkzeugleisten admin_right und admin_developer aus toolbar.ini, wie admin4 sie zeichnet, in der Reihenfolge von admin4) oder die einzelnen Werkzeuge admin_clear_cache, admin_bookmarks, admin_current_user, admin_preferences, admin_quick_settings |
| Seite | admin_breadcrumb, admin_module_result, admin_footer, admin_popup_menu, admin_overlay, admin_debug_area |
| Werkzeugleiste | admin_ui_switch (das Werkzeug von admin4 in der Werkzeugleiste für die Auswahl der Oberfläche, uiswitch) |
Jeder Block bindet den Teil von admin4 ein, nach dem er benannt ist, mit den eigenen Bedingungen von admin4, sodass das
Markup gleich bleibt. Die Hüllen (#navbar, #leftmenu, #footer-design ...) zeichnet die Seite, nicht die Blöcke.
Das Kontextmenü, die Debug-Markierung und die Überlagerung werden dort gezeichnet, wo admin4 sie zeichnet (außerhalb der
Fußzeile), aus den Blöcken der Fußzone, und nur von dort: In einer anderen Zone platziert, werden sie nicht
gezeichnet (die Seite zeichnet jeden von ihnen einmal). Gezeichnet werden nur Blöcke, deren Definitionskennung mit
admin_ beginnt; die Kennung benennt das Template, deshalb wird jede andere Definition in einem Admin-Layout
übersprungen und im Debug-Log vermerkt.
admin_left_menu der Navigationsteile my, content, media und user enthält bereits die Inhaltsstruktur. Setzen Sie
admin_content_tree nur dann in eine Zone, wenn Sie den Baum auf einer Seite möchten, deren eigenes Menü keinen hat; in
den mitgelieferten Layouts ist er nicht platziert.
Welches Layout eine Seite bekommt
Regeln wählen nach Modul und Ansicht (Ziele module und module_view; Muster content, content/*,
content/view, *). Die erste eingeschaltete Regel nach Priorität, deren Layout ein Admin-Layout ist, gewinnt; dann
[AdminLayoutSettings] DefaultLayout (Standard admin_3col). Regeln gelten nur auf den Siteaccesses aus
SiteAccessMatch[] (admin, admin_*, admintest_*). Mitgelieferte Regeln:
| Priorität | Ziele | Layout |
|---|---|---|
| 200 | jede Ansicht, deren Moduldefinition ui_context=edit sagt (content/edit, ...) | admin_full |
| 100 | content/view, content/dashboard | admin_3col |
| 90 | Module setup, user, shop | admin_3col |
| 10 | jedes Modul | admin_3col |
Caching
Das aufgelöste Layout wird CacheTTL Sekunden lang pro Modul, Ansicht und Siteaccess gemerkt. Die Cache-Blöcke der Seite
haben als Schlüssel die ID des Layouts und eine Admin-Generation, die sich ändert, wann immer ein Admin-Layout
veröffentlicht oder gelöscht wird oder sich eine Regel ändert, sodass eine Bearbeitung sofort erscheint und nichts
geleert werden muss. Kopfbereich und Fußzeile haben außerdem die Rollen des Benutzers als Schlüssel (das Kontextmenü
zeigt Einträge nach Richtlinie). Der GET-Parameter SectionID geht als Zahl in die Schlüssel ein, sodass seltsame Werte
keine Cache-Dateien erzeugen.
Unterschiede zu admin4
- Die Tab-Reihenfolge des Kopfbereichs ist die von admin4 (Logo, Menüschaltfläche, Menü, Suche, Werkzeuge,
Steuerungen der Seitenleisten): Die Seite zeichnet das Logo und die Menüschaltfläche der Kopfzone vor dem Menübereich
und den Rest der Kopfzone danach. Ein Layout, das mit dem alten Block
admin_sidebar_togglesgespeichert wurde (Menüschaltfläche und Steuerungen in einem), zeichnet ihn nach den Werkzeugen. - Auf einem Telefon fügt admin4 die Aktionen des Benutzers (
parts/a4_phone_user.tpl) in das geöffnete Telefonmenü ein und blendet dort das Benutzermenü des Kopfbereichs aus. Der Tab-Menü-Block von admin4l bindet sie nicht ein: Das Benutzermenü des Kopfbereichs bleibt, deshalb hat das Telefonmenü nur die Suche, die Reiter, „Mehr“ und die Schaltfläche zum Schließen. - Ein Block in
main_top/main_bottomwird nicht angezeigt, wo die Seite kein#maincolumnhat (siehe die Zonentabelle oben). admin_left_menumit dem Parameterpartoder jeder Navigationsteil, dessenparts/<name>/menu.tplnicht existiert, zeichnet dieses Include so, wie es ist: Die Template-Sprache kann nicht prüfen, ob ein Template existiert, deshalb gibt es keinen Rückfall. Nennen Sie nur Teile, die auf dem Siteaccess existieren.
Prüfen
php vendor/bin/phpunit --testsuite explayouts_admindeckt die Layout-Typen, Muster, Auflösung pro Modul, den Sicherheitsschalter, die Trennung von der Website, den Cache-Schlüssel und die Generation sowie die Blockdefinitionen und -Templates ab (Live-Einstellungen und -Datenbank, nichts wird geschrieben außer der eigenen Cache-Generation des Resolvers).
Siehe die Verhaltensänderung für das, was sich von admin4 unterscheidet, und admin4 für das Design darunter.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.