web-dev-qa-db-ja.com

ノードテンプレートの分類用語フィールドを印刷する方法

Drupal 8)のノードテンプレートにノード分類用語フィールドを表示するにはどうすればよいですか?

Drupal 7でこれを行うには、node.tpl.phpファイルに次のコードを追加します。

print render($content['field_tags']);

以下のコードをDrupal 8に追加してみました。

{{ content.field_tags }}

しかし、このコードには問題があります:

  1. スタイルを追加したり、field--node--field-tags.html.twigファイルに変更を加えたりすると、これらの変更はすべてのコンテンツタイプにも表示されます。

  2. 記事ノードの下部にデフォルトの分類用語を表示したくない(記事の上部に分類用語を移動して表示したい)場合、「管理」>「構造」>「コンテンツタイプ」>「記事」で「非表示」の値を割り当てます。 「形式」セクションのこの設定では、記事ノード全体の分類用語フィールドがすべて表示されません。

  3. タクソノミー用語Labelタグがノードに追加されていない場合でも常に表示されます。タグが追加されている場合にのみ、分類用語のラベルとその値を表示するにはどうすればよいですか?

1
Mojtaba Reyhani

質問に答えるには:

いくつかのスタイルをfield--node--field-tags.html.twigファイルに追加すると、node.html.twigファイルにも再び表示されますか?

記事ノードの最後にデフォルトの分類用語を表示したくない場合、「形式」セクションの「管理」>「構造」>「コンテンツタイプ」>「記事」で「非表示」の値を割り当てても、表示されませんか?

どちらの質問も関連しており、D7の背景にあると思います。 D7では、フィールドを印刷すると、それ以降の出力から非表示になります。これはD8には当てはまりません。ノード小枝の単一のフィールドを印刷する場合:

{{ content.field_tags }}

完全なコンテンツが出力されたら、後でそれを除外する必要があります。

{{ content|without('field_tags') }}

それが唯一の方法です。最初のtwigステートメントに使用できるフィールドコンテンツがないため、[フォーマット]セクションで非表示にすることはできません。

ノードにタグが追加されていない場合でも、常に分類用語が表示されます。ノードにタグを追加した場合、以前に追加したスタイルなしで分類用語名とそのリンクのみを表示するにはどうすればよいですか?

ラベルを前述の「フォーマット」セクションに表示するかどうかを構成できます。しかし、あなたも使うことができます

field--field-tags.html.twig

ウェザーを変更し、ラベルをどのような形で表示するか。このtwig=を使用してHTMLのテーマを設定し、CSSを準備することもできます。NiceタグにはいくつかのCSSが必要です。

3
4k4
  1. はい、これはそのフィールドを持つすべてのノードで使用されます! contenttype固有のnode.html.twig(次のポイントを参照)を追加するか、クラスのみを追加する場合はtemplate_preprocess_node(&$variables)で追加し、クラスを_$variables['content']['field_tags'][x]['attributes']['class'][] = 'my-style'_に追加します。そこで確認できますcontenttypeの場合。

  2. 何をレンダリングしていますか?ノードのフィールドをレンダリングする場合、割り当てられた用語のみを取得しますか?!カスタムのノード固有のテーマでは、次のようなものを使用できます

node--type-your_contenttype.html.twig

_   {% for item in content.field_tags %}
      {% if item['#title'] %}
        <a href="{{ item['#url']}}" class="link-item">{{ item['#title']  }}</a>
      {% endif %}
    {% endfor %}
_

また、{{ item['#options'].entity.url() }}または{{ path('entity.taxonomy_term.canonical', {'taxonomy_term': item['#options'].entity.tid}) }}を使用してURLを取得できます。


アイコンについて

Tidまたは親を使用して、icon-34のように名前を付けます。 twig like like:item ['#options']。entity.parentまたはitem ['#options']。entity.tidでアクセスします。

ただし、名前を設定した各項目配列にキーと値のペアを追加するには、前処理関数を使用することをお勧めします。たとえば、分類に追加したフィールドから。次に、twigのように_{{ item.key }}_でアクセスできます

5
rémy

ノードに関連付けられている単一の用語の名前を表示します。

<div class="term-display">{{ node.field_my_taxonomy.entity.name.value }}</div>

その分類法内の用語名のリストをループする(複数の値がある場合):

{% for item in node.field_my_taxonomy %}
  <div class="term-display">{{ item.entity.name.value }}</div>
{% endfor %}
1
bluestraggler