Вывод одного материала в разных блоках Views

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

Аватар пользователя AlexFreem AlexFreem 20 ноября 2012 в 10:55

Доброго времени суток.

Столкнулся с такой задачей.

Есть тип материала ( Условно назовем "мероприятие" ) с полем дата. Поле имеет множественное значение.
Есть 2 блока одного представления.
В верхнем выводятся все ближайшие мероприятия. Отображение - 5 первых элементов без навигации. Это организовано и работает как надо.
В нижнем блоке требуется выводить 5 мероприятий отсортированные случайным образом ( Глобальный: Случайно. С этим проблем нет ), но так чтобы не выводились мероприятия которые содержатся в верхнем блоке.

Проще говоря требуется какой то критерий фильтрации типа "Не выводить материалы содержащиеся в верхнем блоке"

Есть соображения как это можно организовать? Буду рад даже разумным советам Smile

Комментарии

Аватар пользователя Lotar Lotar 20 ноября 2012 в 12:58

Самый простой вариант как я вижу во втором блоке установить показывать мероприятия начиная с 5 записи. Там есть возможность выбрать сколько полей пропустить.

Аватар пользователя AlexFreem AlexFreem 20 ноября 2012 в 13:27

Наверное без уточнения не обойтись.

Принимая во внимание тот факт что у одного мероприятия могут быть несколько дат имем такую структуру:

[1] - Даты: 20го ноября в 7:00; 20го ноября в 12:00; 20го ноября в 19:00; 21го ноября в 20:00;
[2] - Даты: 20го ноября в 8:00; 20го ноября в 13:00; 20го ноября в 20:00;
[3] - Даты: 22го ноября в 14:00;

В таком случае верхний блок у меня должен выглядеть ( и выглядит ) следующим образом.
[1 - 20го ноября в 7:00 ] [2 - 20го ноября в 8:00 ] [ 1 - 20го ноября в 12:00 ] [ 2 - 20го ноября в 13:00 ] [ 1 - 20го ноября в 19:00 ]

Нижний же блок должен выглядеть просто так:
[ 3 - 22го ноября в 14:00 ]

А по вашей логике 6-м элементом ( с пропущенными 5-ю из верхнего блока ) будет [ 2 - 20го ноября в 20:00 ]

Аватар пользователя Lotar Lotar 20 ноября 2012 в 15:00

Попробуй количество изменять. Я не знаю других способов без кода пропускать события или сравнивать их наличие в уже выведенном блоке.

Аватар пользователя AlexFreem AlexFreem 20 ноября 2012 в 17:31

"jerboa7" wrote:
Аргументы вам помогут

А если по-конкретнее? Просто ничего раньше об этом не слышал и поэтому не знаю куда даже копать.

Аватар пользователя AlexFreem AlexFreem 23 ноября 2012 в 13:29

А ведь решение задачи как мне кажется может быть применимо в многих проектах. Я думааю что она весьма актуальна.
Неужто нет никакого логичного решения?

Аватар пользователя mozh mozh 9 февраля 2014 в 13:47

получилось ли решить данную задачу? у меня логика вывода почти такая же. Есть материал новости, в нём есть чекбокс - Поместить в слайдер. Если чекбокс отмечен то материал выводится в слайдере(4 слайда максимум), если нет, то материал отображаются в другом блоке, "другие".
Теперь проблема: если у меня есть 6 материалов с чекбоксами - Поместить в слайдер, то в его(слайдер) влазит только 4, а остальное нужно перемещать в блок "другие". Как сделать условие фильтрации: если не влазит в один блок отображать в другом, даже если есть чекбокс поместить в слайдер? Пропустить 4 материала, не совсем подходит.

Установил модуль views php. Во views добавил фильтр Глобальный php и написал в нём такой код:
$result = db_query("SELECT `entity_id` FROM `field_data_field_on_main` where field_on_main_value = 1 ORDER BY entity_id DESC LIMIT 0,4");//выбираем id последних 4-х записей у которых поле Поместить в слайдер(field_data_field_on_main) отмечено галочкой(where field_on_main_value = 1)
foreach ($result as $record) {
$entity_id[] = $record->entity_id;//записываем id в массив
}
if($row->nid == $entity_id[0] || $row->nid == $entity_id[1] || $row->nid == $entity_id[2] || $row->nid == $entity_id[3])// и тут кривая)) проверка если хоть один id совпадает, то отправляем true(фильтр срабатывает)
return TRUE;