Drupal 8 & Twig                            Drupal Usergroup Hannover 09.10.2012The Twig logo is © 2010-2012 Sensio Labs
{{ SteffenR }}● Drupal - Developer bei●   HTML / CSS / JS seit 1999●   PHP seit 2002●   Drupal seit 2008 (Danke DUG-Hannov...
{{ twig }}      liest sich auf jeden Fall interessant"The flexible, fast and securetemplate engine for PHP"               ...
{{ twig.description }}               Was ist twig ?● entwickelt von Armin Ronacher - als Phyton  template-engine● seit 200...
{{ drupal.twig }}#1499460           "I just wanted to let everyone know that Im insupport of rethinking the theme system. ...
{{ phptemplate }}     html.tpl.php        Drupal 7      stark theme
{{ twig }}  html.twig    Drupal 8twig_stark theme
{{ twig.advantages }}         Vorteile von twig in Drupal● mehr Sicherheit im Theming● kein PHP/HTML Mix in Templates● ein...
{{ twig.disadvantages }}          Nachteile von twig in Drupal●   steile Lernkurve (begrenzt auf Tag-Syntax)●   neue Synta...
{{ twig.internals }} Wie funktioniert das Ganze im Hintergrund ?1. Template laden    a. lexer - Zerlegung in kleinere Einz...
{{ twig.features }}         Was bringt uns das konkret ?●   Filter●   Kontroll-Strukturen●   Template-Vererbung●   Makros●...
{{ twig.variables }}                print $var_name ?phptemplate                                             twig         ...
{{ twig.filters }}     Ausgabe von Variablen beeinflussen● PHP-Funktionen ohne PHP  ○ date, replace, url_encode, capitaliz...
{{ twig.functions }}      Ausgabe von Variablen beeinflussen● range, cycle, constant, random,  attribute, block, parent, d...
{{ twig.controlstructures }}             loops, conditions   einfache for-Schleifen, if-else Konstkrukte
{{ twig.controlstructures }}              loops, conditionsphptemplate                                    twig            ...
{{ twig.includes }} andere Templates einbindenWiederverwendbarkeit von Templates
{{ twig.includes }}                       kleiner geht immer...stark-theme - theme.inc    breadcrumb.twig                 ...
{{ twig.inheritance }}html.twig                   Vererbung von Templatesmaintenance-page.twigselektives Überschreiben - V...
{{ twig.macros }}           re-usable pieces of view-logicEinbindung des Sidebar Macros in bestehende Template Datei
{{ twig.demo }}    na dann mal los ...      http://twig.local/einfaches Twig-Theme erstellen
{{ twig.questions }}<h1>Fragen</h1><ul>{% for question in audience.questions %}   <li>{{ question|e }}</li>{% endfor %}</ul>
{{ twig.links }}● Drupal 8 Theme and Twig Sprint   http://drupal.org/sandbox/pixelmord/1750250● Twig-Documentation   http:...
{{ twig.end }}{{ thx|default("Danke für die Aufmerksamkeit") }}         {{ speaker.name|default("Steffen Rühlmann")   }}  ...
Upcoming SlideShare
Loading in …5
×

Drupal und twig

3,314 views

Published on

Vortrag vom 09.10.2012 bei der Drupal-User-Group Hannover

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,314
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Drupal und twig

  1. 1. Drupal 8 & Twig Drupal Usergroup Hannover 09.10.2012The Twig logo is © 2010-2012 Sensio Labs
  2. 2. {{ SteffenR }}● Drupal - Developer bei● HTML / CSS / JS seit 1999● PHP seit 2002● Drupal seit 2008 (Danke DUG-Hannover)● 244597 auf drupal.org
  3. 3. {{ 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 comeswith a bundled support for Twigas default templating engine"
  4. 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. 5. {{ drupal.twig }}#1499460 "I just wanted to let everyone know that Im insupport of rethinking the theme system. Im alsocomfortable that the team will come up with a goodsolution." (Dries Buytaert, 18.04.2012) John Albin "We hand themers a loaded gun (PHP) and tellthem to hammer in a nail with it. Oh, and be careful"(Drupalcon Denver)
  6. 6. {{ phptemplate }} html.tpl.php Drupal 7 stark theme
  7. 7. {{ twig }} html.twig Drupal 8twig_stark theme
  8. 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. 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. 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 / AST2. Ausgabe des Templatehttp://twig.sensiolabs.org/doc/internals.html
  11. 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. 12. {{ twig.variables }} print $var_name ?phptemplate twig region Template im Vergleich
  13. 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. 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
  15. 15. {{ twig.controlstructures }} loops, conditions einfache for-Schleifen, if-else Konstkrukte
  16. 16. {{ twig.controlstructures }} loops, conditionsphptemplate twig bessere Lesbarkeit
  17. 17. {{ twig.includes }} andere Templates einbindenWiederverwendbarkeit von Templates
  18. 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 verwendetStatt der vielen Theme-Funktionen in Drupal 7 stehen uns nun direkt die dieTemplates zur Verfügung, natürlich auch über _preprocess-hooks geändert werdenkönnten
  19. 19. {{ twig.inheritance }}html.twig Vererbung von Templatesmaintenance-page.twigselektives Überschreiben - Variable .mobi in page_preprocess gesetzt
  20. 20. {{ twig.macros }} re-usable pieces of view-logicEinbindung des Sidebar Macros in bestehende Template Datei
  21. 21. {{ twig.demo }} na dann mal los ... http://twig.local/einfaches Twig-Theme erstellen
  22. 22. {{ twig.questions }}<h1>Fragen</h1><ul>{% for question in audience.questions %} <li>{{ question|e }}</li>{% endfor %}</ul>
  23. 23. {{ twig.links }}● Drupal 8 Theme and Twig Sprint http://drupal.org/sandbox/pixelmord/1750250● Twig-Documentation http://twig.sensiolabs.org/documentation● Templating Engines in PHP - http://fabien.potencier. org/article/34/templating-engines-in-php● Drupal with Twig templates http://drupalmotion.com/article/drupal-twig-templates● [meta] new theme system http://drupal.org/node/1499460● What to Expect in Drupal 8 http://lyemium.com/content/what-expect-drupal-8
  24. 24. {{ 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("steffen@port11.de") }}

×