web-dev-qa-db-ja.com

views-views-unformatted--view-machine-name.html.twigの各フィールド値を取得するにはどうすればよいですか?

twig file:views-view-unformatted--view-machine-name.html.twig

{#
/**
 * @file
 * Default theme implementation to display a view of unformatted rows.
 *
 * Available variables:
 * - title: The title of this group of rows. May be empty.
 * - rows: A list of the view's row items.
 *   - attributes: The row's HTML attributes.
 *   - content: The row's content.
 * - view: The view object.
 * - default_row_class: A flag indicating whether default classes should be
 *   used on rows.
 *
 * @see template_preprocess_views_view_unformatted()
 *
 * @ingroup themeable
 */
#}
{% if title %}
  <h3>{{ title }}</h3>
{% endif %}
{% for row in rows %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

Titlebodyfieldをコンマで区切って1行にしたい:

タイトル、本文

デバッグ中にこのビューの「タイトル」、「本文」、またはその他のフィールドの値を取得するにはどうすればよいですか?

Kint(title)とkint(body)を使用しましたが、機能しません。 debug = TRUE;はservicesファイルにあります。

しかし、フォーマットされていないhtml twigでフィールド値を持つ方法を理解することはできません。

19
Sugandh Khanna

views-view-unformatted.html.twig で確認できるように、これは、表示したコメント付きコードが何を言っているかを示しており、フィールド変数はありません。したがって、このテンプレートはフィールドには使用されません。

利用可能な変数:

  • title:この行グループのタイトル。空の場合があります。
  • rows:ビューの行アイテムのリスト。
    • attributes:行のHTML属性。
    • content:行のコンテンツ。
  • view:ビューオブジェクト。
  • default_row_class:デフォルトクラスを行で使用するかどうかを示すフラグ。

ビューテンプレートでフィールドを使用する場合は、views-view-fields-[view-name] -- [machine-name] 。htmlを使用します。小枝。そこで、次のようにフィールドを印刷できます。

<span>{{ fields.title.content }},</span><span>{{ fields.body.content }}</span>
20
No Sssweat

Kintを使用した方法を見つけました。views-view--unformatted.html.twigでフィールド値を取得できます

特定のフィールドが必要な場合

テキストフィールドの値を取得するには

_{{row.content['#row']._entity.field machine name[0].value}}_

画像フィールドsrcを取得するには

{{file_url(row.content['#row']._entity.field machine name.entity.uri.value)}}

画像のalt、title、width、heightを取得するには

_{{row.content['#row']._entity.field machine name[0].alt/title/width/height}}_

注:フィールドマシン名をフィールドマシン名に置き換えます

複数のフィールドをループする場合

_{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value }}
{% endfor %}
_

生の値が必要な場合

_{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value|raw }}
{% endfor %}
_
13
Sathish Sundar

私はキントを使用する方法を考え出しました。

Views-view-unformatted.html.twig内で、次のコードを使用して個々のフィールドを表示します。

{% for row in rows %}

{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}

{% endfor %}
7
Ibrahim Samir

以下は、views-view-unformatted.html.twigファイルのフィールド値にアクセスするためのサンプルコードです。

{% for row in rows %}
  {% set photo = file_url(row['content']['#row']._entity.field_page_photo.entity.fileuri) %}          
  <li><img src={{ photo }} class="img-responsive img-circle"></li>
{% endfor %}
4
Renuka Kulkarni

twigファイルを使用してビューを上書きするには、3つのファイルを作成する必要があります。
1。 views-view--foobar.html.twig
2。 views-view-unformatted--foobar.html.twig
3。 views-view-fields--foobar.html.twig

3つのファイルすべての目的は次のとおりです。
1:メインビューテンプレートのデフォルトのテーマ実装。
2:未フォーマットの行のビューを表示するデフォルトのテーマ実装。
3:行のすべてのフィールドを表示するデフォルトのビューテンプレート。

ビューの各フィールドを出力するには、「views-view-fields--foobar.html.twig」を使用する必要があります。

以下はサンプルです:

<li>
<p>{{ fields.title.content }}</p> // Title field
<p>{{ fields.body.content }}</p> // Body field
<span>{{ fields.created.content }}</span> // Node authored date field
<a href="{{ fields.path.content }}" class="readmore"> read more </a> // Link to actual page
</li>
3
Pranay Agarwal

私の経験から、エンティティ構造の一部ではないフィールドの値をtwig views-views-unformatted--view-.html.twigで表示する簡単な方法はありません。

非常にtext (plain)フィールドを出力します。 flag_fieldentity_reference 等々。

全体のコアコードを経由せずにこれを達成する必要があるため、このハックを作成する必要がありました。

  1. 偽のプレーンテキストフィールドエンティティを追加する
  2. カスタムモジュールのビューフィールド値をフックします。
  3. (最終的に)テンプレートの目的の値を小枝にします

詳細はこちら https://drupal.stackexchange.com/a/288316/1376

0
augusto