Как отобразить результаты, помеченные одним идентификатором термина, когда есть несколько фильтров
У меня есть блог в 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). как вы видите в квадратных скобках) > выберите "Заменить пробелы"> Преобразовать регистр в "нижний регистр"> нажмите "Применить"
КРИТЕРИИ ФИЛЬТРА: 'Словарь таксономии: Имя машины (= [ВАШЕ ЛЕКСИЧЕСКОЕ ИМЯ])'
Сохранить вид
Затем в Структуре> Блоки разместите блок в соответствующем регионе.
Надеюсь, это поможет кому-то!