drupal und twig

24
Drupal 8 & Twig Drupal Usergroup Hannover 09.10.2012 The Twig logo is © 2010-2012 Sensio Labs

Upload: steffen-ruehlmann

Post on 11-May-2015

3.075 views

Category:

Technology


2 download

DESCRIPTION

Vortrag vom 09.10.2012 bei der Drupal-User-Group Hannover

TRANSCRIPT

Page 1: Drupal und twig

Drupal 8 & Twig

Drupal Usergroup Hannover 09.10.2012

The Twig logo is © 2010-2012 Sensio Labs

Page 2: Drupal und twig

{{ SteffenR }}

● Drupal - Developer bei

● HTML / CSS / JS seit 1999● PHP seit 2002● Drupal seit 2008 (Danke DUG-Hannover)● 244597 auf drupal.org

Page 3: Drupal und twig

{{ 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"

Page 4: Drupal und twig

{{ 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 :-)

Page 5: Drupal und twig

{{ 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)

Page 6: Drupal und twig

Drupal 7stark theme

{{ phptemplate }}html.tpl.php

Page 7: Drupal und twig

{{ twig }}html.twig

Drupal 8twig_stark theme

Page 8: Drupal und twig

{{ 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

Page 9: Drupal und twig

{{ 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

Page 10: Drupal und 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

Page 11: Drupal und twig

{{ 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"

Page 12: Drupal und twig

{{ twig.variables }}print $var_name ?

region Template im Vergleich

phptemplate

twig

Page 13: Drupal und 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

Page 14: Drupal und twig

{{ 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

Page 15: Drupal und twig

{{ twig.controlstructures }}loops, conditions

einfache for-Schleifen, if-else Konstkrukte

Page 16: Drupal und twig

bessere Lesbarkeit

{{ twig.controlstructures }}loops, conditions

phptemplate

twig

Page 17: Drupal und twig

Wiederverwendbarkeit von Templates

{{ twig.includes }}andere Templates einbinden

Page 18: Drupal und twig

{{ 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

Page 19: Drupal und twig

{{ twig.inheritance }}Vererbung von Templates

maintenance-page.twig

html.twig

selektives Überschreiben - Variable .mobi in page_preprocess gesetzt

Page 20: Drupal und twig

Einbindung des Sidebar Macros in bestehende Template Datei

{{ twig.macros }}re-usable pieces of view-logic

Page 21: Drupal und twig

{{ twig.demo }}na dann mal los ...

einfaches Twig-Theme erstellen

http://twig.local/

Page 22: Drupal und twig

{{ twig.questions }}

<h1>Fragen</h1><ul>{% for question in audience.questions %}

<li>{{ question|e }}</li>{% endfor %}</ul>

Page 23: Drupal und twig

{{ 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

Page 24: Drupal und twig

{{ 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]") }}