Як отримати значення кожного поля у view-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 %}

Я хочу мати Titleі body поле , щоб бути в 1 рядку через кому , як:

назва, корпус

Як я можу отримати значення "title" або "body" або будь-яке інше поле у ​​цьому поданні під час налагодження?

Я використовував kint (назва) та kint (body), але це не працює. Я також зробив debug = TRUE;файл служби.

Але не можу з'ясувати спосіб значення полів у неформатованій HTML-гілці.

Відповіді:


20

Як ви бачите у views-view-unformatted.html.twig , він говорить про те, що говорить також коментований вами код, про який не було змін. Тому цей шаблон не використовується для полів.

Доступні змінні:

  • title: Назва цієї групи рядків. Може бути порожнім.
  • рядки: список елементів рядків у представленні.
    • атрибути: атрибути HTML рядка
    • зміст: вміст рядка
  • view: Об'єкт перегляду.
  • default_row_class: Прапор, який вказує, чи слід використовувати класи за замовчуванням у рядках.

Якщо ви хочете використовувати поля в шаблоні представлення даних, використовуйте поля view-view - [view-name] - [machine-name] .html.twig . Там ви можете надрукувати свої поля так:

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

view_name з підкресленням, а ім'я машини з підкресленням перетворено на коми
Matoeil

1
views-view -elds.html.twig можна скопіювати з папки / core / module / views / templates і потім перейменувати як вище. Для даного представлення з ім'ям машини foobar, новим ім'ям можуть бути поля view-view - foobar.html.twig. Більш детальна інформація про іменуванні доступна тут: drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

Я знайшов спосіб за допомогою Kint. Ви можете отримати значення поля у представленнях перегляду - 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, назва, ширина, висота

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

Всередині ваших поглядів-view-unformatted.html.twig використовуйте наступний код для відображення ваших окремих полів:

{% for row in rows %}

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

{% endfor %}

Як використовувати поле зображення. Коли я використовую field_image, виходу немає. URL-адреса зображення не відображається та не відображається!
Harish 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 %}

Ідеально! Це те, що я хочу знати, дякую Ренюку.
Ніладрі Банерджі - Уттарпара

3

Вам потрібно створити три файли, щоб змінити подання за допомогою гілочок.
1. view-view - foobar.html.twig
2. views-view-unformatted - foobar.html.twig
3. views-view-field - foobar.html.twig

Призначення всіх трьох файлів описано нижче:
1: Реалізація теми за замовчуванням для шаблону основного перегляду.
2: реалізація теми за замовчуванням для відображення перегляду неформатованих рядків.
3: Шаблон перегляду за замовчуванням для відображення всіх полів у рядку.

Ви повинні використовувати "views-view-polja - 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 (), він показує масив 'нічого' у верхній частині.
Шакіл Ахмад

0

З мого досвіду, не існує простого способу перекрутити в view-views-unformatted - view-.html.twig значення з полів, що не входять до структури структури.

Дуже для друку text (plain)поля. Настільки болісно друкувати flag_field,entity_reference і так далі.

Досягнувши цього, не проходячи повний основний код перегляду, мені довелося створити цей злом:

  1. додайте підроблену сутність простого текстового поля
  2. підключити значення поля перегляду у спеціальному модулі:
  3. twig (нарешті) потрібне значення в шаблоні

Детальніше тут /drupal//a/288316/13760

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.