Your SlideShare is downloading. ×
Drupal und twig
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Drupal und twig

2,999
views

Published on

Vortrag vom 09.10.2012 bei der Drupal-User-Group Hannover

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
2,999
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Drupal 8 & Twig Drupal Usergroup Hannover 09.10.2012The Twig logo is © 2010-2012 Sensio Labs
  • 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 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. {{ 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 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. {{ phptemplate }} html.tpl.php Drupal 7 stark theme
  • 7. {{ twig }} html.twig Drupal 8twig_stark theme
  • 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 / AST2. Ausgabe des Templatehttp://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
  • 15. {{ twig.controlstructures }} loops, conditions einfache for-Schleifen, if-else Konstkrukte
  • 16. {{ twig.controlstructures }} loops, conditionsphptemplate twig bessere Lesbarkeit
  • 17. {{ twig.includes }} andere Templates einbindenWiederverwendbarkeit 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 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. {{ twig.inheritance }}html.twig Vererbung von Templatesmaintenance-page.twigselektives Überschreiben - Variable .mobi in page_preprocess gesetzt
  • 20. {{ twig.macros }} re-usable pieces of view-logicEinbindung des Sidebar Macros in bestehende Template Datei
  • 21. {{ twig.demo }} na dann mal los ... http://twig.local/einfaches Twig-Theme erstellen
  • 22. {{ twig.questions }}<h1>Fragen</h1><ul>{% for question in audience.questions %} <li>{{ question|e }}</li>{% endfor %}</ul>
  • 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. {{ 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") }}