Фильтрация результата поиска через Views + exposed filters.

Главные вкладки

Аватар пользователя OlegPshenichniy OlegPshenichniy 14 сентября 2011 в 22:47

Ребята нужна помощь. Есть поиск (стандартный модуль Search), нужно перехватить как-то страницу результата, чтоб на ней появились Exposed filters для дальнейшей фильтрации результата поиска.
Поиск в фильтрах Views не подходит так как на поиск и на фильтры будет одна кнопка, а нужно чтоб на поиск была своя кнопка, при на нажатии на которую попадем на страницу результата который должен как-то 'воткнуться' в views чтоб иметь возможность дальше его фильтровать. Знаю что как то просто делается. Программировать здесь не нужно.Заранее спасибо!!!!

Комментарии

Аватар пользователя OlegPshenichniy OlegPshenichniy 15 сентября 2011 в 12:09

Поиск перекидует на страницу search/node/...(искомое). Если во вьюс указать такой адрес (search/node/%) то выводиться все что задано во вьюсе, а поиск игнорируеться. Нужно чтоб после поиска результат как то попал во вьюс и дальше была возможность его фильтровать. Помогите решить задачу . Застрял на ней сильно. Спасибо.

Аватар пользователя bredov bredov 15 сентября 2011 в 13:55

нужно понимать, что в поиске ищется - часть заголовка, материала, термин или еще чего. Устанавливаете во вьюхе аргумент, он берет % из урла и действует как динамический фильтр. Рекомендую к просмотру http://mustardseedmedia.com/podcast/episode39 , все отлично объяснено и показано.

Аватар пользователя Orion76 Orion76 15 сентября 2011 в 15:21

чет чето нето-)))
Наверное лучше попробовать из формы поиска получить массив Идентификаторов найденных материалов и передать его в аргументы вьюса... а уже во вьюсе их фильтровать..

Напрмер к форме поиска через hook_form_alter добавить свой функцию-обработчик сабмита.
В ней получить массив идентификаторов и программно вывести вьюс, передав ему в аргументы полученный массив.

Аватар пользователя NIKS_ArtReaktor NIKS_ArtReaktor 22 декабря 2011 в 19:54

может сделать две вьюхи.
В одной прописать вид page например адрес searchresult
и сделать exposed filter по заголовку например.
и поставить галку Раскрытая форма в блоке: ДА.

Здесь адрес нужен только для form="action".
Или модулем прописать форм экшн.
function mymod_form_alter(&$form, $form_state, $form_id){
if($form['#id'] == 'views-exposed-form-formaresults-catalog-1'){
$form['#action'] = '/searchresult';
}
}
на счет правильности адреса неуверен - $form['#action'] = '/searchresult';

а потом сделать еще одину вьюху с таким же видом и адресом searchresult
И уже здесь создать фильтры нужные.

которая уже получит данную переменную в адресе ?title=testtitle

и уже в зависимости от нее выведет результат вьюхой в которой уже есть фильтры.