Как перенаправить открытый фильтр запроса на страницу результатов просмотров, которая находится на другой странице панели?

8

Мои настройки: Drupal 7.2, Panels 7.x-3.0-alpha3, Views 7.x-3.0-beta3, набор инструментов Chaos 7.x-1.0-beta1

Скажем, я хочу создать сайт каталога фруктов. В представлениях у меня есть панель контента "Фрукты" с открытыми фильтрами на основе таксономии "Цвет". Веб-сайт должен иметь две страницы панели. На первой странице панели отображается только открытое поле фильтра «Поиск фруктов» с раскрывающимися списками «Цвет» и кнопкой поиска. При выборе из выпадающего списка и нажатии кнопки поиска пользователь должен быть перенаправлен на вторую страницу панели, которая включает в себя панель содержимого представления, отображающую список фруктов, которые соответствуют фильтру (цвету).

Проблема в том, что открытое поле фильтра на первой странице не будет перенаправлено на страницу результатов после нажатия кнопки «Применить». Как мне настроить виды и панели для достижения этой цели?

Andreas
источник

Ответы:

7
function hook_form_alter(&$form, &$form_state, $form_id) {  
  if ($form_id=='views_exposed_form') {
    global $base_url;
    $form['#action'] = $base_url.'/path_that_you_want'; 
  }
}
118218
источник
Это работает нормально, но вместо использования $ base_url, я думаю, вы, вероятно, должны использовать url('path_that_you_want').
Джон Фиала
1
Я попытался это безуспешно. На самом деле мой атрибут 'action' говорит о другом месте назначения. Как я могу это исправить?
Сократис
Эй, где я могу добавить этот код, пожалуйста, дайте мне знать Спасибо
React Developer
0

Я не уверен, что есть «правильный» путь, но я сделал это, написав hook_form_alter для открытой формы фильтра, чтобы изменить место назначения.

Не идеально, но я получил нужные результаты.

Марк Ферри
источник
Как ты это сделал? Не могли бы вы опубликовать свой код?
Michiel
0

Самое простое решение - это

  • Создать страницу просмотров
  • Создать открытый вид
  • Под Advanced> открытая форма. Установите «открытая форма в блоке: да»
  • Добавьте блок «Exposed form: ...» на нужную титульную страницу.
Interlated
источник
0

Самое простое решение - создать страницу представлений. Создать открытую панель в разделе «Дополнительно»> открытая форма. Установите «Открытая форма в блоке: Да» Добавьте блок «Открытая форма: ...» на нужную титульную страницу.

Формула Interlated, приведенная выше, дала мне половину пути к открытому блоку фильтра, который позволяет открывать и отображать результаты на новой странице.

Однако мне также нужно было, чтобы блок фильтров был на этой странице результатов. Поэтому я прикрепил форму (блок фильтра) через область просмотра в заголовке. Затем я столкнулся с рекурсивным поведением, когда оба отображаются в одном и том же виде.

Чтобы решить эту проблему, я разделил два дисплея (страница и блок) на их собственные соответствующие представления - создал один блок в качестве открытого фильтра, который включал поля для результатов, а затем совершенно новое представление для страницы с URL-адресом. В представлении страницы есть одно поле (заголовок), которое перезаписывается как пробел (в основном потому, что результаты будут избыточными, но также неточными - я обнаружил, что результаты были точно отображены из полей в открытом блоке фильтра). Я сохранил одни и те же параметры фильтрации между обоими дисплеями и использовал фильтры лучшего качества, используя ajax на обоих дисплеях.

Я сделал это в D8, но, вероятно, будет таким же на 7.

vrwired
источник