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


8

テーマのカスタムテンプレートを作成し、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 %}

page.html.twigはノードを処理しません...ページテンプレート全体のみを処理します。間違ったテンプレートを使用しています。代わりにノードテンプレートをオーバーライドすることをお勧めします(または少なくともtwigテンプレートへのアクセス方法を確認してください)。また、twigデバッグをオンにしてソースコードを確認すると、オーバーライドする必要のあるテンプレートを確認するのに役立ちます。
NikLP 2016

OK @NikLPすべてをノードレベルに移動しましたが、まだ段落モジュールをレンダリングできません-デバッグとキントから取得したフィールドを使用していますが、それでも空の行が表示されます
Megan McGowan

たぶんこれをチェック?drupal.org/node/2444893
NikLP

回答:


7

まず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 %}

いつでもa {{ 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'] %}

ノードテンプレートparagraph.field_my_text.valueと同じようnode.field_my_text.valueに、任意の段落テンプレートで使用して、書式なしのプレーンな値を出力できます。
フィリップマイケル

メインテンプレートから段落--your_paragraph_machine_name.html.twigをどのように印刷しますか?
サム・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.