Нужно отобрать материалы с полем таксономии (множественное значение поля), чтобы в них присутствовали все термины, переданный по параметру.
Включил в контекстных фильтрах "Разрешение на множественные значения"
"Если выбрано, пользователь сможет ввести несколько значений в виде 1+2+3 (для OR), или 1,2,3 (для AND)."
Однако обнаружил, что SQL запрос не меняется, остается одним и тем же, хоть при параметрах /1+2+3 , хоть при параметрах /1,2,3
Надеюсь, что есть какой либо патч или альтернативное решение. Или это глухарь?
Поделитесь пожалуйста вашим опытом решения подобной задачи.
Спасибо.
Комментарии
Фасеты не?
Может и так. К своему стыду с предложенной вами темой столкнулся впервые) Буду изучать. Спасибо.
Хм.. много раз читал про эту возможность , "комбинировать" несколько айди в контекстных фильтрах, но ни разу даже придумать не смог, как это можно использовать..
Этож надо такие урлы руками писать?
не проще этим сущностям, айди которых используются в запросе назначить некий тег (термин таксономии) и выбирать по термину?
Словарь таксономии - не простая иерархия, а с отношениями N:M, то есть у одного тега, может быть много родителей. А это по сути и есть "фасеты"....
То есть эффект фасет, можно получить гораздо дешевле и без дополнительных модулей, только через каталог.
Но к сожалению views 3 не отрабатывает так как заявлено
Не обязательно. Можно просто передавать контекст.
Мне встречались подобные кейсы, в основном что-то вроде "вывод представления смежных категорий".
Адекватно все работает.
Скорее всего "наворотили" что-то и получаете какие-нибудь значения по умолчанию.
Либо, неверно предполагаете/определяете, "что SQL запрос не меняется".
Drupal 6 - пишут что работает.
А вот Drupal 7 - нет.
Запрос простейший, и он не меняется:
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
Кроме в разделе "Ещё", в критериях проверки, множественное значение указано?
Галка "Укажите критерии проверки" -> Термин таксономии -> Тип значения фильтра: ID терминов, разделенные ',' или '+'.
Попробовал. Эффекта не последовало. Все равно 1,2,3 (AND) работает как и 1+2+3 (OR)
В этой ситуации, я поступил так:
1. Включил агрегацию
2. Поставил фильтр на количество(nid )=5, где 5 - количество множественных параметров.
Таким образом запрос "или" (а мы поняли, что только он и отрабатывает), начинает работать как "и"!
Правильно будет работать, только при фиксированном количестве множественных параметров(и неповторяемости параметров внутри этого множества). Ну или в крайнем случае, по необходимости, можно менять количество в выражении фильтра "количество(nid )=5" в хуке.