2. {{ SteffenR }}
● Drupal - Developer bei
● HTML / CSS / JS seit 1999
● PHP seit 2002
● Drupal seit 2008 (Danke DUG-Hannover)
● 244597 auf drupal.org
3. {{ twig }}
liest sich auf jeden Fall interessant
"The flexible, fast and secure
template 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"
4. {{ 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 :-)
5. {{ 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)
8. {{ 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
9. {{ 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
10. {{ twig.internals }}
Wie funktioniert das Ganze im Hintergrund ?
1. Template laden
a. lexer - Zerlegung in kleinere Einzelteile (Token-
Stream) zum Parsen
b. parser - Konvertierung des Token-Streams in
Abstract-Syntax-Tree oder Node-Tree
c. compiler - Generierung des PHP-Codes
für die Ausgabe aus Node-Tree / AST
2. Ausgabe des Template
http://twig.sensiolabs.org/doc/internals.html
11. {{ 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"
12. {{ twig.variables }}
print $var_name ?
phptemplate
twig
region Template im Vergleich
13. {{ twig.filters }}
Ausgabe von Variablen beeinflussen
● PHP-Funktionen ohne PHP
○ date, replace, url_encode, capitalize, striptags, join,
reverse, length, sort, merge
● Chaining von Filtern
14. {{ twig.functions }}
Ausgabe von Variablen beeinflussen
● range, cycle, constant, random,
attribute, block, parent, dump, date
http://twig.sensiolabs.org/doc/functions/index.html
Ausgabe von Feld-Inhalten mit alternating CSS Classes
17. {{ twig.includes }}
andere Templates einbinden
Wiederverwendbarkeit von Templates
18. {{ twig.includes }}
kleiner geht immer...
stark-theme - theme.inc breadcrumb.twig
liest das Array breadcrumbs aus und zeigt
es als Liste an - hier wird die Funktion
join verwendet
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
19. {{ twig.inheritance }}
html.twig
Vererbung von Templates
maintenance-page.twig
selektives Überschreiben - Variable .mobi in page_preprocess gesetzt
20. {{ twig.macros }}
re-usable pieces of view-logic
Einbindung des Sidebar Macros in bestehende Template Datei
21. {{ twig.demo }}
na dann mal los ...
http://twig.local/
einfaches Twig-Theme erstellen