Die Template-Sprache lernen
Exponential gibt jede Seite, jede E-Mail und jedes PDF mit seiner eigenen Template-Sprache aus, bekannt als eZ TPL: Tags in geschweiften Klammern wie bei Smarty, mit Operatoren und Funktionen für Inhaltsobjekte, einer Fetch-API zum Lesen von Daten, einem Override-System zur Auswahl von Templates und einem Compiler, der Templates in PHP übersetzt (Die Template-Sprache). Designer und Entwickler brauchen sie gleichermaßen. Diese Seite gibt Ihnen einen Lernplan.
Inhalt
- Die fünf Konstrukte, die Sie zuerst lernen
- Ihr erstes Template
- Eine Lesereihenfolge
- Übungen
- Fehler, die Lernende machen
- Wenn Sie Smarty kennen
Die fünf Konstrukte, die Sie zuerst lernen
| Konstrukt | Beispiel | Bedeutung |
|---|---|---|
| Ausgabe mit Maskierung | {$node.name|wash} | Einen Wert ausgeben; wash maskiert HTML. Verwenden Sie es für alles, was ein Benutzer eingegeben hat |
| Variablen | {def $items = ...}, {set $items = ...}, {undef $items} | Einmal deklarieren, später ändern, freigeben |
| Daten | fetch( 'content', 'list', hash( 'parent_node_id', $node.node_id, 'limit', 5 ) ) | Inhalte lesen; hash baut benannte Werte |
| Schleifen und Bedingungen | {foreach $items as $child}...{/foreach}, {if $node.depth|gt( 2 )}...{/if} | Operatoren werden als Pipes geschrieben: gt, lt, eq, and, or, not |
| Inhalte anzeigen | {attribute_view_gui attribute=$node.data_map.title}, {node_view_gui content_node=$child view='line'} | Jedes Attribut und jeden Knoten sein eigenes Template verwenden lassen |
Quelle: Templates und Design, Teil 6.
Kommentare schreibt man {* ... *}. Links verwenden ezurl, in einem Attribut ohne Anführungszeichen geschrieben:
<a href={$child.url_alias|ezurl}>.
Ihr erstes Template
Die Anleitung zu Templates nennt ein kleines Template zum Ausprobieren in einem Override (es listet die Unterknoten des übergeordneten Knotens des aktuellen Elements auf, höchstens zehn):
<h1>{$node.name|wash}</h1>
{def $siblings = fetch( 'content', 'list', hash( 'parent_node_id', $node.parent_node_id, 'limit', 10 ) )}
<ul>
{foreach $siblings as $sibling}
<li><a href={$sibling.url_alias|ezurl}>{$sibling.name|wash}</a></li>
{/foreach}
</ul>
{undef $siblings}Erwartet: die Überschrift, gefolgt von einer Liste von Links. Setzen Sie es in das Override aus Projekt 3 und erklären Sie dann jede Zeile in Ihrem Lerntagebuch.
Eine Lesereihenfolge
Beginnen Sie aufgabenorientiert und gehen Sie dann in die Tiefe:
- Überblick über Templates und Grundlagen der TPL-Syntax, die behutsame Einführung.
- Templates und Design, Teile 1 bis 6: wie ein Template gefunden wird, Overrides, Syntaxprüfungen.
- Was die Template-Sprache ist.
- Werte und Literale und Variablen im Detail.
- Referenz der Kontrollstrukturen.
- Das Objektmodell in Templates und Data Map und Inhalte.
- Fehler und Fehlersuche.
- Template-Ressourcen und Overrides und Template-Caches.
- Die Operator-Referenz nach Bedarf: Template-Operatoren.
Der Kurs Entwickler der Trainer hat ein ganzes Modul zur Sprache, Modul 2, mit Übungen und Quizzen.
Übungen
Kurze Übungen, jeweils auf Ihrer Lernwebsite, in einem Override, das Sie danach entfernen können:
- Geben Sie den Namen und die Knotennummer des aktuellen Elements aus.
- Listen Sie die ersten fünf Unterknoten des Elements mit Links auf. Zeigen Sie dann „Keine Elemente“ an, wenn es keine gibt.
- Zeigen Sie das Attribut title mit
attribute_view_guian, geben Sie dann$node.data_map.title.contentaus und vergleichen Sie. - Verwenden Sie
{delimiter}, um in einer Schleife Kommas zwischen die Namen zu setzen. - Bauen Sie absichtlich einen Fehler in ein Template ein (einen unbekannten Operator), prüfen Sie es mit
php bin/php/eztemplatecheck.phpund lesen Sie dann, was die Engine protokolliert (Fehler und Fehlersuche).
Fehler, die Lernende machen
| Fehler | Ergebnis | Lösung |
|---|---|---|
wash vergessen | Text mit < oder Anführungszeichen kann die Seite zerstören oder eine Sicherheitslücke öffnen | |wash auf jedem Wert aus Inhalten oder von Besuchern |
Dieselbe Variable zweimal mit {def} | Eine Warnung | Einmal {def}, danach {set} |
design/standard/templates/ bearbeiten | Beim nächsten Upgrade verloren | Ein Override in Ihrem eigenen Design |
Arithmetik wie $a + 1 erwarten | Funktioniert nicht | Operatoren wie sum; siehe die Unterschiede zu Smarty |
| Ein neuer Template-Pfad, ohne Caches zu leeren | Das alte Template wird verwendet | Einmal den Override- und den Template-Cache leeren |
Wenn Sie Smarty kennen
Lesen Sie Smarty und die Template-Sprache im Vergleich und die Unterschiede im Detail: keine Infix-Arithmetik und keine Infix-Vergleiche, kein PHP in Templates, keine automatische Maskierung und Overrides statt Vererbung.
Verwandte Seiten
- Projekt 3: ein Template-Override
- Lernpfad: Designer
- Lernpfad: Entwickler
- 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.