Wie überschreibe ich eine Feldvorlage?

7

Ich versuche, eine Feldvorlage mit meiner eigenen zu überschreiben. Das Feld heißt field_test, daher habe ich ein Feld - Feldtest - mynodetype.html.twig-Vorlagendatei `im Stammverzeichnis-Verzeichnis / templates / erstellt, aber Drupal erkennt es nicht.

Ich habe den Cache von der Benutzeroberfläche gelöscht, den Debug-Modus in settings.yaml aktiviert, das Devel-Modul installiert und die Theme-Registrierung bei jeder Anforderung neu generiert, aber nichts scheint zu helfen. Das Feld wird immer mit der Standardvorlage field.html.twig gerendert.

Wie überschreibe ich die von Drupal verwendete Feldvorlage?

TiMESPLiNTER
quelle
1
Nur für die Nachwelt hast du es versucht field--field_test--mynodetype.html.twig? (Unterstreichen im Feldnamen)
Clive
Haben Sie die Zweig-Debug-Ausgabe (HTML-Kommentare) verwendet, um den Vorlagennamen herauszufinden? Ich sehe einen Vorlagenvorschlag, der eher so aussieht field--node--field-image--article.html.twig(beachten Sie den möglicherweise fehlenden 'Knoten' in Ihrem Vorlagennamen).
Cottser
Einige Dokumente dazu finden Sie hier: drupal.org/node/2358785 Wenn das für Sie funktioniert, kann ich es als Antwort posten.
Cottser
1
@TiMESPLiNTER - großartig. Ich werde sicherstellen, dass ein Problem erstellt wird, um diese Dokumente zu beheben.
Cottser
1
Hier ist das Problem, das ich versprochen habe, um die Dokumentation in field.html.twig zu reparieren: drupal.org/node/2396553
Cottser

Antworten:

14

Sie müssen den Entitätstyp (Knoten, taxonomy_term, ...) im Vorschlag für den Vorlagennamen wie angegeben angeben, dh Feld - Knoten - Feldtest.html.twig.

Knoten ist der Entitätstyp und Feldtest ist der Feldname.

Wenn Sie wissen möchten, welche Vorlage ein bestimmtes Markup-Element generiert, können Sie die Debug-Option von Twig verwenden. Sie aktivieren das Twig-Debugging in sites / default / services.yml. Setzen Sie den Wert von debugin twig.configauf true.

Ich habe das zusätzliche field_test Feld auf die Artikel Knoten, und ich habe die Vorlage Vorschläge in der HTML - Quelle .

<!-- FILE NAME SUGGESTIONS:
   * field--node--field-test--article.html.twig
   * field--node--field-test.html.twig
   * field--node--article.html.twig
   * field--field-test.html.twig
   * field--string.html.twig
   x field.html.twig
-->

Nachdem ich den Vorschlag erhalten hatte, erstellte ich eine Vorlagendatei und behielt diese im Vorlagenverzeichnis des Themas.

Denken Sie daran, den Cache zu leeren.

Weitere Informationen finden Sie unter Arbeiten mit Zweigvorlagen .

Naveen Valecha
quelle
3

Vorlagen müssen in einem Vorlagenverzeichnis in Ihrem Thema abgelegt werden. Sie werden nicht in der Wurzel Ihres Themas aufgenommen. Siehe https://www.drupal.org/node/2349803#templates (das ich gerade aktualisiert habe, um den Unterschied zum Drupal 7-Verhalten festzustellen).

Cottser
quelle
Guter Punkt, aber es tut mir leid, dass ich vergessen habe zu erwähnen, dass ich sie bereits in einen Ordner namens gelegt habe templates. Ich meine, andere Vorlagen überschreiben die Arbeit. Also habe ich die Standardeinstellung überschrieben, node.html.twigdie gut funktioniert. Aber ich kann Felder nicht überschreiben.
TiMESPLiNTER