WordCamp Bratislava 2020 - Použití šablonovacího systému Twig ve WordPressu za pomoci pluginu Timber.
https://wordpress.tv/2019/12/27/karolina-vyskocilova-html-pexeso-s-twigem-a-timberem/
HTML PEXESOHTML PEXESO
STWIGEM A TIMBEREMS TWIGEM A TIMBEREM
Karolína Vyskočilová < >
WordCamp Bratislava 2019, 12. října 2019
karolina@kybernaut.cz
2.
ŠABLONOVACÍ SYSTÉMYŠABLONOVACÍ SYSTÉMY
odděleníaplikační vrstvy od prezenční (PHP vs HTML kód)
do šablony se posílají již zpracovaná data = šablona řeší
pouze správné zobrazení
lepší čitelnost a přehlednost kódu
zjednodušení práce mezi kodérem & programátorem
MVC přístup
nejznámější šablonovací systémy: (Nette),
(Laravel) a (Symfony)
Latte Blade
Twig
ZÁKLADNÍ SYNTAXE TWIGUZÁKLADNÍSYNTAXE TWIGU
tisk proměnné nebo výrazu {{ ... }}
vyhodnocení podmínky nebo cyklu (if, for, while) {% ... %}
komentáře {# ... #}
5.
PŘÍKLADPŘÍKLAD
PHP
Twig
<!-- todo list--->
<?php foreach ( $items as $item ) : ?>
<ul class="items">
<li><?php echo $item; ?></li>
</ul>
<?php endforeach; ?>
{# todo list #}
{% for item in items %}
<ul class="item">
<li>{{ item }}</li>
</ul>
{% endfor %}
6.
plugin pro integraciTwigu do WordPressu
2013 Jared Novack, Lukas Gächter, Pascal Knecht, Maciej
Palmowski, Coby Tamayo, Upstatement a další na GitHubu
přidává základní data - třídy Post, Menu, User, Widget apod.
Because WordPress is awesome, but the loop isn’t.
TIMBERTIMBER
PŘIPRAVENÍ DATPŘIPRAVENÍ DAT
běžnéWP soubory/šablony, ve kterých se zavolá Twig
načtení globálního kontextu
obsah aktuální stránky/příspěvku přidaný do kontextu
render šablony
$context = Timber::get_context();
$context['foo'] = 'bar';
$context['post'] = new TimberPost();
Timber::render('single.twig', $context);
14.
TWIG ŠABLONYTWIG ŠABLONY
prozobrazování dat v rámci celé stránky anebo jednotlivých
komponent
HTML layout, který je naplněn daty
přístup ke kontextu => {{ post.title }} zobrazí nadpis
etc.
není možné volat PHP
CELKOVÉ ROZVRŽENÍ (LAYOUT)CELKOVÉROZVRŽENÍ (LAYOUT)
připravení bloků, které budou naplněny jednotlivými
šablonami
předejte se duplicitnímu obsahu
zlepší se konzistence v projektu
použití v rámci layoutu stránky anebo podobných
komponent
header.twig
footer.twig
<header class="header">
<a href="{{site.url}}"rel="home" class="nav-logo">
<img src="{{ site.theme.link }}/images/logo.svg"
alt="logo">
{% include "menu.twig" with {menu: main_menu.get_items} %}
</a>
</header>
<footer class="footer">
{% include "menu.twig" with {menu: footer_menu.get_items,
custom_class: 'nav--footer'} %}
</footer>
19.
GLOBÁLNÍ DATA ANAPOJENÍ NAGLOBÁLNÍ DATA A NAPOJENÍ NA
ŠABLONUŠABLONU
pomocí třídy Timber
ve starter theme functions.php
/**
* Sets the directories (inside your theme) to find .twig files
*/
Timber::$dirname = array( 'templates', 'views' );
/**
* By default, Timber does NOT autoescape values.
*/
Timber::$autoescape = html;
20.
class StarterSite extendsTimberSite {
/** Add timber support. */
public function __construct() {
add_filter( 'timber/context', array( $this,
'add_to_context' ) );
parent::__construct();
}
/** This is where you add some context
*/
public function add_to_context( $context ) {
$context['foo'] = 'bar';
$context['menu'] = new TimberMenu( 'main_menu', array(
'depth' => 2 ) );
return $context;
}
}
new StarterSite();
CO SE BUDEDO ZAČÁTKU HODIT ZNÁTCO SE BUDE DO ZAČÁTKU HODIT ZNÁT
Z TWIGUZ TWIGU
pro for cyklus (první, poslední etc.)
funkce pro práci s hodnotami (délka, malá písmena)
keep it DRY a
proměnné
proměnné
filtry
makra includes
cheatsheet
30.
KDE ZAČÍT?KDE ZAČÍT?
-Jared Novack
- Ahmad Awais
- CSS
Tricks
Dokumentace - Timber
Dokumentace - Twig
Video tutoriály
Tutoriály
Timber and Twig Reignited My Love for WordPress
You can downloadthe
documentation for
offline reading:
You are reading the documentation for Twig 2.x. Switch to the documentation for Twig 1.x.
Twig Documentation
Read the online documentation to learn more about Twig.
Introduction
Installation
Twig for Template Designers
Twig for Developers
Extending Twig
Twig Internals
Deprecated Features
Twig Recipes
Coding Standards
License
Twig The flexible, fast, and secure
template engine for PHP
ABOUT DOCS DEV
SymfonyWorld SymfonyCloud: The best way to host your Symfony project
34.
SOUVISEJÍCÍ PROJEKTYSOUVISEJÍCÍ PROJEKTY
-namespaces pro Twig (OnTheGoSystems)
- podpora pro __() (OnTheGoSystems)
- Bare bones Twig templating support for WordPress by
Twig Scoper
Twig to WPML
Sprig
Russell Heimlich
35.
DÍKY ZA POZORNOST!DÍKYZA POZORNOST!
Pokud máte nějaké otázky, tak sem s nimi!
P.S. Rádi vás uvidíme na .WordCamp Praha 2020