SlideShare ist ein Scribd-Unternehmen logo
Drupal 8 - Template Engine
Alles neu mit Twig ?
Drupal Usergroup Hannover
12.02.2013
● Drupal - Developer bei
● HTML / CSS / JS seit 1999
● PHP seit 2002
● Drupal seit 2008 (Danke DUG-Hannover)
● 244597 auf drupal.org
{{ SteffenR }}
"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"
" .. .clean separation, using a tag-based syntax,
so no PHP knowledge is needed and improves
reusability of templates."
{{ 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 :-)
{{ twig.beschreibung }}
#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)
{{ twig.drupal }}
{{ $phptemplate->gun }}
{{ phptemplate.code }}
stark theme (html.tpl.php)
Ausgabe einer
Variable
Zugriff auf Array
Objekt
Nutzung Drupal
interner t-Funktion
{{ twig.code }}
stark-theme (html.twig)
Ausgabe einer
Variable
Zugriff auf Array /
Objekt Element
Ausgabe
mit Filter
g
{{ $phptemplate['override'] }}
● eine Zentrale Stelle zum Überschreiben der
Ausgabe über ein twig-template
● alle Theme-Funktionen werden zu Template
Files
{{ twig.override }}
● mehr Sicherheit im Theming
● kein PHP/HTML Mix in Templates
● einfache Tag-basierte Syntax
● Wiederverwendbarkeit von Templates
● Integration in IDEs (Netbeans, vim, PHP-Storm
etc..)
● gute Integration in Symfony2 - bringt beide
Communities wieder ein Stück mehr zusammen
{{ twig.vorteile }}
● neue Syntax für Drupal-Themer
● Performance-Bedenken, wg. zusätzlichem
Framework im Theming
● Update Zyklen Drupal vs. Twig
{{ twig.nachteile }}
● Filter
● Kontroll-Strukturen
● Template-Vererbung
● Makros
● Erweiterbarkeit durch OOP
● Sandbox
● erkennt automatisch den PHP-Datentyp - "bye
bye Theme-Render Array of DOOM"
{{ twig.features }}
Ausgabe von Variablen
{{ twig.syntax }}
● Ausgabe von Variablen über {{ }}
● Ausgabe von Kommentaren über {# #}
● einfacher Zugriff Array oder Objektwerte möglich
Kontrollstrukturen
{{ twig.syntax }}
● Ausgabe von Kontrollstrukturen über {% %}
● beschränkt sich im Normalfall auf einfache if/else -
Konstrukte bzw. for-Schleifen
Twig bringt auch eigene Funktionen mit, um Ausgabe zu beeinflussen -
unabhängig von Drupal (Erweiterung möglich)
range, cycle, constant, random, attribute, block,
parent, dump, date
http://twig.sensiolabs.org/doc/functions/index.html
{{ twig.functions }}
● PHP-Funktionen ohne PHP
○ date, replace, url_encode, capitalize, striptags, join,
reverse, length, sort, merge
● Chaining von Filtern
{{ twig.filters }}
<h1>Fragen</h1>
<ul>
{% for question in audience.questions %}
<li>{{ question|e }}</li>
{% endfor %}
</ul>
{{ twig.questions }}
● 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
{{ twig.links }}
{{ thx|default("Danke für die Aufmerksamkeit") }}
{{ speaker.name|default("Steffen Rühlmann") }}
{{ speaker.web|default("www.undpaul.de") }}
{{ speaker.twitter|default("_steffenr") }}
{{ speaker.email|default("steffen@undpaul.de") }}
{{ twig.end }}

Weitere ähnliche Inhalte

Andere mochten auch

Xarxes pr3-transicions
Xarxes pr3-transicionsXarxes pr3-transicions
Xarxes pr3-transicions
Enric Martín
 
Motion ,force and speed
Motion ,force and speed Motion ,force and speed
Motion ,force and speed
Hiren Vyas
 
E accessibility framework
E accessibility frameworkE accessibility framework
E accessibility framework
Elyès FEKI
 
Pendidikan sivik
Pendidikan sivikPendidikan sivik
Pendidikan sivik
Fa S
 
Система поддержки сайтов
Система поддержки сайтовСистема поддержки сайтов
Система поддержки сайтов
Kaznetmedia
 
Què sabem i què volem saber?
Què sabem i què volem saber?Què sabem i què volem saber?
Què sabem i què volem saber?
SCB_
 
Computer generation
Computer generationComputer generation
Computer generation
sabillafh
 
Projecte tractament integrat de llengües 2
Projecte tractament integrat de llengües 2Projecte tractament integrat de llengües 2
Projecte tractament integrat de llengües 2
antoniapoltorres
 
Katalog Risfort
Katalog RisfortKatalog Risfort
Katalog Risfort
Piotr Kietos
 
Kviz znanja
Kviz znanjaKviz znanja
Kviz znanja
Ena Savić
 
Cavalos
CavalosCavalos
Proteccion+juridica+software
Proteccion+juridica+softwareProteccion+juridica+software
Proteccion+juridica+software
Diana Liz Flores
 
Iforme fes
Iforme fesIforme fes
Iforme fes
malditos
 
Lo scompenso cardiaco con funzione sistolica conservata 2012
Lo scompenso cardiaco con funzione sistolica conservata 2012Lo scompenso cardiaco con funzione sistolica conservata 2012
Lo scompenso cardiaco con funzione sistolica conservata 2012
University of Messina (Italy)
 
Trabajo de la sofi
Trabajo de la sofiTrabajo de la sofi
Trabajo de la sofi
malditos
 
XI UNDICESIMO SALONE DIMPRESA LAB 1 la Supply Chain Leggera - Alessandro Da ...
XI UNDICESIMO SALONE DIMPRESA  LAB 1 la Supply Chain Leggera - Alessandro Da ...XI UNDICESIMO SALONE DIMPRESA  LAB 1 la Supply Chain Leggera - Alessandro Da ...
XI UNDICESIMO SALONE DIMPRESA LAB 1 la Supply Chain Leggera - Alessandro Da ...
Roberto Terzi
 
Xarxes socials privacitat
Xarxes socials privacitatXarxes socials privacitat
Xarxes socials privacitat
Suclise
 
Per què les dents de llet es diuen
Per què les dents de llet es diuenPer què les dents de llet es diuen
Per què les dents de llet es diuen
ttv57
 
Matrimonio zaruma celi
Matrimonio zaruma celiMatrimonio zaruma celi
Matrimonio zaruma celi
gaha7711
 

Andere mochten auch (20)

Xarxes pr3-transicions
Xarxes pr3-transicionsXarxes pr3-transicions
Xarxes pr3-transicions
 
Motion ,force and speed
Motion ,force and speed Motion ,force and speed
Motion ,force and speed
 
E accessibility framework
E accessibility frameworkE accessibility framework
E accessibility framework
 
Pendidikan sivik
Pendidikan sivikPendidikan sivik
Pendidikan sivik
 
Система поддержки сайтов
Система поддержки сайтовСистема поддержки сайтов
Система поддержки сайтов
 
Què sabem i què volem saber?
Què sabem i què volem saber?Què sabem i què volem saber?
Què sabem i què volem saber?
 
Computer generation
Computer generationComputer generation
Computer generation
 
Projecte tractament integrat de llengües 2
Projecte tractament integrat de llengües 2Projecte tractament integrat de llengües 2
Projecte tractament integrat de llengües 2
 
Katalog Risfort
Katalog RisfortKatalog Risfort
Katalog Risfort
 
Kviz znanja
Kviz znanjaKviz znanja
Kviz znanja
 
Cavalos
CavalosCavalos
Cavalos
 
Proteccion+juridica+software
Proteccion+juridica+softwareProteccion+juridica+software
Proteccion+juridica+software
 
Iforme fes
Iforme fesIforme fes
Iforme fes
 
Lo scompenso cardiaco con funzione sistolica conservata 2012
Lo scompenso cardiaco con funzione sistolica conservata 2012Lo scompenso cardiaco con funzione sistolica conservata 2012
Lo scompenso cardiaco con funzione sistolica conservata 2012
 
Trabajo de la sofi
Trabajo de la sofiTrabajo de la sofi
Trabajo de la sofi
 
XI UNDICESIMO SALONE DIMPRESA LAB 1 la Supply Chain Leggera - Alessandro Da ...
XI UNDICESIMO SALONE DIMPRESA  LAB 1 la Supply Chain Leggera - Alessandro Da ...XI UNDICESIMO SALONE DIMPRESA  LAB 1 la Supply Chain Leggera - Alessandro Da ...
XI UNDICESIMO SALONE DIMPRESA LAB 1 la Supply Chain Leggera - Alessandro Da ...
 
Xarxes socials privacitat
Xarxes socials privacitatXarxes socials privacitat
Xarxes socials privacitat
 
Per què les dents de llet es diuen
Per què les dents de llet es diuenPer què les dents de llet es diuen
Per què les dents de llet es diuen
 
806 summer 2013 a
806 summer 2013 a806 summer 2013 a
806 summer 2013 a
 
Matrimonio zaruma celi
Matrimonio zaruma celiMatrimonio zaruma celi
Matrimonio zaruma celi
 

Ähnlich wie Drupal 8 templating alles neu mit twig

Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)
Peter_Majmesku
 
Drupal 8: TWIG Template Engine
Drupal 8:  TWIG Template EngineDrupal 8:  TWIG Template Engine
Drupal 8: TWIG Template Engine
drubb
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
NETWAYS
 
PHP Entwicklung mit VMware Images
PHP Entwicklung mit VMware ImagesPHP Entwicklung mit VMware Images
PHP Entwicklung mit VMware Images
Alexander Meindl
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
inovex GmbH
 
WordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxWordPress Professional – SEO Campixx
WordPress Professional – SEO Campixx
Sebastian Blum
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
dasjo
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
Hans-Joachim Piepereit
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
Peter Kraume
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks
Ralf Eggert
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
marco-huber
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Kai Donato
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
inovex GmbH
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Ralf Eggert
 
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
NETWAYS
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best Practices
Ralf Eggert
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositories
inovex GmbH
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
NETWAYS
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
cusy GmbH
 

Ähnlich wie Drupal 8 templating alles neu mit twig (20)

Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)Drupal Basics (7-8) Vortrag (01.2016)
Drupal Basics (7-8) Vortrag (01.2016)
 
