Views 3 - не работают в контекстном фильтре множественные значения 1,2,3 (для AND) ?

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

Аватар пользователя merlin merlin 17 сентября 2018 в 14:23

Нужно отобрать материалы с полем таксономии (множественное значение поля), чтобы в них присутствовали все термины, переданный по параметру.

Включил в контекстных фильтрах "Разрешение на множественные значения"
"Если выбрано, пользователь сможет ввести несколько значений в виде 1+2+3 (для OR), или 1,2,3 (для AND)."

Однако обнаружил, что SQL запрос не меняется, остается одним и тем же, хоть при параметрах /1+2+3 , хоть при параметрах /1,2,3

Надеюсь, что есть какой либо патч или альтернативное решение. Или это глухарь?
Поделитесь пожалуйста вашим опытом решения подобной задачи.
Спасибо.

Комментарии

Аватар пользователя merlin merlin 17 сентября 2018 в 19:18

Может и так. К своему стыду с предложенной вами темой столкнулся впервые) Буду изучать. Спасибо.

Аватар пользователя Orion76 Orion76 17 сентября 2018 в 21:49

Хм.. много раз читал про эту возможность , "комбинировать" несколько айди в контекстных фильтрах, но ни разу даже придумать не смог, как это можно использовать..
Этож надо такие урлы руками писать?
не проще этим сущностям, айди которых используются в запросе назначить некий тег (термин таксономии) и выбирать по термину?

Аватар пользователя merlin merlin 18 сентября 2018 в 10:52

Словарь таксономии - не простая иерархия, а с отношениями N:M, то есть у одного тега, может быть много родителей. А это по сути и есть "фасеты"....
То есть эффект фасет, можно получить гораздо дешевле и без дополнительных модулей, только через каталог.
Но к сожалению views 3 не отрабатывает так как заявлено

Аватар пользователя bumble bumble 18 сентября 2018 в 18:14

Orion76 wrote:

Этож надо такие урлы руками писать?

Не обязательно. Можно просто передавать контекст.
Мне встречались подобные кейсы, в основном что-то вроде "вывод представления смежных категорий".

Аватар пользователя adano adano 17 сентября 2018 в 22:34

Адекватно все работает.
Скорее всего "наворотили" что-то и получаете какие-нибудь значения по умолчанию.
Либо, неверно предполагаете/определяете, "что SQL запрос не меняется".

Аватар пользователя merlin merlin 18 сентября 2018 в 10:21

Drupal 6 - пишут что работает.
А вот Drupal 7 - нет.
Запрос простейший, и он не меняется:

SELECT node.created AS node_created, node.nid AS nid
FROM
{node} node
LEFT JOIN {field_data_field_vedastru} field_data_field_vedastru ON node.nid = field_data_field_vedastru.entity_id AND (field_data_field_vedastru.entity_type = 'node' AND field_data_field_vedastru.deleted = '0')
WHERE (( (field_data_field_vedastru.field_vedastru_tid IN('164', '157') ) )AND(( (node.status = '1') AND (node.type IN  ('blog')) )))
ORDER BY node_created DESC
LIMIT 10 OFFSET 0
Аватар пользователя 7Rei 7Rei 17 сентября 2018 в 23:51

Кроме в разделе "Ещё", в критериях проверки, множественное значение указано?
Галка "Укажите критерии проверки" -> Термин таксономии -> Тип значения фильтра: ID терминов, разделенные ',' или '+'.

Аватар пользователя merlin merlin 18 сентября 2018 в 10:41

В этой ситуации, я поступил так:
1. Включил агрегацию
2. Поставил фильтр на количество(nid )=5, где 5 - количество множественных параметров.
Таким образом запрос "или" (а мы поняли, что только он и отрабатывает), начинает работать как "и"!

Правильно будет работать, только при фиксированном количестве множественных параметров(и неповторяемости параметров внутри этого множества). Ну или в крайнем случае, по необходимости, можно менять количество в выражении фильтра "количество(nid )=5" в хуке.