Ich versuche, Drupal 8 mit einem benutzerdefinierten Thema zu verwenden. Aufgrund der großen Strukturunterschiede für meine Anforderungen habe ich eine Seite - front.twig.html und eine Seite.twig.html. Ich möchte Schablonenteile erstellen, wie sie in verwendet werden phrozn oder in einem normalen Symfony2-Projekt, zum Beispiel eine footer.html.twig und eine header.html.twig. Diese Vorlagen werden in einem Unterverzeichnis / parts / gespeichert.
Aber wenn ich diese Vorlagen wie gewohnt aufrufe, erhalte ich nur eine Zeichenfolge mit dem Namen der Vorlage.
Beispielsweise:
{# in page.html.twig or page--front.html.twig #}
{% include 'parts/footer.html.twig' %}
Liefert den Dateinamen als String:
parts/footer.html.twig
Kann man das mit Drupal 8 machen?
include
Werten und deren Weitergabe? Angenommen, ich möchteimage-formatter
dieurl
Null einschließen und übergeben , um zu vermeiden, dass ein verknüpftes Bild erstellt wird.@mytheme
in den Pfadmytheme
der Zeichenfolge aufgelöst wird/templates
. Mit anderen Worten, wird@mytheme
in dasmytheme/templates
Verzeichnis aufgelöst.@mytheme
in 'themes / custom / mytheme / templates' aufgelöst . Einschließlich einer Vorlage an sich@mytheme/fragments/footer.html.twig
Mittel , um es lösen wird ‚Themen / custom / mytheme / templates / Fragmente / footer.html.twig‘Verwenden Sie einen vollständigen Pfad zum Themenverzeichnis. Wenn Sie den Namespace verwenden, müssen Sie ihn ändern, wenn Sie den Code auf eine andere Site oder ein anderes Thema übertragen.
Das sollte funktionieren:
quelle
Es ist auch möglich, Twigs Verwendung eines Arrays zu verwenden, um einen Fallback zu erstellen, wenn die Datei nicht vorhanden ist.
Z.B. Wenn footer.html.twig nicht verfügbar ist, wird defaultfooter.html.twig verwendet.
Kombinieren Sie dies mit der Verwendung von Variablen in den Dateinamen, und Sie können je nach Kontext unterschiedliche Dateien einfügen.Nb: Ich versuche immer noch herauszufinden, ob dies die beste Vorgehensweise ist oder nicht.
quelle
Beachten Sie, dass Sie nach dem
with
Schlüsselwort Variablen übergeben können :Siehe Twig-Dokumentation http://twig.sensiolabs.org/doc/tags/include.html
quelle
Nachdem das Hinzufügen der Twig-Vorlagenvererbung basierend auf der Themenregistrierung aktiviert wurde und das Hinzufügen von Twig-Ladeprogrammen festgeschrieben wurde, können Sie auch die folgende Zeile verwenden.
quelle
Für Drupal 8
Das Einschließen einer Zweigdatei in das Thema, wenn Sie einen
{% include 'FILE_NAME.html.twig' %}
Drupal ausführen, erwartet, dass sich Ihre DATEI in Ihrem aktuellen Themenverzeichnis befindet. Legen Sie es einfach dort und es wird funktionieren.Einfügen einer Zweigdatei in Ihr Modul
Wenn Sie es einem MODUL hinzufügen möchten, müssen Sie es in der THEME-Funktion deklarieren. Fügen Sie in Ihrer .module-Datei einfach Folgendes hinzu:
Legen Sie dann Ihre Twig-Datei in YOUR_MODULE / template / FILE_NAME.html.twig ab
quelle