Как отобразить результаты, помеченные одним идентификатором термина, когда есть несколько фильтров

У меня есть блог в Drupal 7, и я использовал Views для отображения полей. У меня есть 2 набора тегов, отображаемых на боковой панели:

1) SHAPES

Triangle

Square

Rectangle

2) COLOR

Red 

Blue 

Green

Я создал 2 группы тегов через Структура> Таксономия> Словарь> Добавить термин

Для просмотра я создал один вид с двумя открытыми фильтрами (аналогично тому, что было сделано в этом уроке)

ПОСМОТРЕТЬ:

Path: '/blog/tag'

Filter Criteria:
    1) 'Content: Shape (exposed)'

        Exposed form in Block: 'Yes'

        Filter identifier: 'shape_id'

    2) 'Content: Color (exposed)'

        Exposed form in Block: 'Yes'

        Filter identifier: 'color_id'

Exposed form style: BEF

Открытые фильтры устанавливаются на соответствующую область блока в Структура> Блоки.

Если я нажимаю "треугольник", должны отображаться только сообщения блога с тегом "треугольник". Затем, если я нажму "красный", должны отображаться только сообщения с тегом "красный".

Похоже, что правильные сообщения в блоге отображаются, когда я нажимаю на условия. К URL-адресу добавляются идентификаторы из обоих словарей, но я не могу отобразить нужные комбинации.

Желаемый URL при нажатии "треугольник": "/blog/tag/? Shape_id=1&color_id=All"

Желаемый URL при нажатии на "красный": "/blog/tag/? Shape_id=All&color_id=1"

Таким образом, по существу результаты должны отображать элементы, помеченные одним идентификатором термина.

Однако, как это работает в настоящее время, так это то, что если я нажимаю "треугольник", а затем "красный", то и "треугольник", и "красный" имеют класс "выбранный" (оба выделены жирным шрифтом), а URL-адрес: "/ blog / тег /? shape_id = 1 & color_id = 1'

Единственный способ, которым я смог получить нужные URL-адреса, - это отобразить опцию "-Any-". Тем не менее, у меня есть сценарий использования, который НЕ должен содержать '-Any-' в списке тегов.

Возможно ли это даже без "-Any-", перечисленных в списке терминов? Раньше я никогда не использовал несколько открытых фильтров, поэтому было бы здорово, если бы я исследовал это почти неделю. В другом посте я читал, что контекстные фильтры позволили бы мне создавать отдельные псевдонимы пути, которые являются чистыми URL-адресами, но я не смог это сделать.

Любая помощь будет принята с благодарностью. Спасибо за ваше время.

1 ответ

Решение

Я пытался использовать метод термина страниц таксономии, но не мог понять, как правильно отображать поля. Отображаемые поля были основаны на тизере в моем типе контента блога. И использование параметра открытого фильтра не было решением, так как мой вариант использования заключался в отображении результатов только на основе одного тега. Что сработало для меня:

1) Добавить новый вид в существующий блог

2) ФОРМАТ: "Неформатированный список" ПОКАЗАТЬ: "Поля"

3) ПОЛЯ: [добавьте поля, которые вам нужны отображаются]

4) КРИТЕРИИ ФИЛЬТРА: "Содержание: опубликовано (да)"; 'Content: Type (= Blog)'

5) ПУТЬ: '/blog/[ВАШЕ ЛИЧНОЕ ИМЯ] /%'

6) КОНТЕКСТНЫЕ ФИЛЬТРЫ: "Содержимое: имеет идентификатор таксономического термина"

КОГДА ЗНАЧЕНИЕ ФИЛЬТРА НЕ В URL: "Показать все результаты для указанного поля"

КОГДА ЗНАЧЕНИЕ ФИЛЬТРА В URL ИЛИ ПРЕДОСТАВЛЯЕТСЯ ПО УМОЛЧАНИЮ: выберите "Переопределить заголовок" и в поле ввода введите: "[ВАШЕ ИМЯ ЛЕКСИКА] / %1"

выберите "Указать критерии проверки"

В раскрывающемся списке Валидатор выберите "Термин таксономии"

Словари: выберите подходящее название словаря

Раскрывающийся список типов значений фильтра: "Имя термина преобразуется в идентификатор термина"

выберите "Преобразовать тире в URL в пробелы в значениях фильтра имен терминов"

Действие, которое необходимо предпринять, если значение фильтра не проверяется: выберите подходящий, который соответствует вашим потребностям (в моем случае: "Показать содержимое" Результаты не найдены "")

Если вам нужно отобразить имя термина в заголовке на странице результатов, в том же представлении> HEADER> Добавить "Global: Нефильтрованный текст"> затем в текстовой области добавьте что-то вроде "ПРОСМОТР РЕЗУЛЬТАТОВ ДЛЯ [ВАШЕГО ЛЕКСИКА]] / %1"

Сохранить вид. Поскольку у меня было несколько фильтров, я клонировал вышеупомянутое представление и переименовал все. Итак, я добавил 3 дополнительных просмотра в мой существующий блог.

Ранее я задавал псевдонимы URL для терминов таксономического термина, поэтому я удалил эти

Кроме того, мне пришлось вернуться к моим Условиям таксономии индивидуально и удалить псевдоним URL, созданный из шаблона.

Чтобы список тегов отображался справа с желаемой структурой URL / blog / [ВАШЕ ИМЯ ЛЕКСИКИ]/[ВАШЕ ИМЯ ТЕРМИНАЛА], я создал отдельный новый вид:

ПОКАЗАТЬ: "Условия таксономии" типа "[ВАШЕ ЛЕКСИЧЕСКОЕ ИМЯ]"

Создать блок

"Неформатированный список" полей

ОБЛАСТИ: "Таксономия: название термина"> щелкните по нему и снимите флажок "Связать это поле со страницей термина таксономии". Затем разверните раздел "Перезаписать результаты" и выберите "Вывести это поле как ссылку"> в пути ссылки: "блог / [ВАШЕ ИМЯ ЛЕКСИКА]/[имя]" (должно появиться [имя] в конце структуры URL). как вы видите в квадратных скобках) > выберите "Заменить пробелы"> Преобразовать регистр в "нижний регистр"> нажмите "Применить"

КРИТЕРИИ ФИЛЬТРА: 'Словарь таксономии: Имя машины (= [ВАШЕ ЛЕКСИЧЕСКОЕ ИМЯ])'

Сохранить вид

Затем в Структуре> Блоки разместите блок в соответствующем регионе.

Надеюсь, это поможет кому-то!