Коллеги, можно ли как-то модифицировать Taxonomy term view, чтобы она выводила только те ноды, в которых указан определенный набор терминов?
Allow multiple values стоит...
Однако проблема в том, что независимо от того передаю я в фильтр параметр 1+2+4 или 1,2,3 в любом случае генерится запрос на выборку любого из указанных терминов. Мне же надо чтобы был AND, а не OR.
В настройках контекстного фильтра есть странная фраза для Allow Multiple Values:
If selected, users can enter multiple values in the form of 1+2+3. Due to the number of JOINs it would require, AND will be treated as OR with this filter.
Как бы написано, что из-за большого кол-ва джойнов, AND будет рассматриваться как OR.... Что за бред? Мне же нужен AND
Что понимает, объясните, пожалуйста.
Комментарии
Каждый AND это +1 джойн.
На большом количестве терминов - будет туго.
Ну это я понимаю, но это же не повод, чтобы AND становился OR-ом
Мне надо фильтровать сразу по трем терминам, как тогда быть?
Граждане, неужели ни у кого не возникало подобной задачи? Или все как-то обходятся?
П.С. Уже второй день хожу по всем форумам, нигде нет ни одного нормального решения, везде какие-то корявые советы.
Альтерите запрос, hook_views_query_alter().
Вместо форумов рекомендуется читать API.
В чём проблема-то?
Не надо, на самом деле можно без аргументов обойтись совсем, по крайне мере, когда я исследовал этот вопрос у меня получилось обойтись исключительно фильтрами.
Таким образом я легко могу найти все товары, у которых указано оба термина таксономии, как из одного словаря так и из разных, а аргументы мне нужны были только лишь из-за того, что у меня параметры exposed фильтров передаются в виде чистых ссылок.
Тогда и проблем с ограничением на количество join-ов не будет, так как все условия фильтров уйдут в секцию where.
Очень сомневаюсь.
Покажите запрос который будет фильтровать по трём терминам, условие AND, без джойнов
Да, вы правы, без join-ов не обошлось :(. Причем именно как вы описали, чем больше фильтров по терминам, тем во столько раз больше left join-ов будет использоваться для построения перекрестной таблицы.