После просмотра сети и SE какое-то время мне кажется, что нет хорошего решения объединить 2 contextual filters
с OR (а не по умолчанию AND).
В этом посте упоминается взлом PHP, а в этом посте есть ссылки на проблему, в которой говорится о недавнем изменении представлений 7.x-3.1 . Также упоминается использование hook_views_query_alter(&$view, &$query)
для изменения вида.
У кого-нибудь есть рабочий пример или лучшее решение?
Ответы:
Попробуйте исправление в этом выпуске: извлеките значение фильтра из аргумента.
Это позволяет передавать значение из контекстного фильтра в «обычный фильтр». Там вы можете сделать свои дополнительные условия.
источник
Поток комментариев, начинающийся здесь, описывает эффективный обходной путь. MotoTribe ссылался на ту же ветку, но на момент его вопроса на этой странице не было рабочего примера. Теперь есть следующее:
В вашем модуле реализовать
hook_views_api()
:Затем добавьте в свой модуль новый файл с именем MODULENAME.views.inc и реализуйте
hook_views_query_alter()
:Также следует помнить об этом:
Очевидно, что фильтр «Содержимое: Опубликовано (Да)», который поставляется с каждым представлением, считается частью той же группы фильтров, что и контекстные фильтры (группа 0). Поэтому для того, чтобы в моем представлении отображались только опубликованные узлы, принадлежащие к любой из групп, указанных в контекстных фильтрах (опубликованные AND (arg1 ИЛИ arg2 ИЛИ ...)), мне пришлось переместить «Содержимое: Опубликованный (Да)» в новая группа фильтров (с помощью диалогового окна «И / или переупорядочить»). Обратите внимание, что пользовательский интерфейс не отображал фильтр «Содержимое: Опубликовано (Да)» по-другому после того, как я переместил его в новую группу (других групп не было), но в объекте запроса, который был передан в
hook_views_query_alter()
него, переместился это из группы 0 в группу 1, в результате чего код в вышеупомянутых функциях больше не влияет на него.источник
Существует модуль, который изменяет обработчики представлений, чтобы сделать контекстные фильтры для использования с ИЛИ вместо И: представления контекстных фильтров ИЛИ
источник
Ситуация с контекстными фильтрами и группами фильтров действительно мрачная. Вот ветка на Do об этом toppic, который имеет то же решение, что и @CoreDumpError.
https://drupal.org/node/1451218
Кроме того, вот модуль, который может помочь разрешить конфликтующие контекстные и открытые фильтры ... Вид фильтра Harmonizer
источник