Layouts für CMS-Entwickler
Diese Seite richtet sich an Entwickler, die entscheiden, welche Teile einer Website Redakteure selbst zusammenstellen.
Exponential Layouts (die Erweiterungen explayouts, eine Portierung der Upstream-Layouts-Pakete auf diesen Kernel) lässt
Redakteure Seiten ohne Code aus Blöcken in Zonen bauen, während Ihre Templates und Ihr Inhaltsmodell bestimmen, wie
jeder Block aussieht.
Inhalt
- Die Teile
- Wie eine Seite ihr Layout erhält
- Wo Layouts auf Ihre Templates treffen
- Was Sie als Entwickler festlegen
- Template-Blöcke: Ihr Code in einem Layout
- Gemeinsame Layouts
- Layouts zwischen Installationen
- Layouts oder Templates
- Nach einer Änderung
Die Teile
| Teil | Was es ist |
|---|---|
| Layout | der Plan einer Seite, von einem Redakteur im Layout-Editor erstellt |
| Layout-Typ | die Zonen, die ein Layout hat (1 column, 2 columns, Hero + 3 columns ...), in Einstellungen mit einem Template festgelegt |
| Zone | ein Bereich des Layouts; enthält Blöcke untereinander |
| Block | ein Titel, Rich Text, ein Bild, eine Liste von Inhalten, eine Galerie, ein Hero und mehr; jeder von einer Blockdefinition mit View-Typen |
| Sammlung | die Elemente eines Listenblocks: von Hand ausgewählt oder durch eine Abfrage gefüllt |
| Regel (Zuordnung) | welche Seiten ein Layout verwenden: Ziele (eine Platzierung, ein Teilbaum, eine Modulseite) und Bedingungen (eine Klasse, ein Siteaccess) |
| Gemeinsames Layout | ein Layout, mit dessen Zonen andere verknüpft sind, etwa Kopf- und Fußbereich |
Die Sicht der Redakteure: Der Layout-Editor; der Rundgang: Rundgang durch den Layout-Editor.
Wie eine Seite ihr Layout erhält
Bei jeder Anfrage prüft der Resolver die aktivierten Regeln nach Priorität; die erste, deren Ziele und Bedingungen zur Seite passen, gewinnt. Regeln liegen in der Datenbank, werden in der Layout-Verwaltung unter Rules (Layout mappings) verwaltet, und die Registerkarte Layouts eines Knotens zeigt, zu welchem Layout er sich auflöst (Layout-Regeln, Layout-Zuordnungen).
Wo Layouts auf Ihre Templates treffen
Das Pagelayout fragt nach dem Layout der Seite und zeichnet es oder fällt auf das normale Ergebnis der View zurück:
def $page_layout = fetch( 'explayouts', 'resolve_layout', hash() )
if $page_layout
include uri='design:explayouts/layout.tpl' layout=$page_layout module_result=$module_result
else
$module_result.content
/if
undef $page_layoutBlöcke eines Layouts können den eigenen Inhalt der Seite zeigen (die Full View in einem Layout); ein Layout kann also das Template, das Sie für eine Klasse geschrieben haben, einrahmen statt es zu ersetzen. Weitere Fetch-Funktionen beantworten, welches Layout oder welche Regeln ein Knoten hat (Ein Layout in Templates abrufen).
Was Sie als Entwickler festlegen
| Sie legen fest | Wo | Lesen |
|---|---|---|
| Layout-Typen und ihre Zonen | [LayoutType_<name>] in explayouts.ini (in der Append-Datei Ihrer Erweiterung) und ein Template für den Layout-Typ | Layout-Typen und Zonen |
| Neue View-Typen vorhandener Blöcke | die View-Typen der Blockdefinition und ein Template; kein PHP | Einen View-Typ hinzufügen |
| Neue Blocktypen | eine Blockdefinition und ihre Templates | Einen Blocktyp hinzufügen, Blockdefinitionen |
| Wie Blöcke aussehen | View-Templates für Blöcke und Stylesheets in Ihrem Design | View-Templates für Blöcke, Layout-Blöcke gestalten |
| Wie Listenelemente aussehen | Ihre Ansichtsmodi je Klasse | Ansichtsmodi |
Redakteure kombinieren dann, was Sie festgelegt haben. Halten Sie die Zahl der Layout-Typen und View-Typen klein: Jeder ist eine Wahl, die ein Redakteur verstehen muss.
Template-Blöcke: Ihr Code in einem Layout
Ein Template-Block setzt ein Template Ihres Designs in eine Zone. Verwenden Sie ihn für Teile, die Code brauchen (ein Suchformular, ein von einem Fetch gespeister Kalender, ein Widget), während Redakteure weiterhin entscheiden, wo sie erscheinen (Template-Blöcke). Hier treffen sich die beiden Wege zu bauen (Zwei Wege zum Bauen).
Gemeinsame Layouts
Ein gemeinsames Layout enthält Blöcke, die viele Seiten verwenden; eine Zone eines anderen Layouts wird mit einer Zone des gemeinsamen Layouts verknüpft, statt dessen Blöcke zu kopieren. Eine Bearbeitung des gemeinsamen Layouts ändert jede Seite, die damit verknüpft ist (Gemeinsame Layouts und Zonenverknüpfung).
Layouts zwischen Installationen
Layouts und Regeln liegen in den Layout-Tabellen der Datenbank, nicht in Inhaltspaketen. Sie werden als eine ZIP-Datei übertragen:
./console exp:layouts list
./console exp:layouts export --all --output=var/tmp/layouts.zip
./console exp:layouts import var/tmp/layouts.zip --dry-run(Layouts exportieren und importieren). Regeln, die auf Platzierungen zielen, verweisen auf Knoten-IDs, die sich zwischen Installationen unterscheiden; prüfen Sie sie nach einem Import.
Layouts oder Templates
| Situation | Bauen mit |
|---|---|
| Landingpages, Kampagnen, eine Startseite, die Redakteure oft umstellen | Layouts |
| Jede Artikel-, Veranstaltungs- oder Produktseite | einem Template je Klasse, eventuell von einem Layout eingerahmt |
| Eine Liste, deren Inhalt Regeln folgt (die neuesten fünf News) | einem Layout-Block mit einer Abfragesammlung oder einem Fetch in einem Template |
| Etwas, das Code braucht | einem Template, mit einem Template-Block platziert, wenn Redakteure den Ort wählen |
Die Entscheidungstabelle geht weitere Fälle durch.
Nach einer Änderung
Layout-Änderungen werden im Editor veröffentlicht; Einstellungen und Templates brauchen geleerte Caches. Der Resolver hat einen eigenen Cache, und Seiten werden in den View-Caches und im Antwort-Cache von Velocity zwischengespeichert (Caches nach einer Änderung, Warum erscheint meine Änderung nicht?).
Verwandte Seiten
- Zwei Wege zum Bauen
- Layouts für Designer
- Kurs für Trainer: Exponential Layouts
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.