Возможен ли такой вывод одной views

Главные вкладки

Аватар пользователя svisch svisch 9 мая 2018 в 11:44

Есть тип материала, который надо вывести отсортировав по времени. Но при этом необходимо вывод разрывать разными блоками(например банер, видео и т.д). Возможно ли это сделать одним представлением или надо создавать несколько и настраивать как-то фильтрацию, чтобы даты стыковались в местах разрыва?
Для наглядности нужен такой вывод:
нода нода нода
банер
нода нода нода
нода нода нода
банер
и т.д.

Лучший ответ

Аватар пользователя bumble bumble 9 мая 2018 в 17:37
1

Я бы, в препроцессоре разбил бы строки на нужное количество, присвоил бы каждый чанк переменной, заодно и "баннера" там же получил бы и подготовил, и в шаблоне уже просто рендерил бы, в нужном порядке.

Комментарии

Аватар пользователя Semantics Semantics 9 мая 2018 в 11:52

Баннер, видео, иной контент, по каким условиям будет вставляться и откуда?
В общем случае - можно и без особых проблем.

Аватар пользователя Semantics Semantics 9 мая 2018 в 12:06

Общий случай - это когда не требуется откуда-то ещё делать выборки по каким-то условиям, типа, если во втором материале дата раньше 2000 года, а в третьем автор Иван Иваным, то выводим видео, иначе - выводим баннер Жириновского

Аватар пользователя svisch svisch 9 мая 2018 в 12:11

Да у меня не особый случай, а общий. После двух строк вывода вставляем один банер, после еще трех, другой и т.д.

Аватар пользователя bumble bumble 9 мая 2018 в 14:55
1

Программно немного по-колдовать с темизацией Views, и разбивать массив строк представления на необходимые чанки, переопределить шаблон и реализовать в нем вывод должным образом.

Аватар пользователя svisch svisch 9 мая 2018 в 15:23

Так и думал, что надо в сторону шаблона копать. Спасибо! Был бы благодарен за ссылочку на корректную инфу)

Аватар пользователя svisch svisch 9 мая 2018 в 17:33

Разобрался я вроде более менее с переопределением шаблонов. У меня views выводится Неформатированным списком. Поэтому делаю файл шаблона views-view-unformatted--page_1.html.twig, где page_1 имя представления. Но вот дальше с логикой вывода у меня проблемы. Допустим надо вывести первые 6 элементов списка.

{% for row in 0..5 %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

Не выводит ничего. Ошибка очевидно в первой строке, но что то не могу понять, как правильно сделать цикл.

Аватар пользователя bumble bumble 9 мая 2018 в 17:37
1

Я бы, в препроцессоре разбил бы строки на нужное количество, присвоил бы каждый чанк переменной, заодно и "баннера" там же получил бы и подготовил, и в шаблоне уже просто рендерил бы, в нужном порядке.

Аватар пользователя svisch svisch 15 мая 2018 в 12:22

реализовал так, все получилось. Заодно наконец то в шаблонах разобрался и препроцессе, а то руки не доходили. Спасибо)