views-views-unformatted--view-machine-name.html.twigの各フィールド値を取得する方法は?


19

私は小枝ファイルを持っています: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 %}

私が持っていたいTitlebody フィールドのようにカンマで区切って1行にします:

タイトル、本文

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

kint(title)とkint(body)を使用しましたが、機能していません。またdebug = TRUE;、servicesファイルで作成しました。

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

回答:


20

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

利用可能な変数:

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

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

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

下線付きのview_nameは保持され、下線付きのmachine-nameはコンマに変換されます
Matoeil

1
views-view-fields.html.twigは、/ core / modules / views / templatesフォルダーからコピーして、上記のように名前を変更できます。foob​​arのmachine_nameを持つ特定のビューの場合、新しい名前はviews-view-fields--foobar.html.twigになります。命名規則の詳細については、drupal.org
docs /

13

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 %}

7

kintを使用する方法を考えました。

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

{% for row in rows %}

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

{% endfor %}

画像フィールドの使用方法。field_imageを使用すると、出力はありません。画像URLが表示またはレンダリングされていません!
ハリッシュST

4

以下は、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 %}

パーフェクト!それが私が知りたいことです、レヌカに感謝します。
Niladri Banerjee-ウッタルパラ

2

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>

こんにちは、views-view-foobar.html.twigで上記を試しましたが、単一のフィールドを印刷できません。kint()を使用してフィールドをデバッグします。上部に 'nothing'配列が表示されます。
シャキルアフマド

0

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

非常にtext (plain)フィールドを印刷します。を印刷するのflag_fieldは苦痛entity_referenceです。

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

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

詳細はこちら /drupal//a/288316/13760

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.