Login
Neu hier? Registrieren.
Wayfinder-Templates
Wayfinder konstruiert seinen Output auf der Grundlage einer Menge von Templates, die jeweils für einen bestimmten Bereich des erzeugten Outputs festlegen, wie er aufgebaut sein soll.
Grundsätzlich ist jedes Template ein Stück HTML mit einigen eingebetteten MODx-Platzhaltern. Das HTML sorgt für den statischen, festen Teil der Struktur des Wayfinder-Output (die Teile, die auf jeder Seite, die Wayfinder aufruft, gleich bleiben), während die Platzhalter für den dynamisch erzeugten Inhalt sorgen (die Teile, die auf jeder Seite anders sind und die die individuellen Eigenschaften jeder Seite widerspiegeln).
Die Templates müssen alle sorgfältig aufgebaut sein, damit beim Zusammenbau ihrer jeweiligen Outputs als Gesamtergebnis ein regelgerechter Inhalt zum Einfügen in eine Webseite entsteht. Typischerweise bedeutet das einfach, dass das Ergebnis eine korrekte HTML-Tabelle, -Liste etc. ist; Sie können aber auch fantasiereich sein und CSS, JavaScript, eingebettetes PHP oder was immer Sie möchten einschließen: Es liegt bei Ihnen, sicherzustellen, dass das zusammengesetzte Ergebnis, in eine Webseite eingefügt, ordentlich funktioniert.
Beachten Sie auch, dass Sie Wayfinder mehrfach auf der selben Seite aufrufen können, wobei jeder Aufruf ganz andere Templates verwenden kann. Dies gewährt Ihnen große Flexibilität beim Erzeugen von Hauptmenüs, Seitenmenüs, "Quick reference"-Listen oder was auch immer Sie in irgendeiner Weise aus einer Liste von Dokumenten aus dem MODx-Dokumenten-Baum ableiten möchten.
Template-Schema
Das Gesamtschema, nach dem die Templates zusammengeführt werden, sehen Sie hier:
|
&startItemTpl
|
Das Template &startItemTpl
Wenn (und nur wenn) der &displayStart-Parameter auf TRUE gesetzt ist, wird das Template &startItemTpl benutzt. Wenn es benutzt wird, kommt das Template &outerTpl in den [+wf.wrapper+]-Platzhalter des letzteren.
Steht der &displayStart-Parameter nicht auf TRUE, wird das &startItemTpl -Template nicht benutzt, und das Template &outerTpl bildet den äußersten Container für den Wayfinder-Output.
Das &startItemTpl-Template wird höchstens einmal im Wayfinder-Output benutzt.
Das Template &outerTpl
Das &outerTpl-Template ist eines der beiden stets
erforderlichen Templates (für die es eingebaute Vorgabe-Templates in
Wayfinder gibt). Alle Zeilen, die die Menüpunkte bilden, kommen in den [+wf.wrapper+]-Platzhalter dieses Templates.
Das &outerTpl-Template wird stets wenigstens einmal im Wayfinder-Output benutzt, als "Container" für die oberste Ebene in der Menü-Hierarchie. Und wenn kein &innerTpl -Template angegeben ist, wird es auch als Container für jedes Submenü im erzeugten Output verwendet.
Das Template &rowTpl
Für jedes Dokument, das Wayfinder in dem erzeugten Output auflisten soll, wird eine "Zeile" erzeugt. Als Vorgabe wird das Template &rowTpl zum Aufbau dieser Zeilen benutzt.
Dieses Template sollte einen [+wf.wrapper+]-Platzhalter enthalten, denn dort hinein setzt Wayfinder ein Untermenü, das unterhalb einer bestimmten Zeile erscheinen soll.
Es gibt verschiedene zeilenbezogenen Templates, mit denen man unter verschiedenen Bedingungen unterschiedlichen Output der Zeilen erzeugen kann. Jedes davon, sofern Sie es definieren, wird anstelle des ursprünglichen &rowTpl-Template verwendet, wenn ein Dokument bestimmte Kriterien erfüllt, z.B.: für eine Zeile mit Kindern (&parentTpl), für die Zeile, dessen Webseite gerade angezeigt wird (&selfTpl), für solche, die kein Webseiten-Template haben (&categoryFoldersTpl), usw.
Das Template &innerTpl
Ist das &innerTpl-Template definiert, wird es als "Container" für alle Untermenüs, die Wayfinder ausgibt, benutzt - egal wie tief sie verschachtelt sind. In den [+wf.wrapper+]-Platzhalter dieses Templates kommen alle Zeilen eines Untermenüs.
Ist ein &innerTpl-Template nicht definiert, wird an seiner Stelle das Template &outerTpl benutzt.
Das Template &innerRowTpl
Dies ist das ursprüngliche zeilen-erzeugende Template für alle Zeilen, die innerhalb eines &innerTpl-Template erscheinen. Ist dieses Template nicht definiert, wird stattdessen das Template &rowTpl benutzt. Wenn &innerTpl nicht definiert ist, kommt &innerRowTpl trotzdem zum Tragen.
Andere zeilenbezogene Templates
Alle oben nicht erwähnten Templates sind zeilenbezogene Templates (z.B. &parentRowTpl), die an Stelle der ursprünglichen Templates &rowTpl und &innerRowTpl verwendet werden, abhängig von den Eigenschaften jedes Dokuments (z.B. bei &parentRowTpl alle Dokumente die Kindelemete besitzen).
Platzhalter, die innerhalb von Wayfinder-Templates benutzt werden können
| Parameter | Beschreibung | |
|---|---|---|
| Die folgenden Platzhalter "erbt" Wayfinder von der Seite, in der er aufgerufen wird: | ||
[+template_variable_name+] |
Jede Template-Variable, die vom Template der aktuellen Seite benutzt wird, kann in einem Wayfinder-Template referenziert werden. | |
[+document_field_name+] |
Jedes Standard-Dokument-Feld kann in einem Wayfinder-Template referenziert werden. | |
| Die folgenden sind die vom Wayfinder-Snippet zusätzlich definierten und benutzten Platzhalter: | ||
[+wf.wrapper+] |
Die meisten (alle?) Templates haben möglicherweise untergeordneten Inhalt. Zum Beispiel enthält das &outerTpl-Template normalerweise alle Zeilen, die das Menü bilden. Der Platzhalter [+wf.wrapper+] in jedem Template sagt Wayfinder, wo der untergeordnete Inhalt des Templates hinkommen soll. |
|
[+wf.classnames+] |
Eine
durch Leerzeichen getrennte Liste von CSS-Klassennamen, die auf das
aktuelle Template angewendet werden, kommt hier in dieses Template.
Welche CSS-Klassennamen angewendet werden, hängt von drei Dingen ab:
|
|
[+wf.classes+] |
Der Inhalt dieses Platzhalters ist das Ergebnis folgenden Codes: class="[+wf.classnames+] . Das ist nur eine Liste der anwendbaren CSS-Klassennamen, verpackt in ein HTML "class"-Attribut. |
|
[+wf.link+] |
|
|
[+wf.title+] |
|
|
[+wf.linktext+] |
|
|
[+wf.subitemcount+] |
Die Anzahl der unmittelbaren Kind-Dokumente (0 oder eine positive ganze Zahl) des dieser Zeile entsprechenden Dokuments kommt in diesen Platzhalter. | |
[+wf.attributes+] |
In diesen Platzhalter kommt der Inhalt des link attributes-Feldes des dieser Zeile entsprechenden Dokuments. | |
[+wf.id+] |
Wurde der Parameter &rowIdPrefix benutzt, um für jede Zeile eine eindeutige ID festzulegen, so kommt diese ID in diesen Platzhalter. Andernfalls bleibt dieser Platzhalter leer. | |
[+wf.docid+] |
In diesen Platzhalter kommt die document ID des dieser Zeile entsprechenden Dokuments. | |
[+wf.description+] |
Das description-Feld des dieser Zeile entsprechenden Dokuments kommt in diesen Platzhalter. | |
[+wf.introtext+] |
Das introtext-Feld des dieser Zeile entsprechenden Dokuments kommt in diesen Platzhalter. | |
Eine schöne Zusammenfassung was es mit den Klassen und dem Zusammenwirken der Platzhalter auf sich hat, hat Ottogal im Forum zusammengestellt.