Frontendentwicklung (Freelancer) • Quereinsteiger im Bereich Web • größte Stärken im Bereich CSS • ausschließlich Betreuung von Contao (und HTML-Seiten) • Mitglied der Contao Association • Contao Partner • Forum: mlweb 2
von Symfony • Twig ist eine Template-Engine für die Programmiersprache PHP • wird seit Symfony 2 als Standard Template-Engine eingesetzt • Contao verwendet Twig 3.x • wird von vielen IDE und Editoren unterstützt • PhpStorm • Visual Studio Code • Notepad++ • Sublime Text • TextMate 5
5 nutzen? • Twig-Templates sind für die meisten Inhaltselemente in Contao 5 der Standard • PHP-Templates (HTML5) werden irgendwann komplett abgeschaltet • Entwickler von Erweiterungen können komplett auf Twig-Templates setzen • Ersteller von Themes können komplett auf Twig-Templates setzen 6
"mein Inhalt" %} {% if test %} <p>Ausgabe: Die Variable hat folgenden Inhalt:</p> <p>{{ test }}</p> {% else %} <p>Ausgabe: Die Variable hat keinen Inhalt.</p> {% endif %} 12
/templates in einer speziellen Ordnerstruktur • Unterordner content_element ist z.B. für Inhaltselemente vorgesehen • Contao legt ein neues globales Twig-Template automatisch in den richtigen Unterordner • gelten für alle Elemente des jeweiligen Typs 15
Unterordner der speziellen Struktur angelegt werden • Unterordner dafür müssen selbst angelegt werden • globale Varianten-Templates können zusätzlich zum globalen Template vorhanden sein • Name des Templates unter Einhaltung der Namenskonventionen frei wählbar 16 Namenskonventionen Contao
Theme-Ordners liegen themespezifische Templates • innerhalb des Theme-Ordners gleiche spezifische Ordnerstruktur • Struktur muss selbst angelegt werden • themespezifische Varianten-Templates sind ebenfalls möglich • besonderer Status, weil sie am spezifischsten sind, aber nicht Teil der Templatehierarchie sind • erst zur Laufzeit wird entschieden, ob ein themespezifisches Template angewendet wird • es können nur Templates angepasst werden, die als globales Template vorhanden sind 17
21 • Template (Parent-Template) erweitern • ohne weiteren Anpassungen wird genau der Inhalt des Parent-Templates ausgegeben (alle Blöcke und Attribute des Parent-Templates) • mit der Funktion attrs() können Attribute angepasst werden • Anpassungen sind nur innerhalb der verfügbaren Blöcke möglich • mit parent() wird der Inhalt des ursprünglichen Blocks ausgegeben • es kann immer nur ein Parent-Template geben
"@Contao/component/_headline.html.twig" %} {%- block headline_inner -%} {{ headline.text|insert_tag|raw }} {%- endblock -%} 22 DCA-Anpassung ist wie in Contao 4 auch Voraussetzung Filter für HTML-Ausgabe Achtung! Durch die Verwendung des Filters raw entsteht ein Sicherheitsrisiko. Das sollte man unbedingt vermeiden und je nach Anwendungsszenario anderen Lösungen den Verzug geben.
%} 23 • mit use werden Blöcke und Attribute eines anderen Templates zur Verfügung gestellt • Blöcke werden nicht automatisch ausgegeben • Blöcke können ausgegeben werden • Blöcke können über die Blockfunktion auch mehrfach verwendet werden • Blöcke können vorhandene Blöcke aus Parent-Templates verändern • es können beliebig viele andere Templates in einem Template verwendet werden
an Moritz Vondano vom Contao Core-Team für die Umsetzung dieses Features Webdesign Dr. Maren Lange Berneckstr. 41 72275 Alpirsbach +49 7444 955 62 44 [email protected] www.webdesign-marenlange.de 25