フィールドテンプレートを上書きするにはどうすればよいですか?


7

フィールドテンプレートを自分のテンプレートで上書きしようとしています。フィールドはfield_testと呼ばれるので、root-theme-directory / templates /にfield--field-test--mynodetype.html.twigテンプレートファイル `を作成しましたが、Drupalはそれを認識しません。

UIからキャッシュをクリアし、settings.yamlでデバッグモードを有効にして、Develモジュールをインストールし、リクエストごとにテーマレジストリを再生成しましたが、何も役に立たないようです。フィールドは常にデフォルトのfield.html.twigテンプレートでレンダリングされます。

Drupalが使用するフィールドテンプレートをオーバーライドするにはどうすればよいですか?


1
後世のためだけに試しましたfield--field_test--mynodetype.html.twigか?(フィールド名の下線)
クライブ

テンプレート名を理解するために、twigデバッグ出力(HTMLコメント)を使用しましたか?より類似したテンプレートの提案が表示さfield--node--field-image--article.html.twigれます(テンプレート名から「ノード」が欠落している可能性があることに注意してください)。
Cottser 2014年

そのためのいくつかのドキュメントはここにあります:drupal.org/node/2358785それがあなたのために働くならば、私はそれを答えとして投稿できます。
Cottser 2014年

1
@TiMESPLiNTER-素晴らしい。これらのドキュメントを修正するために問題が作成されることを確認します。
Cottser、2014年

1
field.html.twigのドキュメントを修正することを約束した問題は次のとおりです。drupal.org
node

回答:


14

指定したテンプレート名の提案でエンティティタイプ(node、taxonomy_term、...)を指定する必要があります。つまり、field--node--field-test.html.twigです。

nodeはエンティティタイプ、field-testはフィールド名です。

特定のマークアップ要素を生成しているテンプレートを知りたい場合は、Twigのデバッグオプションを使用できます。あなたはsites / default / services.ymlでTwigのデバッグを有効にします。値を設定するdebugtwig.configしますtrue

私はfield_testフィールドをArticleノードに追加し、HTMLソースでテンプレートの提案を得ました。

<!-- 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
-->

提案を受け取った後、テンプレートファイルを作成し、テーマのテンプレートディレクトリに保存しました。

キャッシュをクリアすることを忘れないでください。

詳細については、Twigテンプレートの操作を参照してください。


3

テンプレートは、テーマの「テンプレート」ディレクトリに配置する必要あります。彼らはあなたのテーマの根元でピックアップされません。https://www.drupal.org/node/2349803#templatesを参照してください(Drupal 7の動作との違いに注意するために更新しました)。


良い点ですが、申し訳ありませんが、という名前のフォルダに既に配置したことを忘れていましたtemplates。他のテンプレートのオーバーライドが機能することを意味します。そのため、node.html.twig正常に機能するデフォルトを上書きしました。しかし、フィールドを上書きすることはできません。
TiMESPLiNTER 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.