Jak uzyskać każdą wartość pola w views-views-unformatted - view-machine-name.html.twig?

19

Mam plik gałązki: 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 %}

Chcę mieć Titlei body pole być w 1 linii oddzielone przecinkiem, takich jak:

tytuł, ciało

Jak mogę uzyskać wartość „tytuł” ​​lub „treść” lub dowolnego innego pola w tym widoku podczas debugowania?

Użyłem kint (tytuł) i kint (ciało), ale to nie działa. Zrobiłem też debug = TRUE;w pliku usług.

Ale nie mogę ustalić sposobu, w jaki wartość pól ma niesformatowaną gałązkę HTML.

Sugandh Khanna
źródło

Odpowiedzi:

20

Jak widać w views-view-unformatted.html.twig , mówi on, co również pokazany przez ciebie skomentowany kod mówi, że nie ma zmiennej pola. Dlatego ten szablon nie jest używany do pól.

Dostępne zmienne:

  • tytuł: tytuł tej grupy wierszy. Może być pusty.
  • wiersze: lista elementów wiersza widoku.
    • atrybuty: atrybuty HTML wiersza.
    • content: treść wiersza.
  • widok: Obiekt widoku.
  • default_row_class: Flaga wskazująca, czy w wierszach należy zastosować klasy domyślne.

Jeśli chcesz użyć pól w szablonie widoku, użyj views-view-fields - [view-name] - [machine-name] .html.twig . Tam możesz wydrukować swoje pola w następujący sposób:

<span>{{ fields.title.content }},</span><span>{{ fields.body.content }}</span>
Bez sssweat
źródło
nazwa_widoku z podkreśleniem zachowana, a nazwa maszyny z podkreśleniem przekształcona w przecinek
Matoeil
1
views-view-fields.html.twig można skopiować z folderu / core / modules / views / templates, a następnie zmienić jego nazwę jak wyżej. Dla danego Widoku z nazwą maszynową foobar, nową nazwą mogą być pola widzenia - pola widzenia - foobar.html.twig. Więcej informacji na temat konwencji nazewnictwa można znaleźć tutaj: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle
13

Znalazłem sposób używania Kinta, możesz uzyskać wartości pól w widoku-widoku - unformatted.html.twig

jeśli chcesz konkretnego pola

Aby uzyskać wartość pól tekstowych

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

Aby uzyskać pola obrazu src

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

Aby uzyskać obraz alt, tytuł, szerokość, wysokość

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

Uwaga: zastąp nazwę maszyny polowej nazwą maszyny polowej

Jeśli chcesz przejść przez wiele pól

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

Jeśli chcesz surowej wartości

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value|raw }}
{% endfor %}
Sathish Sundar
źródło
7

Wymyśliłem sposób, używając kinta.

Wewnątrz views-view-unformatted.html.twig użyj następującego kodu, aby wyświetlić poszczególne pola:

{% for row in rows %}

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

{% endfor %}
Ibrahim Samir
źródło
Jak korzystać z pola obrazu. Kiedy używam image_obrazu, nie ma danych wyjściowych. Adres URL obrazu nie jest wyświetlany ani renderowany!
Harish ST
4

Poniżej znajduje się przykładowy kod umożliwiający dostęp do wartości pól w pliku 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 %}
Renuka Kulkarni
źródło
Doskonały! Właśnie o tym chcę wiedzieć, dzięki Renuka.
Niladri Banerjee - Uttarpara
3

Musisz utworzyć trzy pliki, aby zastąpić widoki za pomocą plików gałązek.
1. views-view - foobar.html.twig
2. views-view-unformatted - foobar.html.twig
3. views-view-fields - foobar.html.twig

Cel wszystkich trzech plików opisano poniżej:
1: Domyślna implementacja kompozycji dla głównego szablonu widoku.
2: Domyślna implementacja motywu wyświetlająca widok niesformatowanych wierszy.
3: Domyślny szablon widoku, aby wyświetlić wszystkie pola z rzędu.

Powinieneś użyć „views-view-fields - foobar.html.twig”, aby wyprowadzić każde twoje pole z widoków.

Poniżej znajduje się próbka:

<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>
Pranay Agarwal
źródło
Cześć, próbowałem powyższego w views-view-foobar.html.twig, ale nie mogę wydrukować ani jednego pola. Debugować pól przy użyciu kint () to „nic” pokazuje tablica na górze.
Shakil Ahmad
0

Z mojego doświadczenia wynika, że ​​nie ma łatwego sposobu na gałkę w widokach-widokach-niesformatowanych - widok-.html.twig wartości z pól nie będących częścią struktury encji.

Bardzo do wydrukowania text (plain)pola. Tak bolesne, aby wydrukować flag_field, entity_referencei tak dalej.

Musiałem to osiągnąć bez przechodzenia przez cały podstawowy kod widoku, musiałem zbudować ten hack:

  1. dodaj fałszywy obiekt w postaci zwykłego tekstu
  2. zaczep wartość pola widoku w module niestandardowym:
  3. twig (wreszcie) pożądaną wartość w szablonie

Więcej informacji tutaj /drupal//a/288316/13760

augusto
źródło