web-dev-qa-db-ja.com

Twigテンプレートのビューフィールドの値を取得します

各行に3つのフィールドを出力するビューを作成しました。ビューを使用するだけで、出力を次のようにすることができます。

<li>[Field1 Value] [field2 value] [field3 value]</li>

リストアイテムのデータ属性をフィールド値に設定する必要があります。また、コンテンツの詳細ビューにリンクするアンカーを、3つのフィールド値すべてでラップしたいと思います。

twig views-view-view-fields.html.twigのようなテンプレート(汎用的すぎますが、テスト目的のため)を使用しましたが、値がそこにないようです。 {{dump(fields | keys)}}と私のフィールドが表示されますが、{{dump(fields.my_field | keys)}}を実行すると、空の配列になります。

また、page-[viewsによって作成された私のページの名前] .html.twigのようなテンプレートを使用してみましたが、それらのフィールドの値もそこに見つかりませんでした。

私がどこを見るべきか、特にtwig私が作成/オーバーライドする可能性のあるテンプレートと、値を取得する方法についてのアドバイスは、非常に高く評価されます!

6
andyxmas

テンプレートファイル(views-view-field)では、

<li> {{ row._entity.field_name1.value }} {{ row._entity.field_name2.value }} {{ row._entity.field_name3.value }}</li>

または、テーマの前処理関数で、出力を上書きできます。

function your_theme_name_preprocess_views_view_field(&$variables) {
    $view = $variables['view'];
    if ($view->storage->id() == 'your_view_name') {
        $variables['output'] = '<li>' . 
          $variables['row']->_entity->field_name1->value . 
          $variables['row']->_entity->field_name2->value . 
          $variables['row']->_entity->field_name3->value . 
        '</li>';
    }
}
3
Oana Hulpoi

実際には、ビューテンプレートをDrupal 7.と同じように使用できます。7。ビュー設定の高度な部分にテーマ情報はありませんが、コアビューモジュールのテンプレートフォルダーから基本テンプレートを取得できます。行名ごとにビューテンプレートを作成するには、views-view-fields--VIEW-NAME.html.twigwhereVIEW-NAMEは、ビューのマシン名またはviews-view-fields--VIEW-NAME--DISPLAY-NAME.html.twig DISPLAY-NAMEは、使用しているディスプレイ(ブロック、ページなど)です。テンプレートテーマフォルダーに追加します。

各行を前処理するには、template_preprocess_views_view_fields(&$ variables) function を使用します。

テンプレートでは、このようにフィールドを使用できます{{fields.field_name.content}}

1
Andrew Nim

$ rowは、処理されたフィールドエンティティの代わりに必要なものを取得しますか?

{{kint(row.node_field_data_created)}}

0
Todd Bloom