views и contextual filter
Прошу помощи!
Создан тип материала с несколькими полями, в частности "Категория" (таксономия) и "Cтоимость" (числовое поле)
Задача состоит в следующем на странице, созданной views при помощи контекстных фильтров вывести материалы, удовлетворяющие параметрам категория/стоимость от/стоимость до
Т.е. на выходе получаем страницу вида seite.ru/search/110/100/1000, где 110 - tid термина, от 100 до 1000 - ценовые рамки. Видел на одном сайте (сайт на друпале был точно) такую реализацию.
Собственно вопрос как настроить фильтры для числовых полей?
Вот о чем речь: http://firmaterra.ru/poisk.html кликните на кнопку "Поиск" и посмотрите на URL
Заранее благодарю!
Здравствуйте,
1) Форму делаем через drupal forms API, пишем массив в своем модуле, выводим форму в виде блока на странице, страницу лучше всего добавить с помощью хука hook_menu().
2) Форма ссылается на ту же страницу, поэтому пишем обработку этой формы на этой же странице.
3) После обработки формы делаем редирект на другую страницу (где урл с аргументами), которую мы также делаем через hook_menu(), на странице обработки мы считываем аргументы через arg(). Делаем запрос к БД и выводим как нам нужно, главное получить массив нод которые будем выводить. А выводить уже можно тизерами как здесь написано:
http://stackoverflow.com/questions/9358298/print-node-teaser-from-nid
Если нужен пагинатор на странице, то нужно делать запрос вот так:
http://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_select/7#comment-23858
Возможно есть готовые решения с помощью Views, chaos tools и одним из этих модулей:
http://drupal.org/project/facetapi
http://drupal.org/project/search_facetapi
http://drupal.org/project/zend_lucene
Но я бы советовал вам открыть любой учебник по PHP или любому php-фреймворку и посмотреть как там выборку из БД делают.