"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>
File_url()を使用する必要があるかどうかはわかりませんが、{{ content.field_link.0['#url'] }}
--stackoverflowの this question で説明されています。
このコードは、小枝のリンクフィールドの個別の[〜#〜] url [〜#〜]およびTitleを印刷するために適切に機能します。
{{ content.field_link[0]['#url'] }}
{{ content.field_link[0]['#title'] }}
この方法でURLと値(テキスト)を取得できます。
{{ content.field_link.0['#url'] }}
{{ content.field_link.0['#title'] }}
ほとんどのテンプレート(ノード、段落など)では、次のコマンドを使用して生のフィールド値にアクセスできます{{ 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 }}
を使用します ここで説明します )