web-dev-qa-db-ja.com

Twigテンプレートのリンクフィールドの値/ URLを取得する方法は?

"field_link"(内部リンクのみ)と呼ばれるリンクフィールドを持つカスタムブロックタイプがあります。私のブロック内でTwigテンプレートリンクフィールドのURLを抽出したいのですが、どうすればよいですか?同様の問題のある投稿を読みましたが、これまでのところどの解決策も機能していないようです。

私がこれまでに試したこと:

{{ file_url(content.field_link.uri) }}
{{ file_url(content.field_link.0.url) }}

「/」しか得られませんが、「/ node/1」があるはずです...

これは私の標準ブロックテンプレートです。

<div{{ attributes.addClass(classes) }}>   
      {{ title_prefix }}
      {% if label %}
        <h2{{ title_attributes }}>{{ label }}</h2>
      {% endif %}
      {{ title_suffix }}
      {% block content %}
        {{ content }}
      {% endblock %}
</div>
1
scar

File_url()を使用する必要があるかどうかはわかりませんが、{{ content.field_link.0['#url'] }} --stackoverflowの this question で説明されています。

1
joekers

このコードは、小枝のリンクフィールドの個別の[〜#〜] url [〜#〜]およびTitleを印刷するために適切に機能します。

{{ content.field_link[0]['#url'] }}

{{ content.field_link[0]['#title'] }}
0
Anoop Singh

この方法でURLと値(テキスト)を取得できます。

{{ content.field_link.0['#url'] }}

{{ content.field_link.0['#title'] }}
0
Efraín Herrera

ほとんどのテンプレート(ノード、段落など)では、次のコマンドを使用して生のフィールド値にアクセスできます
{{ entity_type.field_name.0.value }}。残念ながら、これはブロックテンプレートでは機能しません。カスタムコンテンツブロックで機能させるには、前処理関数を追加する必要があります。

function YOURTHEME_preprocess_block(array &$variables) {
  if ($variables['base_plugin_id'] == 'block_content') {
    $variables['block_content'] = $variables['elements']['content']['#block_content'];
  }
}

これで、{{ block_content.field_name.0.value }}を使用してフィールドにアクセスできます(リンクフィールドの場合は{{ block_content.field_name.0.url }}を使用します ここで説明します

0
Hudri