Вывод списка найденных материалов

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

Аватар пользователя ezhy ezhy 7 декабря 2011 в 10:27

Доброго времени!

Есть такая задача - нужно организовать что-то вроде библиотечного каталога.
Есть тип материала - публикация, в ней куча полей (авторы, название год, издательство и т.п.).
Есть шаблон node--pub.tpl.php, который выводит в форматированном по ГОСТ ноду-публикацию.

Нужно организовать поиск по этим полям ноды и вывести список найденных.
То есть я могу по таблице "..._field_data..." выбрать номера нужных нод, могу даже запихать эти ноды в массив и передать в шаблон "node--pub.tpl.php", но хочется более родных для друпала решений... Видимо можно использовать Contextual filters для Views, но как сделать фильтр не из строки браузера, а, скажем из get-параметров, т.к. полей много и по каким поиск в строке не ясно будет?..

Может есть какой-то другой механизм?..

Комментарии

Аватар пользователя ezhy ezhy 7 декабря 2011 в 11:48

Надеюсь, это не придирка на тему того, что get-параметры в строке передаются?
Я имею ввиду, что с трудом представляю как в строке указать ищу ли я по ФИО или по названию... Как на из рук-в-руки? .../search/fio=Иванов/year=2000/ ? А как потом выделять эти значения в Contextual filters?

Аватар пользователя Chyvakoff Chyvakoff 7 декабря 2011 в 17:40

Во вьюсе эти контекстные переменные просто через слэш идут..
/search/Иванов/2000/
вьюха их как то подцепляет.

Не совсем понятна твоя задача...

Аватар пользователя Chyvakoff Chyvakoff 8 декабря 2011 в 10:37

/search/2000/ ?
и во вьюс только один фильтр.

Я не понимаю-в чем проблема сделать нужные фильтры во вьюсе и сделать их раскрытыми-чтоб посетитель мог сам выбирать из них значения?

Аватар пользователя ezhy ezhy 8 декабря 2011 в 13:12

Chyvakoff, А если ищу наоборот только по году? то РУЛ /search/Иванов/... и как дать понять, что Иванов - это не год?...

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

Спасибо за ответы!