Есть тип материала, который надо вывести отсортировав по времени. Но при этом необходимо вывод разрывать разными блоками(например банер, видео и т.д). Возможно ли это сделать одним представлением или надо создавать несколько и настраивать как-то фильтрацию, чтобы даты стыковались в местах разрыва?
Для наглядности нужен такой вывод:
нода нода нода
банер
нода нода нода
нода нода нода
банер
и т.д.
Возможен ли такой вывод одной views
Главные вкладки
Лучший ответ
1
Я бы, в препроцессоре разбил бы строки на нужное количество, присвоил бы каждый чанк переменной, заодно и "баннера" там же получил бы и подготовил, и в шаблоне уже просто рендерил бы, в нужном порядке.
Комментарии
Баннер, видео, иной контент, по каким условиям будет вставляться и откуда?
В общем случае - можно и без особых проблем.
Думаю блоком из представления. А общий и беспроблемный случай это какой?
Общий случай - это когда не требуется откуда-то ещё делать выборки по каким-то условиям, типа, если во втором материале дата раньше 2000 года, а в третьем автор Иван Иваным, то выводим видео, иначе - выводим баннер Жириновского
Да у меня не особый случай, а общий. После двух строк вывода вставляем один банер, после еще трех, другой и т.д.
Не подскажите как это сделать?
Программно немного по-колдовать с темизацией Views, и разбивать массив строк представления на необходимые чанки, переопределить шаблон и реализовать в нем вывод должным образом.
Так и думал, что надо в сторону шаблона копать. Спасибо! Был бы благодарен за ссылочку на корректную инфу)
Разобрался я вроде более менее с переопределением шаблонов. У меня views выводится Неформатированным списком. Поэтому делаю файл шаблона views-view-unformatted--page_1.html.twig, где page_1 имя представления. Но вот дальше с логикой вывода у меня проблемы. Допустим надо вывести первые 6 элементов списка.
{%
set row_classes = [
default_row_class ? 'views-row',
]
%}
<div{{ row.attributes.addClass(row_classes) }}>
{{ row.content }}
</div>
{% endfor %}
Не выводит ничего. Ошибка очевидно в первой строке, но что то не могу понять, как правильно сделать цикл.
Я бы, в препроцессоре разбил бы строки на нужное количество, присвоил бы каждый чанк переменной, заодно и "баннера" там же получил бы и подготовил, и в шаблоне уже просто рендерил бы, в нужном порядке.
Хм. Логика ясна, буду ковырять. Осталось всего лишь разобраться с препроцессором и чанком)) Спасибо
Препроцессор. Чанк - это часть массива.
Спасибо большое, буду изучать!!
реализовал так, все получилось. Заодно наконец то в шаблонах разобрался и препроцессе, а то руки не доходили. Спасибо)
Для семёрки. Можно взять за основу или попробовать портировать.