Contao Konferenz 2023 Kiel 19.10-20.10.2023 Über mich • seit 2010 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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Twig – Standard Template Engine 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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Müssen wir Twig-Templates in Contao 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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 If-Abfragen {% set test = "mein Inhalt" %} {% if test %} Ausgabe: Die Variable hat folgenden Inhalt: {{ test }} {% else %} Ausgabe: Die Variable hat keinen Inhalt. {% endif %} 12
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Ordnerstruktur • eigene Templates liegen im Ordner /templates • Contao unterscheidet zwischen • globalen Templates • themespezifischen Templates 14
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Globale Templates • innerhalb von /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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Globale Varianten-Templates • müssen im 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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Themespezifische Templates • innerhalb des 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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Textelement mit zusätzlichem Text erweitern {% extends "@Contao/content_element/text.html.twig" %} {% block text %} {{ parent() }} Mein zusätzlicher Text im globalen Varianten-Template. {% endblock %} 19 Neues Core-Template für Textelemente
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Erweitern {% extends "@Contao/…" %} 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 Konferenz 2023 Kiel 19.10-20.10.2023 HTML in Überschriften {% use "@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.
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Horizontale Wiederverwendung {% use "@Contao/…" %} 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
Contao Konferenz 2023 Kiel 19.10-20.10.2023 weitere Informationen • Twig Doku • Contao Handbuch • Contao Entwickler-Doku • Alle neuen Core-Templates auf Git • Contao Tech Talk mit Moritz Vondano 24
Contao Konferenz 2023 Kiel 19.10-20.10.2023 Danke für die Aufmerksamkeit Danke 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