drupal und twig
DESCRIPTION
Vortrag vom 09.10.2012 bei der Drupal-User-Group HannoverTRANSCRIPT
Drupal 8 & Twig
Drupal Usergroup Hannover 09.10.2012
The Twig logo is © 2010-2012 Sensio Labs
{{ SteffenR }}
● Drupal - Developer bei
● HTML / CSS / JS seit 1999● PHP seit 2002● Drupal seit 2008 (Danke DUG-Hannover)● 244597 auf drupal.org
{{ twig }}liest sich auf jeden Fall interessant
"The flexible, fast and securetemplate engine for PHP"
"Twig is a modern template engine for PHP"
"Symfony 2 PHP framework comes with a bundled support for Twig as default templating engine"
{{ twig.description }}Was ist twig ?
● entwickelt von Armin Ronacher - als Phyton template-engine
● seit 2009 Default Template-Engine von Symfony2 (http://twig.sensiolabs.org/)
● erhältlich als Standalone-Lösung zur Einbindung in eigene PHP-basierte Lösungen
● basierend auf PHP5 - OOP-Templates● das LESS/SASS für HTML :-)
{{ drupal.twig }}
#1499460"I just wanted to let everyone know that I'm in
support of rethinking the theme system. I'm also comfortable that the team will come up with a good solution." (Dries Buytaert, 18.04.2012)
John Albin "We hand themers a loaded gun (PHP) and tell
them to hammer in a nail with it. Oh, and be careful" (Drupalcon Denver)
Drupal 7stark theme
{{ phptemplate }}html.tpl.php
{{ twig }}html.twig
Drupal 8twig_stark theme
{{ twig.advantages }}Vorteile von twig in Drupal
● mehr Sicherheit im Theming● kein PHP/HTML Mix in Templates ● einfache Tag-basierte Syntax ● Wiederverwendbarkeit von Templates● Vermeidung neuer Sicherheitslücken● Integration in IDEs (Netbeans, vim, PHP-
Storm etc..)● gute Integration in Symfony2 - bringt beide
Communities wieder ein Stück mehr zusammen
{{ twig.disadvantages }}Nachteile von twig in Drupal
● steile Lernkurve (begrenzt auf Tag-Syntax)● neue Syntax für Drupal-Themer● Performance-Bedenken● Update Zyklen Drupal vs. Twig
{{ twig.internals }}Wie funktioniert das Ganze im Hintergrund ?
1. Template ladena. lexer - Zerlegung in kleinere Einzelteile (Token-
Stream) zum Parsenb. parser - Konvertierung des Token-Streams in
Abstract-Syntax-Tree oder Node-Treec. compiler - Generierung des PHP-Codes
für die Ausgabe aus Node-Tree / AST2. Ausgabe des Template
http://twig.sensiolabs.org/doc/internals.html
{{ twig.features }}Was bringt uns das konkret ?
● Filter● Kontroll-Strukturen● Template-Vererbung● Makros● Erweiterbarkeit durch OOP● Sandbox● erkennt automatisch den PHP-Datentyp -
"bye bye Theme-Render Array of DOOM"
{{ twig.variables }}print $var_name ?
region Template im Vergleich
phptemplate
twig
{{ twig.filters }}Ausgabe von Variablen beeinflussen
● PHP-Funktionen ohne PHP○ date, replace, url_encode, capitalize, striptags, join,
reverse, length, sort, merge
● Chaining von Filtern
{{ twig.functions }}Ausgabe von Variablen beeinflussen
Ausgabe von Feld-Inhalten mit alternating CSS Classes
● range, cycle, constant, random, attribute, block, parent, dump, datehttp://twig.sensiolabs.org/doc/functions/index.html
{{ twig.controlstructures }}loops, conditions
einfache for-Schleifen, if-else Konstkrukte
bessere Lesbarkeit
{{ twig.controlstructures }}loops, conditions
phptemplate
twig
Wiederverwendbarkeit von Templates
{{ twig.includes }}andere Templates einbinden
{{ twig.includes }}kleiner geht immer...
stark-theme - theme.inc
liest das Array breadcrumbs aus und zeigt es als Liste an - hier wird die Funktion join verwendet
breadcrumb.twig
Statt der vielen Theme-Funktionen in Drupal 7 stehen uns nun direkt die die Templates zur Verfügung, natürlich auch über _preprocess-hooks geändert werden könnten
{{ twig.inheritance }}Vererbung von Templates
maintenance-page.twig
html.twig
selektives Überschreiben - Variable .mobi in page_preprocess gesetzt
Einbindung des Sidebar Macros in bestehende Template Datei
{{ twig.macros }}re-usable pieces of view-logic
{{ twig.demo }}na dann mal los ...
einfaches Twig-Theme erstellen
http://twig.local/
{{ twig.questions }}
<h1>Fragen</h1><ul>{% for question in audience.questions %}
<li>{{ question|e }}</li>{% endfor %}</ul>
{{ twig.links }}
● Drupal 8 Theme and Twig Sprinthttp://drupal.org/sandbox/pixelmord/1750250
● Twig-Documentationhttp://twig.sensiolabs.org/documentation
● Templating Engines in PHP - http://fabien.potencier.org/article/34/templating-engines-in-php
● Drupal with Twig templateshttp://drupalmotion.com/article/drupal-twig-templates
● [meta] new theme systemhttp://drupal.org/node/1499460
● What to Expect in Drupal 8http://lyemium.com/content/what-expect-drupal-8
{{ twig.end }}
{{ thx|default("Danke für die Aufmerksamkeit") }}
{{ speaker.name|default("Steffen Rühlmann") }}{{ speaker.web|default("www.port11.de") }}{{ speaker.twitter|default("_steffenr") }}
{{ speaker.email|default("[email protected]") }}