Доброго времени суток.
Столкнулся с такой задачей.
Есть тип материала ( Условно назовем "мероприятие" ) с полем дата. Поле имеет множественное значение.
Есть 2 блока одного представления.
В верхнем выводятся все ближайшие мероприятия. Отображение - 5 первых элементов без навигации. Это организовано и работает как надо.
В нижнем блоке требуется выводить 5 мероприятий отсортированные случайным образом ( Глобальный: Случайно. С этим проблем нет ), но так чтобы не выводились мероприятия которые содержатся в верхнем блоке.
Проще говоря требуется какой то критерий фильтрации типа "Не выводить материалы содержащиеся в верхнем блоке"
Есть соображения как это можно организовать? Буду рад даже разумным советам
Комментарии
Самый простой вариант как я вижу во втором блоке установить показывать мероприятия начиная с 5 записи. Там есть возможность выбрать сколько полей пропустить.
Наверное без уточнения не обойтись.
Принимая во внимание тот факт что у одного мероприятия могут быть несколько дат имем такую структуру:
[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 ]
Попробуй количество изменять. Я не знаю других способов без кода пропускать события или сравнивать их наличие в уже выведенном блоке.
Аргументы вам помогут
А если по-конкретнее? Просто ничего раньше об этом не слышал и поэтому не знаю куда даже копать.
Актуально
А ведь решение задачи как мне кажется может быть применимо в многих проектах. Я думааю что она весьма актуальна.
Неужто нет никакого логичного решения?
получилось ли решить данную задачу? у меня логика вывода почти такая же. Есть материал новости, в нём есть чекбокс - Поместить в слайдер. Если чекбокс отмечен то материал выводится в слайдере(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;