Blog

Theming : les changements avec Drupal 8

02.01.2014
twig-and-drupal

Sommaire

En bref
  • Drupal 8 remplace le moteur de templates PHP par Twig, ce qui améliore la sécurité, la clarté du code, et sépare nettement HTML et logique.
  • Les fichiers de thème passent des extensions .tpl.php aux .html.twig, avec une arborescence similaire à celle de Drupal 7, mais une syntaxe plus propre pour l’accès aux variables et la structure de rendu.
  • Twig simplifie les conditions, les inclusions (includes), la traduction, tout en réduisant le mélange de PHP dans les templates ; il y a un léger coût en mémoire/performance mais des gains de maintenabilité.

Outre l'utilisation de symfony 2, Drupal 8 débarque avec un nouveau moteur de template : Twig.

Depuis sa création Twig a confirmé être un moteur de template fiable et rapide en faisant partie intégrante de Symfony depuis 2009.

Les avantages de twig : 

  • Plus sécurisé grâce au possibilité limité de sa syntaxe (notamment l'absence de PHP)
  • Plus de PHP et de HTML dans le même fichier
  • Réutilisabilité des templates grâce aux includes
  • Bonne documentation
  • Syntaxe facile à apprendre

Les inconvénients de twig :

  • Nouvelle syntaxe à apprendre
  • Quelques problèmes de mémoire et de performance à cause du moteur supplémentaire

Arborescence d'un thème :

Voici comment se présente les différentes templates dans le thème de base de Drupal 8 :


On voit donc que l'arborescence des fichiers d'un thème reste plus ou moins semblable à Drupal 7, la grosse différence vient des différentes extensions des fichiers (.html.twig au lieu de .tpl.php)

Exemple de code avec Twig :

Voici un exemple d'un template sur Twig (ici une partie de node.html.twig) :

<div class="meta submitted">
	{{ user_picture }}
	{{ submitted }}
</div>

On constate donc la disparition totale du language php, plus besoin de printer les variables, on utilise la syntaxe {{ }} avec le nom de la variable.

On constate aussi la facilité de descendre dans l'arborescence d'une variable, plus besoin de savoir s'il s'agit d'un array ou bien d'un objet, Twig simplifie cet aspect :

{{ content.links }}

Dans cet exemple on accède au champ links de notre node très simplement au lieu d'utiliser la syntaxe de Drupal 7 : 

print $content['links']

Pour mieux se rendre compte de l'impact de Twig voici une petite comparaison entre un template de Drupal 7 et de Drupal 8 :

PHP template :

<div id="taxonomy-term-<?php print $term->tid; ?>">
	<?php if (!$page): ?>
	<h2><?php print $term_name; ?></h2>
	<?php endif; ?>
	<div class="content">
	<?php print render($content); ?>
	</div>
</div>

Twig :

<div id="taxonomy-term-{{ term.tid }}"{{ attributes }}]]>
	{% if not page %}
	<h2>{{ term_name }}</h2>
	{% endif %}
	<div class="content"]]>
	{{ content }}
	</div>
</div>

On peut donc voir que le code de Twig est beaucoup plus lisible, plus besoin de balises php qui alourdisse le code et le rende peu lisible, les print(render($content)) deviennent {{ content }} et les conditions sont beaucoup plus faciles à lire …

Suite à la disparition des balises PHP, on peut se demander comment Twig gère la balise t utilisée pour les traductions. Voici la différence :

Avec Twig : 

{{ 'Home' | t }}

Avec PHPTemplate :

<?php print t('Home'); ?> 

En conclusion, Twig apporte une plus grande facilité dans le maniement des variables ainsi qu'une meilleure lisibilité du code. Cependant, une phase d'apprentissage est bien sur nécessaire pour maitriser la syntaxe.

drupal 10

Un projet ? Parlons-en

En tant qu'agence web experte Drupal, nous sommes à votre écoute pour étudier vos besoins
et vous proposer les meilleures solutions.

Autres articles

En 2025, Debian reste un choix de prédilection pour les administrateurs système et les DevOps du monde entier. Sa réputation de stabilité, de sécurité et sa communauté active ne sont plus à prouver. Cependant, le paysage de l'hébergement web évolue à une vitesse fulgurante. De nouvelles menaces émergent constamment, les robots d'IA scannent le web avec une agressivité inédite et les exigences de performance sont de plus en plus élevées. Il est donc crucial de mettre à jour ses pratiques de configuration.

L'accessibilité est une préoccupation croissante car il est important que tous les utilisateurs, y compris ceux qui ont des besoins particuliers, puissent accéder facilement et efficacement à votre site. Drupal offre plusieurs moyens d'améliorer l'accessibilité de votre site Web

L'intégration de frameworks frontaux comme Angular avec des systèmes de gestion de contenu (CMS) est devenue une pratique courante dans le développement web. Ce guide vise à accompagner les développeurs dans le processus d'intégration d'Angular avec Drupal, en exploitant les avantages de ces deux technologies.