Drupal 8はTwigをどのように使用しますか?異なるデータが一般的なテンプレートから特定のテンプレートに転送される方法は?
ビューブロックについては、デフォルトのテンプレートの提案に従ってブロックテンプレートを作成しました。私の新しいTwigテンプレートを印刷した場合、_{{ content }}
_テンプレートでは、すべて(ビューの結果フィールド)がDrupal defaultに従ってレンダリングされます。
ブロックテンプレートのすべてのビューフィールドにテーママークアップにアクセスして適用するにはどうすればよいですか。 {{ dump(_context|keys) }}
下に表示します。
block--views-block--page-fields-block-1.html.twig内
次のようにビューのフィールドにアクセスできます。
{% for row in content['#view'].result %}
{{ content['#view'].field['field_name'].value(row) }}
// change field_name to the actual field machine name.
{% endfor %}
個人的には、views-view-fields-[view-name] -- [machine-name] 。html.twig
あなたの場合はviews-view-fields--page-fields--block-1.html.twig
ここでは、for
ループを実行する必要はなく、次のようにしてフィールドに簡単にアクセスできます。
{{ fields.field_name.content }}
// change field_name to the actual field machine name.
ブロックをカスタムテンプレートにレンダリングする場合:
カスタムモジュールのtemplates
フォルダー内にtwigファイルblock--views-block-page-fields-block-1.html.twig
を作成します。
次のようにhook_theme
を実装します。
/**
* Implements hook_theme().
*/
function yourModuleName_theme($existing, $type, $theme, $path) {
return [
'block__views_block_page_fields_block-1' => [
'base hook' => 'block'
],
];
}
content
変数ができました。Twig Tweak を使用する場合、drupal_view_result
を使用してビューの結果を取得できるため、次のようなフィールドにアクセスできます。
{% for result in drupal_view_result(content['#view'].id, content['#view'].current_display) %}
{{ result._entity.field_name.value }}
{% endfor %}