Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

views и contextual filter

views и contextual filter
, by

Прошу помощи!

Создан тип материала с несколькими полями, в частности "Категория" (таксономия) и "Cтоимость" (числовое поле)

Задача состоит в следующем на странице, созданной views при помощи контекстных фильтров вывести материалы, удовлетворяющие параметрам категория/стоимость от/стоимость до

Т.е. на выходе получаем страницу вида seite.ru/search/110/100/1000, где 110 - tid термина, от 100 до 1000 - ценовые рамки. Видел на одном сайте (сайт на друпале был точно) такую реализацию.

Собственно вопрос как настроить фильтры для числовых полей?

Вот о чем речь: http://firmaterra.ru/poisk.html кликните на кнопку "Поиск" и посмотрите на URL

Заранее благодарю!

1 answer
votes: 705
Answer

Здравствуйте,

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-фреймворку и посмотреть как там выборку из БД делают.