Twig et drupal 8

Twig, intégré au core de drupal 8 remplace PHPtemplate (qui donne trop de "pouvoir" PHP au thémeur).
PHP 5.2.4 min est requis pour Twig. Il existe plusieurs facon de l'installer, la meilleure est via Composer.

Voir aussi mes notes sur le drupalcamp de Floride 2017, et tout ce qui est tagué twig.

Principe de séparation: Les templates twig constuisent les balises, font quelques modifs basiques mais le gros des modifs (qui peuvent etre sales voire dangereuses) seront faites ailleurs.
On pourra toujours utiliser (pour des modifs lourdes ou dangereuses) theme_preprocess_foo() et theme_preprocess_bar()

Un exemple simple pour comprendre

Prenons par ex un template de menu de navigation:

<nav>
  <h1>Main navigation</h1>
    <ul>
      {% for item in menu %}
        <li><a href="{{ item.href }}">{{ item.name }}</a></li>
      {% endfor %}
    </ul>
</nav>

{% foo %} est pour les expressions (for...), et {{ bar }} affiche la valeur de la variable "bar" dans le template.

Modifier des variables

Twig propose quelques filtres pour modifier les variables, qui sont ajoutés après la var séparé par un pipe. On peux les chainer et ils peuvent prendre des arguments. Ex:

  • {{ label|upper }}  le filtre "majuscule" est appliqué à la variable "label".
  • {{ dump() }}      imprime toutes les variables disponibles (twig).

Arbo et fichiers

 Seul montheme.info.yml est obligatoire (meta data, libraries, et régions des blocs).

Ranger les themes (ex zen) dans contrib et mettre les siens dans un dossier nommé custom - les thèmes du core sont dans core/themes.

 

 

Sur le web

En anglais: