web-dev-qa-db-ja.com

twigで段落モジュールをレンダリングする方法

テーマのカスタムテンプレートを作成して、page.html.twigページを作成しています。個別のノードフィールドを個別の行に呼び出します。段落フィールド以外のすべてを正常に表示できました。

私が試してみました。

{{ node.field_benefits }}
{{ node.field_benefits.value }}
{{ paragraph.field_benefits }}
{{ paragraph.field_benefits.value }}
{{ node.paragraphs.field_benefits }}

そして何もうまくいきませんでした。誰かが段落モジュールで呼び出す正しい構造を知っていますか?

または機能する

{% if node.field_benefits %}
{% for field_items in node.field_benefits %}
{{ field_item.value }}
{% endfor %}
{% endif %}
8
Megan McGowan

まず、_paragraph--your_paragraph_machine_name.html.twig_をテーマのテンプレートディレクトリに追加します。

段落フィールドにアクセスするには、twig変数を_{{ content.field_your_field }}_と同様の形式で追加します。

フィールド値のみが必要な場合は、少し注意が必要です。たとえば、リスト(テキスト)フィールドがあり、選択したオプションから値を取得したい場合は、次のようにします。

_{% for item in content.field_select_list %}
  {% if item is iterable %}
    {% for key,value in item %}
      {% if not value is iterable %}
        {% if key == '#markup' %}
          {{ value }}
        {% endif %}
      {% endif %}
    {% endfor %}
  {% endif %}
{% endfor %}
_

いつでも{{ dump(content) }}を実行して構造を確認し、探している値を取得できます。お役に立てれば!

編集:すべての愚かな入れ子のループを回避できます。上記の例は次のように書く必要があります:

_{% set value = content.field_select_list.0['#markup'] %}
{{ value }}
_

テキスト(プレーン)フィールドの場合、次のようになります。

_{{ content.field_text.0['#context'].value }}
_

リンクフィールドからURL値を取得するには、次のような提案を見てきました。

_{{ content.field_link['#items'].0.value.uri }}
_

しかし、それは "internal:/"プレフィックスを持つので、私はこのようなもので運が良かった:

_{{ content.field_link.0['#title'] %}
_
7
jimafisk