Posted by gg45 on October 25, 2016 at 6:58am
いつもお世話になっております。
最近ようやくDrupal 8にアップデートしました。
本日はpage.html.twigについての質問なのですが
page.html.twig内で taxonomyのフィールドを表示させる方法を教えていただきたく質問しました。
テキストフィールドであれば、
{{ node.フィールド名.value }}
で取得できたのですが、taxonomyは上記の記載だと取得できませんでした。
こちらわかる方いらっしゃいましたら教えていただけると助かります。
何卒よろしくお願いいたします。
Comments
{% for item in
{% for item in node.field_tags %} {% if item['#title'] %} {{ item['#title'] }} {% endif %} {% endfor %}のように、ループ処理をしてあげる必要があると思います(上はループの一例ですので、動作しません)。しかも、page.html.twigから取得できるのは各タームのID番号のみなので、ターム名を出力するには、IDから、ターム名を読み込む必要があります。おそらく、template_preprocess_page() (https://api.drupal.org/api/drupal/core%21includes%21theme.inc/function/template_preprocess_page/8.2.x)で、ターム名を読み込んだ後に、変数をテンプレートに渡すほうが、綺麗でわかりやすくなると思います。
Devel Moduleに含まれている、Devel Kintをインストールすれば、
{{ kint(node) }}のようにして、変数の中身を見やすく確認できます。
ただ、ちょっと気になるのは、page.html.twigはノード(例:記事や基本ページの本文ページ)だけでなく、ユーザーページやビューページでも使われるテンプレートなので、全てのページでtaxonomyが表示できるわけではありません。
目的によって、一概には言えませんが、もしかしたら、ビューズブロックを使うなど、他の方法があるかもしれません。
viewsブロックにて対応しました。
Shumpei さん、ありがとうございました。
ご指摘いただいた通り、page.html.twigだけでは希望の動きをしなかったので
viewsのブロックで対応しました!
ご連絡本当にありがとうございました!