web-dev-qa-db-ja.com

ブロック内のビューフィールドにアクセスできませんTwigテンプレート

Drupal 8はTwigをどのように使用しますか?異なるデータが一般的なテンプレートから特定のテンプレートに転送される方法は?

ビューブロックについては、デフォルトのテンプレートの提案に従ってブロックテンプレートを作成しました。私の新しいTwigテンプレートを印刷した場合、_{{ content }}_テンプレートでは、すべて(ビューの結果フィールド)がDrupal defaultに従ってレンダリングされます。

ブロックテンプレートのすべてのビューフィールドにテーママークアップにアクセスして適用するにはどうすればよいですか。 {{ dump(_context|keys) }}下に表示します。

enter image description here

enter image description here

3
harish

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. 
5
No Sssweat

ブロックをカスタムテンプレートにレンダリングする場合:

  1. カスタムモジュールのtemplatesフォルダー内にtwigファイルblock--views-block-page-fields-block-1.html.twigを作成します。

  2. 次のようにhook_themeを実装します。


    /**
     * Implements hook_theme().
     */
    function yourModuleName_theme($existing, $type, $theme, $path) {
      return [
        'block__views_block_page_fields_block-1'     => [
          'base hook' => 'block'
        ],
      ];
    }
  1. キャッシュの消去。
  2. これで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 %}
1
berramou