Einbinden eines Template-Teils
Viele Entwickler bevorzugen es, Header- und Footer-Code in separaten Dateien zu speichern und diese Dateien in page.html.twig einzubinden.
Vorgehen
Angenommen, Sie haben folgende Datei im Theme-Ordner für den Header erstellt:
THEME_NAME/templates/includes/header.html.twig
Und nun möchten Sie diese Datei in
page.html.twig
einbinden.
Empfohlene Methode
Der richtige Weg für Drupal 8 Themes ist die Verwendung von Twig-Namespace, um das "templates"-Verzeichnis des aktuellen Themes zu deklarieren. Beispiel:
{% include '@THEME_NAME/includes/header.html.twig' %}
Unten sehen Sie ein Beispiel aus einem Drupal.org-Theme namens Architect.
„@architect“ verweist auf das /templates-Verzeichnis im Theme-Ordner (architect).
{% include '@architect/includes/header.html.twig' %}
Der Twig-Namespace wird in Drupal 8 automatisch beim Aktivieren Ihres Themes erstellt und verweist auf das /templates-Verzeichnis Ihres Themes. Kurz gesagt bedeutet „@theme_name“ im Twig-Include (wie oben gezeigt) den Pfad „your_site.com/themes/theme_name/templates“ auf Ihrem Server.
Nicht empfohlene Methode
Eine mögliche (aber nicht empfohlene) Methode ist die folgende Zeile zum Einbinden der Datei:
{# NICHT empfohlen #}
{% include directory ~ '/templates/includes/header.html.twig' %}
Die oben genannte Variante kann funktionieren, führt aber zu Serverfehlern, wenn sie mit einem Subtheme verwendet wird.
Erweiterung der Namespace-Funktionalität
Das Modul Components Library bietet eine flexiblere und komplexere Organisation von Twig-Templates in Drupal 8, die mit Twig "embed" arbeitet.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.