logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Comparaison des paradigmes PHPTemplate et Twig

05/07/2025, by Ivan

Menu

À propos de Twig

Twig est un langage de templates compilé basé sur PHP. Lorsque votre page web est affichée, le moteur Twig prend le template et le transforme en un template PHP « compilé » qui est stocké dans un répertoire protégé à l'adresse sites/default/files/php/twig. La compilation est effectuée une seule fois, les fichiers templates sont mis en cache pour une réutilisation et recompilés lors du vidage du cache Twig.

L’initiative Drupal Twig a la même motivation que celle de Symfony : introduire un moteur moderne, puissant, orienté objet, qui permettra aux développeurs de se concentrer correctement sur Drupal.

1. Docblock

PHPTemplate :

<?php 
/** 
 * @file
 * Description du fichier
 */
?>

Twig :

{# 
/** 
 * @file
 * Description du fichier
 */
#}

2. Noms des fichiers et fonctions

Fichier PHPTemplate : node--article.tpl.php
Fichier Twig : node--article.html.twig

Fonction PHPTemplate : THEME_node_links()
Fichier Twig : node-links.html.twig

3. Variables

Afficher une variable :

PHPTemplate : <div class="content"><?php print $content; ?></div>
Twig : <div class="content">{{ content }}</div>

Afficher un élément de clé de hachage [1]

PHPTemplate : <?php print $item['#item']['alt']; ?>
Twig : {{ item['#item'].alt }} 

Définition d'une variable :

PHPTemplate : <?php $custom_var = $content->comments; ?>
Twig : {% set custom_var = content.comments %}

Définition d'un tableau :

PHPTemplate : <?php $args = array('@author' => $author, '@date' => $created); ?>
Twig : {% set args = {'@author': author, '@date': created} %}

4. Conditions

PHPTemplate : <?php if ($content->comments): endif; ?>
Twig : {% if content.comments %} {% endif %}

PHPTemplate : <?php if (!empty($content->comments)): endif; ?>
Twig : {% if content.comments is not empty %} {% endif %}

PHPTemplate : <?php if (isset($content->comments)): endif; ?>
Twig : {% if content.comments is defined %} {% endif %}

PHPTemplate : <?php if ($count > 0): endif; ?>
Twig : {% if count > 0 %} {% endif %}

5. Structures de contrôle

PHPTemplate : <?php foreach ($users as $user) {} ?>
Twig : {% for user in users %} {% endfor %}

6. Filtres

Caractères spéciaux HTML échappés :

PHPTemplate : <?php print check_plain($title); ?>
Twig[2] : {{ title }}

Valeurs non traitées :

PHPTemplate : <?php print $title; ?>
Twig : {{ title|raw }}

Traduire :

PHPTemplate : <? Php print t ('Accueil'); ?>
Twig : {{ 'Accueil' | t }}

Traduire avec substitutions :

PHPTemplate : <?php print t('Bienvenue, @username', array('@username' => $user->name)); ?>
Twig : {{ 'Bienvenue, @username'|t({ '@username': user.name }) }}

Drupal 8 Twig (avec l’extension trans tag) :

{% set username = user.name %}
{% trans %}
  Bienvenue, {{ username }}
{% endtrans %}

Concaténer une liste :

PHPTemplate : <? Php echo implode (',', $usernames); ?>
Twig : {{ usernames | join(', ') }}

Concaténer une liste avec balisage :

Twig : {{ usernames | safe_join(',') }}

L’exemple PHPTemplate nécessite que $usernames soit un tableau de chaînes. Il en est de même pour l’exemple Twig original où « usernames » est un tableau de chaînes. En revanche, l’exemple Drupal 8 Twig requiert un tableau d’objets rendus. C’est une différence fondamentale entre Drupal 8 Twig et le Twig original. Drupal 8 Twig « affiche » à la fois du texte simple et des tableaux rendus.

Un autre aspect de cet exemple est que les trois exemples devraient produire la même sortie, mais ce n’est pas le cas (par défaut). Prenez cet exemple :

  {% set numbers = [{'#markup': 'Un'}, {'#markup':'Deux'}, {'#markup':'Trois'}] %}
  {{ numbers }}

On s’attendrait à ce que les éléments soient affichés séparés par une virgule. Mais la sortie est : UnDeuxTrois

7. Gestion des espaces

Twig offre un contrôle des espaces qui permet de supprimer les espaces utilisés pour structurer le fichier template.

<div class="body">
  {{- block.content -}}
</div>

Cela équivaut à :

<div class="body">{{ block.content }}</div>

Attention

  • L’exemple d’élément de clé de hachage peut changer à l’avenir
  • Dans le second exemple, nous montrons comment Twig prend en charge le nettoyage des données. Avant, c’était la responsabilité du template ou de la fonction de prétraitement. Ce dernier changement est très important pour ceux qui espèrent créer un thème PHPTemplate pour Drupal 8 – vous devez nettoyer vos propres données. ↩︎︎

Pour plus d’informations, voir :