Soumettre la recherche
Mettre en ligne
WordPress-Templates mit Twig erstellen - PHPUGFFM
•
2 j'aime
•
2,050 vues
Walter Ebert
Suivre
Vortrag bei der PHP Usergroup Frankfurt am 21. Januar 2016
Lire moins
Lire la suite
Internet
Signaler
Partager
Signaler
Partager
1 sur 43
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Bilder einbinden ist kein Thema, oder?
Bilder einbinden ist kein Thema, oder?
Walter Ebert
Bilder usw...
Bilder usw...
Walter Ebert
Mehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp Köln
Walter Ebert
HTML 5 - Overview
HTML 5 - Overview
Marcelio Leal
WordPress mit Composer und Git verwalten
WordPress mit Composer und Git verwalten
Walter Ebert
High Performance Images
High Performance Images
Walter Ebert
Enjoy the vue.js
Enjoy the vue.js
TechExeter
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009
Ralph Whitbeck
Recommandé
Bilder einbinden ist kein Thema, oder?
Bilder einbinden ist kein Thema, oder?
Walter Ebert
Bilder usw...
Bilder usw...
Walter Ebert
Mehr Performance für WordPress - WordCamp Köln
Mehr Performance für WordPress - WordCamp Köln
Walter Ebert
HTML 5 - Overview
HTML 5 - Overview
Marcelio Leal
WordPress mit Composer und Git verwalten
WordPress mit Composer und Git verwalten
Walter Ebert
High Performance Images
High Performance Images
Walter Ebert
Enjoy the vue.js
Enjoy the vue.js
TechExeter
jQuery For Beginners - jQuery Conference 2009
jQuery For Beginners - jQuery Conference 2009
Ralph Whitbeck
An introduction to Vue.js
An introduction to Vue.js
Javier Lafora Rey
HTML5: Markup Evolved
HTML5: Markup Evolved
Billy Hylton
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
Holly Schinsky
jQuery UI and Plugins
jQuery UI and Plugins
Marc Grabanski
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
Pablo Godel
WordCamp Praga 2015
WordCamp Praga 2015
Tomasz Dziuda
Responsive Videos, mehr oder weniger
Responsive Videos, mehr oder weniger
Walter Ebert
What you need to know bout html5
What you need to know bout html5
Kevin DeRudder
Css3
Css3
Bronson Quick
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Robert Nyman
Scalable Front-end Development with Vue.JS
Scalable Front-end Development with Vue.JS
Galih Pratama
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Leonardo Balter
An Introduction to Vuejs
An Introduction to Vuejs
Paddy Lock
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
Sho Ito
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao Paulo
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao Paulo
Robert Nyman
Contributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter Wilson
WordCamp Sydney
jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)
jeresig
High-Quality JavaScript
High-Quality JavaScript
Marc Bächinger
An introduction to Vue.js
An introduction to Vue.js
Pagepro
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
Robert Nyman
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
Fabien Potencier
Die Zeit der Passwörter ist abgelaufen
Die Zeit der Passwörter ist abgelaufen
Joachim Hummel
Contenu connexe
Tendances
An introduction to Vue.js
An introduction to Vue.js
Javier Lafora Rey
HTML5: Markup Evolved
HTML5: Markup Evolved
Billy Hylton
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
Holly Schinsky
jQuery UI and Plugins
jQuery UI and Plugins
Marc Grabanski
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
Pablo Godel
WordCamp Praga 2015
WordCamp Praga 2015
Tomasz Dziuda
Responsive Videos, mehr oder weniger
Responsive Videos, mehr oder weniger
Walter Ebert
What you need to know bout html5
What you need to know bout html5
Kevin DeRudder
Css3
Css3
Bronson Quick
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Robert Nyman
Scalable Front-end Development with Vue.JS
Scalable Front-end Development with Vue.JS
Galih Pratama
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Leonardo Balter
An Introduction to Vuejs
An Introduction to Vuejs
Paddy Lock
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
Sho Ito
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao Paulo
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao Paulo
Robert Nyman
Contributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter Wilson
WordCamp Sydney
jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)
jeresig
High-Quality JavaScript
High-Quality JavaScript
Marc Bächinger
An introduction to Vue.js
An introduction to Vue.js
Pagepro
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
Robert Nyman
Tendances
(20)
An introduction to Vue.js
An introduction to Vue.js
HTML5: Markup Evolved
HTML5: Markup Evolved
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
jQuery UI and Plugins
jQuery UI and Plugins
Lone StarPHP 2013 - Building Web Apps from a New Angle
Lone StarPHP 2013 - Building Web Apps from a New Angle
WordCamp Praga 2015
WordCamp Praga 2015
Responsive Videos, mehr oder weniger
Responsive Videos, mehr oder weniger
What you need to know bout html5
What you need to know bout html5
Css3
Css3
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Leave No One Behind with HTML5 - FFWD.PRO, Croatia
Scalable Front-end Development with Vue.JS
Scalable Front-end Development with Vue.JS
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
An Introduction to Vuejs
An Introduction to Vuejs
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao Paulo
JavaScript APIs - The Web is the Platform - MDN Hack Day, Sao Paulo
Contributing to WordPress Core - Peter Wilson
Contributing to WordPress Core - Peter Wilson
jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)
High-Quality JavaScript
High-Quality JavaScript
An introduction to Vue.js
An introduction to Vue.js
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
HTML5, The Open Web, and what it means for you - MDN Hack Day, Sao Paulo
En vedette
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
Fabien Potencier
Die Zeit der Passwörter ist abgelaufen
Die Zeit der Passwörter ist abgelaufen
Joachim Hummel
Mythen der WordPress-Sicherheit (Barcamp Koblenz 2015)
Mythen der WordPress-Sicherheit (Barcamp Koblenz 2015)
libertello GmbH
Das Child-Theme-Dilemma
Das Child-Theme-Dilemma
Torsten Landsiedel
Wordpress Security
Wordpress Security
Daniel Potthast
Sicher bloggen mit WordPresse - CMS absichern
Sicher bloggen mit WordPresse - CMS absichern
Sven Trautwein
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
Felix Beilharz ✓
Writing Headlines infographic
Writing Headlines infographic
Barry Feldman
TWIG: the flexible, fast and secure template language for PHP
TWIG: the flexible, fast and secure template language for PHP
Cesare D'Amico
Kevin Indig - SEO and Growth Hacking
Kevin Indig - SEO and Growth Hacking
Kevin Indig
WordPress Security - WP Meetup München 24.9.2015
WordPress Security - WP Meetup München 24.9.2015
stk_jj
We are WP, we are legion - WP Camp 2013 Berlin
We are WP, we are legion - WP Camp 2013 Berlin
stk_jj
WordPress Grundlagen Kurs
WordPress Grundlagen Kurs
Benjamin Hartwich
Wordpress für Profis
Wordpress für Profis
Anika Erdmann
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEARCH ONE
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
Leslie Samuel
En vedette
(16)
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
Die Zeit der Passwörter ist abgelaufen
Die Zeit der Passwörter ist abgelaufen
Mythen der WordPress-Sicherheit (Barcamp Koblenz 2015)
Mythen der WordPress-Sicherheit (Barcamp Koblenz 2015)
Das Child-Theme-Dilemma
Das Child-Theme-Dilemma
Wordpress Security
Wordpress Security
Sicher bloggen mit WordPresse - CMS absichern
Sicher bloggen mit WordPresse - CMS absichern
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
Writing Headlines infographic
Writing Headlines infographic
TWIG: the flexible, fast and secure template language for PHP
TWIG: the flexible, fast and secure template language for PHP
Kevin Indig - SEO and Growth Hacking
Kevin Indig - SEO and Growth Hacking
WordPress Security - WP Meetup München 24.9.2015
WordPress Security - WP Meetup München 24.9.2015
We are WP, we are legion - WP Camp 2013 Berlin
We are WP, we are legion - WP Camp 2013 Berlin
WordPress Grundlagen Kurs
WordPress Grundlagen Kurs
Wordpress für Profis
Wordpress für Profis
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
Similaire à WordPress-Templates mit Twig erstellen - PHPUGFFM
PHPConf-TW 2012 # Twig
PHPConf-TW 2012 # Twig
Wake Liu
Front end ++: seo e flexbox
Front end ++: seo e flexbox
Fernanda Bernardo
Use Symfony2 components inside WordPress
Use Symfony2 components inside WordPress
Maurizio Pelizzone
Twig
Twig
Sir-Arturio
Extending Twig
Extending Twig
Gerry Vandermaesen
2022 HTML5: The future is now
2022 HTML5: The future is now
Gonzalo Cordero
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
Shumpei Shiraishi
Mobile themes, QR codes, and shortURLs
Mobile themes, QR codes, and shortURLs
Harvard Web Working Group
Html5 & CSS overview
Html5 & CSS overview
Ivan Frantar
Presentation html5 css3 by thibaut
Presentation html5 css3 by thibaut
Thibaut Baillet
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
Aaron Gustafson
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
Rob Bontekoe
PSD to WordPress
PSD to WordPress
Nile Flores
Html5
Html5
Satoshi Kikuchi
Templates81 special document
Templates81 special document
Lan Nguyen
Templates81 special document
Templates81 special document
Lan Nguyen
An Introduction To HTML5
An Introduction To HTML5
Robert Nyman
HTML5 workshop, part 1
HTML5 workshop, part 1
Robert Nyman
CSS3 Takes on the World
CSS3 Takes on the World
Jonathan Snook
Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101
Ted Kulp
Similaire à WordPress-Templates mit Twig erstellen - PHPUGFFM
(20)
PHPConf-TW 2012 # Twig
PHPConf-TW 2012 # Twig
Front end ++: seo e flexbox
Front end ++: seo e flexbox
Use Symfony2 components inside WordPress
Use Symfony2 components inside WordPress
Twig
Twig
Extending Twig
Extending Twig
2022 HTML5: The future is now
2022 HTML5: The future is now
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
Mobile themes, QR codes, and shortURLs
Mobile themes, QR codes, and shortURLs
Html5 & CSS overview
Html5 & CSS overview
Presentation html5 css3 by thibaut
Presentation html5 css3 by thibaut
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
PSD to WordPress
PSD to WordPress
Html5
Html5
Templates81 special document
Templates81 special document
Templates81 special document
Templates81 special document
An Introduction To HTML5
An Introduction To HTML5
HTML5 workshop, part 1
HTML5 workshop, part 1
CSS3 Takes on the World
CSS3 Takes on the World
Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101
Plus de Walter Ebert
FrOSCon 2023: WordPress als ActivityPub-Instanz
FrOSCon 2023: WordPress als ActivityPub-Instanz
Walter Ebert
Hero Video Performance - DrupalCamp Ruhr
Hero Video Performance - DrupalCamp Ruhr
Walter Ebert
Sicherheit für WordPress
Sicherheit für WordPress
Walter Ebert
WordPress aufräumen - WordCamp Stuttgart
WordPress aufräumen - WordCamp Stuttgart
Walter Ebert
WordPress aufräumen
WordPress aufräumen
Walter Ebert
Hero Video Performance
Hero Video Performance
Walter Ebert
WordPress-Webseiten umziehen / online stellen
WordPress-Webseiten umziehen / online stellen
Walter Ebert
Using browser settings for performance
Using browser settings for performance
Walter Ebert
Das richtige WordPress-Theme finden
Das richtige WordPress-Theme finden
Walter Ebert
WordPress Health Check - WordCamp Würzburg
WordPress Health Check - WordCamp Würzburg
Walter Ebert
WordPress Health Check
WordPress Health Check
Walter Ebert
Making WordPress fast(er)
Making WordPress fast(er)
Walter Ebert
Testumgebungen für WordPress
Testumgebungen für WordPress
Walter Ebert
Modernism in Web Design
Modernism in Web Design
Walter Ebert
WordPress Multisite
WordPress Multisite
Walter Ebert
Weniger aus Bilder holen
Weniger aus Bilder holen
Walter Ebert
HTTPS + Let's Encrypt
HTTPS + Let's Encrypt
Walter Ebert
WordPress-Themes mit Twig entwickeln
WordPress-Themes mit Twig entwickeln
Walter Ebert
Mehr Performance für WordPress - WPFra
Mehr Performance für WordPress - WPFra
Walter Ebert
Sinn und Unsinn von SSL
Sinn und Unsinn von SSL
Walter Ebert
Plus de Walter Ebert
(20)
FrOSCon 2023: WordPress als ActivityPub-Instanz
FrOSCon 2023: WordPress als ActivityPub-Instanz
Hero Video Performance - DrupalCamp Ruhr
Hero Video Performance - DrupalCamp Ruhr
Sicherheit für WordPress
Sicherheit für WordPress
WordPress aufräumen - WordCamp Stuttgart
WordPress aufräumen - WordCamp Stuttgart
WordPress aufräumen
WordPress aufräumen
Hero Video Performance
Hero Video Performance
WordPress-Webseiten umziehen / online stellen
WordPress-Webseiten umziehen / online stellen
Using browser settings for performance
Using browser settings for performance
Das richtige WordPress-Theme finden
Das richtige WordPress-Theme finden
WordPress Health Check - WordCamp Würzburg
WordPress Health Check - WordCamp Würzburg
WordPress Health Check
WordPress Health Check
Making WordPress fast(er)
Making WordPress fast(er)
Testumgebungen für WordPress
Testumgebungen für WordPress
Modernism in Web Design
Modernism in Web Design
WordPress Multisite
WordPress Multisite
Weniger aus Bilder holen
Weniger aus Bilder holen
HTTPS + Let's Encrypt
HTTPS + Let's Encrypt
WordPress-Themes mit Twig entwickeln
WordPress-Themes mit Twig entwickeln
Mehr Performance für WordPress - WPFra
Mehr Performance für WordPress - WPFra
Sinn und Unsinn von SSL
Sinn und Unsinn von SSL
Dernier
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
editsforyah
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
MartaLoveguard
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
494f574xmv
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptx
Bipin Adhikari
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
zdzoqco
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
LinaWolf1
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
rehmti665
Git and Github workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
gdsc13
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
Fs
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Dana Luther
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
Fs
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
Dyna Gilbert
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
z xss
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
rnrncn29
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
Paul Calvano
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
corenetworkseo
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Excelmac1
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Sonam Pathan
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
Christopher H Felton
Dernier
(20)
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
Intellectual property rightsand its types.pptx
Intellectual property rightsand its types.pptx
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Git and Github workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
定制(UAL学位证)英国伦敦艺术大学毕业证成绩单原版一比一
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
Elevate Your Business with Our IT Expertise in New Orleans
Elevate Your Business with Our IT Expertise in New Orleans
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
WordPress-Templates mit Twig erstellen - PHPUGFFM
1.
2.
3.
4.
The Loop <?php get_header();
?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><a href="<?php the_permalink(); ?>"> <?php echo strtoupper( get_the_title() ); ?> </a></h2> <?php if ( has_post_thumbnail() ) the_post_thumbnail(); ?> <div class="content"><?php the_content(); ?></div> <?php comments_template(); ?> <?php endif; ?> <?php get_footer(); ?> https://codex.wordpress.org/The_Loop
5.
6.
Vorteile von Twig •
Trennung von HTML und PHP • Einfacher für Anfänger • Mehr Sicherheit • Vererbung von Templates • Erfahrung aus andere PHP-Projekte nutzen
7.
Projekte die Twig
nutzen • Symfony • Drupal 8 • EZ Publish • Bolt • Grav • Craft • Slim • Sculpin • Satis • Wallabag • (Laravel) • ...
8.
Nachteile von Twig •
Extra Template-Sprache • Code ist (etwas) langsamer
9.
Twig PHP-Erweiterung git clone
https://github.com/twigphp/Twig.git cd Twig/ext/twig phpize ./configure make sudo make install php.ini [twig] extension=twig.so
10.
composer.json { "require": { "php": "^5.3.2
|| ^7.0", "twig/twig": "^1.23" } } https://getcomposer.org/
11.
composer.json { "require": { "php": "^5.3.2
|| ^7.0", "twig/twig": "^1.23", "johnpbloch/wordpress": "*" }, "extra": { "wordpress-install-dir": "web" } } http://composer.rarst.net/
12.
Twig laden require_once '/path/to/vendor/autoload.php'; $loader
= new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader); // WordPress Voodoo $data→ echo $twig->render('index.twig', $data);
13.
14.
15.
WordPress Packagist { "repositories" :
[ {"type": "composer", "url": "http://wpackagist.org"} ], "require": { "php": "^5.3.2 || ^7.0", "composer/installers": "~1.0", "johnpbloch/wordpress": "*", "twig/twig": "^1.23", "wpackagist-plugin/timber-library": "*", "wpackagist-theme/twentyfifteen": "*" } "extra": { "wordpress-install-dir": "web/wp", "installer-paths": { "web/wp-content/mu-plugins/{$name}" : ["type:wordpress-muplugin"], "web/wp-content/plugins/{$name}": ["type:wordpress-plugin"], "web/wp-content/themes/{$name}": ["type:wordpress-theme"] } } } http://wpackagist.org/
16.
web/wp-config.php require __DIR__ .
'/../vendor/autoload.php'; ... define( 'WP_HOME', 'http://example.com' ); define( 'WP_SITEURL', 'http://example.com/wp' ); define( 'WP_CONTENT_URL', 'http://example.com/wp-content' ); define( 'WP_CONTENT_DIR', __DIR__ . '/wp-content/' ); https://codex.wordpress.org/Editing_wp-config.php
17.
web/index.php <?php define( 'WP_USE_THEMES', true
); require __DIR__ . '/wp/wp-blog-header.php';
18.
…/theme/single.php <?php $context = Timber::get_context(); $context['post']
= new TimberPost(); Timber::render( 'single.twig', $context );
19.
20.
…/theme/functions.php function my_context( $data
) { $data['foo'] = 'bar'; $data['menu'] = new TimberMenu(); return $data; } add_filter( 'timber_context', 'my_context' );
21.
…/theme/page.php <?php $context = Timber::get_context(); $context['foo']
= 'bar'; $context['menu'] = new TimberMenu(); $context['post'] = new TimberPost(); Timber::render( 'page.twig', $context );
22.
Twig-Syntax {{ }} //
Ausgabe {% %} // Logik {# #} // Kommentar
23.
…/theme/views/single.twig {# Dies ist
ein Beitrag #} {% extends "base.twig" %} {% block content %} <h2>{{ post.title|upper }}</h2> {% if post.thumbnail %} <img src="{{ post.thumbnail.src }}"> {% endif %} <div class="content">{{ post.content }}</div> {% include 'comments.twig' %} {% endblock %}
24.
…/theme/views/single.twig {# Dies ist
ein Beitrag #} {% extends "base.twig" %} {% block content %} <h2>{{ post.title|upper }}</h2> {% if post.thumbnail %} <img src="{{ post.thumbnail.src }}"> {% endif %} <div class="content">{{ post.content }}</div> {% include 'comments.twig' %} {% endblock %}
25.
…/theme/views/single.twig {# Dies ist
ein Beitrag #} {% extends "base.twig" %} {% block content %} <h2>{{ post.title|upper }}</h2> {% if post.thumbnail %} <img src="{{ post.thumbnail.src }}"> {% endif %} <div class="content">{{ post.content }}</div> {% include 'comments.twig' %} {% endblock %}
26.
…/theme/views/single.twig {# Dies ist
ein Beitrag #} {% extends "base.twig" %} {% block content %} <h2>{{ post.title|upper }}</h2> {% if post.thumbnail %} <img src="{{ post.thumbnail.src }}"> {% endif %} <div class="content">{{ post.content }}</div> {% include 'comments.twig' %} {% endblock %}
27.
…/theme/views/single.twig {# Dies ist
ein Beitrag #} {% extends "base.twig" %} {% block content %} <h2>{{ post.title|upper }}</h2> {% if post.thumbnail %} <img src="{{ post.thumbnail.src }}"> {% endif %} <div class="content">{{ post.content }}</div> {% include 'comments.twig' %} {% endblock %}
28.
Posts // Posts $context['posts'] =
Timber::get_posts(); // WP_Query $args = [ 'post_type' => 'custom_post_type', 'post_status' => 'publish', 'posts_per_page' => 5, ]; $context['posts'] = Timber::get_posts( $args ); https://codex.wordpress.org/Class_Reference/WP_Query
29.
Posts {% for post
in posts %} <article id="post-{{ post.ID }}"> <h1> <a href="{{ post.link }}">{{ post.title }}</a> </h1> <div class="date"> {{ post.date }} </div> <div class="excerpt"> {{ post.content|excerpt(55) }} </div> </article> {% endfor %}
30.
Übersetzungen <?php echo __(
'Sorry, no posts.', 'textdomain' ) ); ?> <?php _e( 'Sorry, no posts.', 'textdomain' ); ?> -> {{ __('Sorry, no posts.', 'textdomain') }}
31.
WordPress-Funktionen <?php get_search_form(); ?> -> {{
fn('get_search_form') }}
32.
Benutzerdefinierte Felder <h3>{{ post.title
}}</h3> <div class="intro-text"> {{ post.custom_field }} </div> https://codex.wordpress.org/Custom_Fields
33.
Advanced Custom Fields <h3>{{
post.title }}</h3> <div class="intro-text"> {{ post.get_field('meins_intro_text') }} </div> https://wordpress.org/plugins/advanced-custom-fields/
34.
Timber-Klassen erweitern class MySitePost
extends TimberPost { var $_issue; public function issue() { if (!$this->_issue) { $issues = $this->get_terms('issues'); if (is_array($issues) && count($issues)) { $this->_issue = $issues[0]; } } return $this->_issue; } } https://github.com/jarednova/timber/wiki/Extending-Timber
35.
Eigene Twig-Filter erstellen add_filter(
'get_twig', function( $twig ) { $twig->addFilter( new Twig_SimpleFilter( 'comment_text', function( $text ) { return apply_filters( 'comment_text', $text ); } ) ); return $twig; } ); https://github.com/jarednova/timber/wiki/Extending-Timber
36.
Twig-Extensions nutzen add_filter( 'get_twig',
function( $twig ) { $twig->addExtension( new Twig_Extensions_Extension_Text() ); return $twig; } ); https://packagist.org/packages/twig/extensions
37.
38.
39.
40.
Praxisbeispiele https://github.com/jarednova/timber/wiki/Showcase https://github.com/laras126/karenmcgrane https://github.com/laras126/mtnmeister-theme https://github.com/laras126/dijifi-theme http://responsivewebdesign.com/toast/backend/
41.
WordPress-Projekte starten composer create-project
roots/bedrock composer create-project org_heigl/wordpress_bootstrap composer create-project wee/wordpress-project
42.
WordPress-Termine Jeden 2. Dienstag
des Monats, WP-Meetup Frankfurt https://wpmeetup-frankfurt.de/ 16.-17. April 2016, WordCamp Nürnberg https://nuremberg.wordcamp.org/2016/ 24.-26. Juni 2016, WordCamp Europe, Wien https://2016.europe.wordcamp.org/ September/Oktober 2016, WordCamp Frankfurt https://frankfurt.wordcamp.org/
43.
walter.ebert.engineering @wltrd walterebert.de slideshare.net/walterebert
Télécharger maintenant