Inclure une partie de template
De nombreux développeurs préfèrent stocker les codes d’en-tête et de pied de page dans un fichier séparé et inclure ce fichier dans page.html.twig.
Processus
Supposons que vous avez créé le fichier suivant dans le dossier de votre thème pour l’en-tête :
THEME_NAME/templates/includes/header.html.twig
Et maintenant, vous souhaitez inclure ce fichier dans :
page.html.twig
Méthode recommandée
La bonne méthode pour les thèmes Drupal 8 consiste à utiliser les espaces de noms Twig pour déclarer le répertoire « templates » du thème courant. Voici un exemple :
{% include '@THEME_NAME/includes/header.html.twig' %}
Ci-dessous un exemple tiré d’un thème fonctionnel sur Drupal.org appelé Architect.
« @architect » fait référence au dossier /templates dans le répertoire du thème actif (architect).
{% include '@architect/includes/header.html.twig' %}
L’espace de noms Twig est créé automatiquement dans Drupal 8 lors de l’activation de votre thème et pointe vers le répertoire /templates de votre thème. En pratique, écrire « @theme_name » dans l’inclusion Twig (comme montré ci-dessus) fait référence à l’emplacement « your_site.com/themes/theme_name/templates » sur votre serveur.
Méthode non recommandée
Une méthode possible (mais non recommandée) est d’utiliser le code ci-dessous pour inclure ce fichier :
{# NON recommandé #}
{% include directory ~ '/templates/includes/header.html.twig' %}
Cette méthode peut fonctionner, mais elle provoquera une erreur serveur lorsqu’elle est utilisée avec un sous-thème.
Extension de la fonctionnalité des espaces de noms
Le module Library Components fournit une organisation plus flexible et avancée des templates Twig dans Drupal 8, pouvant fonctionner avec la balise Twig « embed ».