SlideShare ist ein Scribd-Unternehmen logo
1 von 20
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-transicionsEnric 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 frameworkElyès FEKI
 
Pendidikan sivik
Pendidikan sivikPendidikan sivik
Pendidikan sivikFa 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 generationsabillafh
 
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 2antoniapoltorres
 
Proteccion+juridica+software
Proteccion+juridica+softwareProteccion+juridica+software
Proteccion+juridica+softwareDiana Liz Flores
 
Iforme fes
Iforme fesIforme fes
Iforme fesmalditos
 
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 2012University of Messina (Italy)
 
Trabajo de la sofi
Trabajo de la sofiTrabajo de la sofi
Trabajo de la sofimalditos
 
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 privacitatSuclise
 
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 diuenttv57
 
Matrimonio zaruma celi
Matrimonio zaruma celiMatrimonio zaruma celi
Matrimonio zaruma celigaha7711
 

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 Enginedrubb
 
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 BarthNETWAYS
 
PHP Entwicklung mit VMware Images
PHP Entwicklung mit VMware ImagesPHP Entwicklung mit VMware Images
PHP Entwicklung mit VMware ImagesAlexander 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 Umsetzunginovex GmbH
 
WordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxWordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxSebastian Blum
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurtdasjo
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter 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 TYPO3marco-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 EinsatzKai Donato
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex 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 PracticesRalf Eggert
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositoriesinovex 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 rootcusy 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 }}