Мои настройки: Drupal 7.2, Panels 7.x-3.0-alpha3, Views 7.x-3.0-beta3, набор инструментов Chaos 7.x-1.0-beta1
Скажем, я хочу создать сайт каталога фруктов. В представлениях у меня есть панель контента "Фрукты" с открытыми фильтрами на основе таксономии "Цвет". Веб-сайт должен иметь две страницы панели. На первой странице панели отображается только открытое поле фильтра «Поиск фруктов» с раскрывающимися списками «Цвет» и кнопкой поиска. При выборе из выпадающего списка и нажатии кнопки поиска пользователь должен быть перенаправлен на вторую страницу панели, которая включает в себя панель содержимого представления, отображающую список фруктов, которые соответствуют фильтру (цвету).
Проблема в том, что открытое поле фильтра на первой странице не будет перенаправлено на страницу результатов после нажатия кнопки «Применить». Как мне настроить виды и панели для достижения этой цели?
источник
url('path_that_you_want')
.Я не уверен, что есть «правильный» путь, но я сделал это, написав hook_form_alter для открытой формы фильтра, чтобы изменить место назначения.
Не идеально, но я получил нужные результаты.
источник
Самое простое решение - это
источник
Формула Interlated, приведенная выше, дала мне половину пути к открытому блоку фильтра, который позволяет открывать и отображать результаты на новой странице.
Однако мне также нужно было, чтобы блок фильтров был на этой странице результатов. Поэтому я прикрепил форму (блок фильтра) через область просмотра в заголовке. Затем я столкнулся с рекурсивным поведением, когда оба отображаются в одном и том же виде.
Чтобы решить эту проблему, я разделил два дисплея (страница и блок) на их собственные соответствующие представления - создал один блок в качестве открытого фильтра, который включал поля для результатов, а затем совершенно новое представление для страницы с URL-адресом. В представлении страницы есть одно поле (заголовок), которое перезаписывается как пробел (в основном потому, что результаты будут избыточными, но также неточными - я обнаружил, что результаты были точно отображены из полей в открытом блоке фильтра). Я сохранил одни и те же параметры фильтрации между обоими дисплеями и использовал фильтры лучшего качества, используя ajax на обоих дисплеях.
Я сделал это в D8, но, вероятно, будет таким же на 7.
источник