Шаблон для field и fields во вьюсе для Drupal 8

Опубликовано 2016.09.12 в разделе Drupal

Информацию о шаблонах из интерфейса вьюса успешно выпилили(надеюсь не навсегда). Чтобы сделать шаблон для поля - добавьте следующий хук:
  1. function template_preprocess_views_view_field(&$vars) {
  2. $field_id = $vars['field']->options['id'];
  3. $views_name = $vars['view']->id();
  4. $display_name = $vars['view']->getDisplay()->display['id'];
  5. $vars['theme_hook_original'] = 'views_view_field__' . $views_name . '__' . $display_name . '__' . $field_id;
  6. }
для полей
  1. function template_preprocess_views_view_fields(&$vars) {
  2. $views_name = $vars['view']->id();
  3. $display_name = $vars['view']->getDisplay()->display['id'];
  4. $vars['theme_hook_original'] = 'views_view_field__' . $views_name . '__' . $display_name;
  5. }
Теперь на примере. Есть вьюс с именем last_quiz, в ней есть дисплей с именем block_1 в котором выводится поле field_image. Тогда шаблон для этого поля будет именоваться как views-view-field--last_quiz--block_1--field_image.html.twig Добавляйте в него стандартный
  1. {{ output -}}
и описывайте свои обёртки. Для всех полей - views-view-fields--last_quiz--block_1.html.twig В нём кода побольше, за основу берите код из файла views-view-fields.html.twig Сразу даю наводку. Впишите туда следующий код:
  1. {% for field_name,field in fields -%}
  2. {{ field_name }}<br />
  3. {%- endfor %}
Так вы увидите имена филдов в шаблоне. Например в моей вьюхе был заголовок, подзаголовок, боди и количество просмотров. И код выше выдал мне: title field_subtitle body totalcount Таким образом я могу обращаться к поля так:
  1. title={{ fields.title.content }}<br />
  2. field_subtitle={{ fields.field_subtitle.content }}<br />
  3. body={{ fields.body.content }}<br />
  4. totalcount={{ fields.totalcount.content }}<br />
и дальше уже оформить их в вёрстку.

0 Комментариев

Оставить комментарий

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте доллар