Görünümler-görünümler-biçimlendirilmemiş olarak her bir alan değerini nasıl alabilirim - view-machine-name.html.twig?


19

Bir dal dosyam var: dosyam 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 %}

Sahip olmak istiyorum Titlevebody alan 1 satırda virgül ile ayrılmış olmak istiyorum:

başlık, gövde

Hata ayıklama sırasında bu görünümdeki 'başlık', 'gövde' veya başka bir alanın değerini nasıl alabilirim?

Kint (title) ve kint (body) kullandım ama işe yaramıyor. Ben de yaptımdebug = TRUE; hizmetler dosyasında .

Ancak, biçimlendirilmemiş HTML dalında alan değerine sahip olmanın yolunu bulamıyorum.

Yanıtlar:


20

Views-view-unformatted.html.twig'de görebileceğiniz gibi , gösterdiğiniz yorumlanmış kodun da söylediği gibi, alan değişkeni yok. Bu nedenle, bu şablon alanlar için kullanılmaz.

Mevcut değişkenler:

  • title: Bu satır grubunun başlığı. Boş olabilir.
  • satırlar: Görünümün satır öğelerinin listesi.
    • nitelikleri: Satırın HTML özellikleri.
    • içerik: Satırın içeriği.
  • view: Görüntüleme nesnesi.
  • default_row_class: Satırlarda varsayılan sınıfların kullanılıp kullanılmayacağını gösteren bir işaret.

Bir görünüm şablonundaki alanları kullanmak istiyorsanız, görünümler-görünüm-alanlarını - [görünüm-adı] - [makine-adı] .html.twig kullanın . Orada, alanlarınızı şu şekilde yazdırabilirsiniz:

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

alt çizgi ile view_name tutulurken, alt çizgi ile makine adı virgül haline getirilir
Matoeil

1
views-view-fields.html.twig / core / modules / views / templates klasöründen kopyalanabilir ve daha sonra yukarıdaki gibi yeniden adlandırılabilir. Foobar'ın makine_adı ile belirli bir Görünüm için, yeni ad görünümler-görünüm alanları olabilir - foobar.html.twig. Adlandırma kuralları hakkında daha fazla bilgiyi burada bulabilirsiniz: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

Kint kullanarak bir yol buldum, görünümler görünümünde alan değerleri alabilirsiniz - unformatted.html.twig

belirli bir alan istiyorsanız

Metin alanlarının değerini almak için

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

Görüntü alanlarını almak için src

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

Görüntü alt, başlık, genişlik, yükseklik elde etmek için

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

Not: alan makinesi adını alanınızın makine adıyla değiştirin

Birden fazla alanda döngü yapmak istiyorsanız

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

Ham değer istiyorsanız

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

7

Kint kullanarak bir yol buldum.

Views-view-unformatted.html.twig içinde, alanlarınızı görüntülemek için aşağıdaki kodu kullanın:

{% for row in rows %}

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

{% endfor %}

Görüntü Alanı nasıl kullanılır. Field_image kullandığımda çıktı yok. Resim URL'si görüntülenmiyor veya oluşturulmuyor!
Harish ST

4

Views-view-unformatted.html.twig dosyasındaki alan değerlerine erişmek için örnek kod aşağıdadır -

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

Mükemmel! Bilmek istediğim şey bu, Teşekkürler Renuka.
Niladri Banerjee - Uttarpara

3

Dal dosyalarını kullanarak görünümleri geçersiz kılmak için üç dosya oluşturmanız gerekir.
1. views-view - foobar.html.twig
2. views-view-biçimlendirilmemiş - foobar.html.twig
3. görünüm-view-fields - foobar.html.twig

Her üç dosyanın amacı aşağıda açıklanmıştır:
1: Ana görünüm şablonu için varsayılan tema uygulaması.
2: Biçimlendirilmemiş satırların görünümünü görüntülemek için varsayılan tema uygulaması.
3: Bir satırdaki tüm alanları görüntülemek için varsayılan görünüm şablonu.

Her alanınızın görünümlerde çıktısını almak için "views-view-fields - foobar.html.twig" ifadesini kullanmalısınız.

Aşağıda bir örnek:

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

Merhaba, views-view-foobar.html.twig yukarıda denedim ama tek bir alan yazdıramıyorum. Kint () kullanarak alanlarda hata ayıklama üstte 'hiçbir şey' dizi gösterir.
Shakil Ahmad

0

Deneyimlerime göre, görünümler-görünümler-biçimlendirilmemiş - view-.html.twig öğesinin varlık yapısının bir parçası olmayan alanlardan bir değer dalmanın kolay bir yolu yoktur.

Bir text (plain)alan yazdırmak için çok . Çok acı yazdırmak için flag_field, entity_referencevb.

Tüm görünüm çekirdek kodu geçmeden bunu başarmak zorunda, ben bu kesmek inşa etmek zorunda kaldı:

  1. sahte düz metin alanı varlığı ekleme
  2. özel bir modülde görünüm alanı değerini kanca:
  3. şablonda istenen değeri dal (son olarak)

Daha fazla ayrıntı burada /drupal//a/288316/13760

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.