Фильтр во views с диапазоном от и до, где от и до задаются пользователем
Долго рылся на форуме, на родном сайте друпала и вообще гугли и не нашел красивого решения поставленной задачи (может плохо искал):
Необходимо вывести во views материалы по полю От и До, ну напр. Цена От и До, где От и До задаются через форму пользователем или берутся через url или через переменную $arguments передаются, не важно, главное что views изначально не знает этих величин а получает при построениии.
Хочу поделиться своим решением, вроде легкое и без правки ядра )
1) естественно во views -> страница -> путь пишем что_то_там/% (для того ч.б. передавать аргументы из url) с галочкой Exclude the argument (ч.б. views из брал, но внимания на значения не обращал)
2) в фильтрах прописываем Cодержимое: наше_поле between 123 and 456 (числа значения не имеют, мы их заменим на нужные)
3) в самописном модуле вставляем всего одну функцию
<?phpfunction имя_модуля_views_query_alter(&$view, &$query) {
if ($query->name == 'hot_full_search'){
//drupal_set_message('<pre>'. print_r($view, 1).'</pre>',status);
$query->where['0']['args']['1'] = $view->args['1'];
$query->where['0']['args']['2'] = $view->args['2'];
//drupal_set_message('<pre>'. print_r($query, 1).'</pre>',status);
return $query;
}
}
?>
Смысл в том что аргументы берутся из views, где они уже известны и заменяют оба "левых" числа (123 и 456) в sql запросе.
Значения номеров аргументов и результат можно посмотреть, если снять комментарии.
Надеюсь пригодится.