Bagaimana cara mendapatkan setiap nilai bidang dalam views-views-unformatted - view-machine-name.html.twig?


19

Saya punya file ranting: 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 %}

Saya ingin memiliki Titledan body bidang dalam 1 baris dipisahkan oleh koma seperti:

judul, tubuh

Bagaimana saya bisa mendapatkan nilai 'judul' atau 'tubuh' atau bidang lain dalam tampilan ini saat debugging?

Saya menggunakan kint (judul) dan kint (tubuh) tetapi tidak berfungsi. Saya juga membuat debug = TRUE;file layanan.

Tetapi tidak dapat menemukan cara memiliki nilai bidang dalam ranting html yang tidak diformat.

Jawaban:


20

Seperti yang Anda lihat di views-view-unformatted.html.twig , ia mengatakan apa yang juga kode komentar yang Anda tunjukkan mengatakan, tidak ada variabel bidang. Oleh karena itu, templat ini tidak digunakan untuk bidang.

Variabel yang tersedia:

  • title: Judul grup baris ini. Mungkin kosong.
  • rows: Daftar item baris view.
    • Atribut: Atribut HTML baris.
    • konten: konten baris.
  • view: Objek tampilan.
  • default_row_class: Bendera yang menunjukkan apakah kelas default harus digunakan pada baris.

Jika Anda ingin menggunakan bidang dalam templat tampilan, gunakan bidang tampilan-tampilan-[nama-tampilan] - [nama-mesin] .html.twig . Di sana, Anda dapat mencetak bidang Anda seperti ini:

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

view_name dengan garis bawah disimpan, sedangkan nama mesin dengan garis bawah diubah menjadi koma
Matoeil

1
views-view-fields.html.twig dapat disalin dari folder / core / modules / views / templates dan kemudian diganti namanya seperti di atas. Untuk tampilan yang diberikan dengan nama_domain dari foobar, maka nama baru tersebut bisa berupa view-view-fields - foobar.html.twig. Info lebih lanjut tentang konvensi penamaan tersedia di sini: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

Saya telah menemukan Cara menggunakan Kint, Anda bisa mendapatkan nilai bidang dalam tampilan-tampilan - unformatted.html.twig

jika Anda ingin bidang tertentu

Untuk mendapatkan nilai bidang teks

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

Untuk mendapatkan bidang gambar src

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

Untuk mendapatkan alt gambar, judul, lebar, tinggi

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

Catatan: ganti nama mesin bidang dengan nama mesin bidang Anda

Jika Anda ingin mengulang beberapa bidang

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

Jika Anda Ingin nilai mentah

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

7

Saya telah menemukan cara menggunakan kint.

Di dalam view-view-unformatted.html.twig Anda gunakan kode berikut untuk menampilkan masing-masing bidang Anda:

{% for row in rows %}

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

{% endfor %}

Cara menggunakan Bidang Gambar. Ketika saya Menggunakan field_image, tidak ada output. URL Gambar tidak menampilkan atau menampilkan!
Harish ST

4

Di bawah ini adalah contoh kode untuk mengakses nilai-nilai bidang dalam file 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 %}

Sempurna! Itulah hal yang ingin saya ketahui, Terima kasih Renuka.
Niladri Banerjee - Uttarpara

3

Anda perlu membuat tiga file untuk mengganti tampilan menggunakan file ranting.
1. views-view - foobar.html.twig
2. views-view-unformatted - foobar.html.twig
3. views-view-fields - foobar.html.twig

Tujuan ketiga file dijelaskan di bawah ini:
1: Implementasi tema default untuk template tampilan utama.
2: Implementasi tema default untuk menampilkan tampilan baris yang tidak diformat.
3: Templat tampilan default untuk menampilkan semua bidang dalam satu baris.

Anda harus menggunakan "views-view-fields - foobar.html.twig" untuk menampilkan setiap bidang Anda pada tampilan.

Di bawah ini adalah contoh:

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

Hai, Saya sudah mencoba yang di atas dalam views-view-foobar.html.twig tetapi tidak dapat mencetak satu bidang. Saya men-debug bidang menggunakan kint () itu menunjukkan array 'tidak ada' di atas.
Shakil Ahmad

0

Dari pengalaman saya, tidak ada cara mudah untuk meranting dalam view-views-unformatted - view-.html.twig nilai dari bidang bukan bagian dari struktur entitas.

Sangat untuk mencetak text (plain)bidang. Sangat menyakitkan untuk mencetak flag_field, entity_referencedan sebagainya.

Harus mencapai ini tanpa melalui seluruh kode inti tampilan, saya harus membuat retasan ini:

  1. tambahkan entitas bidang teks biasa palsu
  2. kaitkan nilai bidang tampilan dalam modul khusus:
  3. ranting (akhirnya) nilai yang diinginkan dalam templat

Lebih detail di sini /drupal//a/288316/13760

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.