Drupal 8: TWIG Template Engine
Drupal 8:  TWIG Template EngineDrupal 8:  TWIG Template Engine
Drupal 8: TWIG Template Engine
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
 
PHP Entwicklung mit VMware Images
PHP Entwicklung mit VMware ImagesPHP Entwicklung mit VMware Images
PHP Entwicklung mit VMware Images
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
 
WordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxWordPress Professional – SEO Campixx
WordPress Professional – SEO Campixx
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
 
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best Practices
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositories
 
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
 

Drupal 8 templating alles neu mit twig

  • 1. Drupal 8 - Template Engine Alles neu mit Twig ? Drupal Usergroup Hannover 12.02.2013
  • 2. ● Drupal - Developer bei ● HTML / CSS / JS seit 1999 ● PHP seit 2002 ● Drupal seit 2008 (Danke DUG-Hannover) ● 244597 auf drupal.org {{ SteffenR }}
  • 3. "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" " .. .clean separation, using a tag-based syntax, so no PHP knowledge is needed and improves reusability of templates." {{ twig }}
  • 4. ● 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 :-) {{ twig.beschreibung }}
  • 5. #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) {{ twig.drupal }}
  • 7. {{ phptemplate.code }} stark theme (html.tpl.php) Ausgabe einer Variable Zugriff auf Array Objekt Nutzung Drupal interner t-Funktion
  • 8. {{ twig.code }} stark-theme (html.twig) Ausgabe einer Variable Zugriff auf Array / Objekt Element Ausgabe mit Filter
  • 10. ● eine Zentrale Stelle zum Überschreiben der Ausgabe über ein twig-template ● alle Theme-Funktionen werden zu Template Files {{ twig.override }}
  • 11. ● mehr Sicherheit im Theming ● kein PHP/HTML Mix in Templates ● einfache Tag-basierte Syntax ● Wiederverwendbarkeit von Templates ● Integration in IDEs (Netbeans, vim, PHP-Storm etc..) ● gute Integration in Symfony2 - bringt beide Communities wieder ein Stück mehr zusammen {{ twig.vorteile }}
  • 12. ● neue Syntax für Drupal-Themer ● Performance-Bedenken, wg. zusätzlichem Framework im Theming ● Update Zyklen Drupal vs. Twig {{ twig.nachteile }}
  • 13. ● Filter ● Kontroll-Strukturen ● Template-Vererbung ● Makros ● Erweiterbarkeit durch OOP ● Sandbox ● erkennt automatisch den PHP-Datentyp - "bye bye Theme-Render Array of DOOM" {{ twig.features }}
  • 14. Ausgabe von Variablen {{ twig.syntax }} ● Ausgabe von Variablen über {{ }} ● Ausgabe von Kommentaren über {# #} ● einfacher Zugriff Array oder Objektwerte möglich
  • 15. Kontrollstrukturen {{ twig.syntax }} ● Ausgabe von Kontrollstrukturen über {% %} ● beschränkt sich im Normalfall auf einfache if/else - Konstrukte bzw. for-Schleifen
  • 16. Twig bringt auch eigene Funktionen mit, um Ausgabe zu beeinflussen - unabhängig von Drupal (Erweiterung möglich) range, cycle, constant, random, attribute, block, parent, dump, date http://twig.sensiolabs.org/doc/functions/index.html {{ twig.functions }}
  • 17. ● PHP-Funktionen ohne PHP ○ date, replace, url_encode, capitalize, striptags, join, reverse, length, sort, merge ● Chaining von Filtern {{ twig.filters }}
  • 18. <h1>Fragen</h1> <ul> {% for question in audience.questions %} <li>{{ question|e }}</li> {% endfor %} </ul> {{ twig.questions }}
  • 19. ● 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 {{ twig.links }}
  • 20. {{ thx|default("Danke für die Aufmerksamkeit") }} {{ speaker.name|default("Steffen Rühlmann") }} {{ speaker.web|default("www.undpaul.de") }} {{ speaker.twitter|default("_steffenr") }} {{ speaker.email|default("steffen@undpaul.de") }} {{ twig.end }}