Долго рылся на форуме, на родном сайте друпала и вообще гугли и не нашел красивого решения поставленной задачи (может плохо искал):
Необходимо вывести во 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 запросе.
Значения номеров аргументов и результат можно посмотреть, если снять комментарии.
Надеюсь пригодится.
Комментарии
хм, не запускается хук
может я не с той стороны по бубну бью?
у вас он в отдельном файле?
я так понимаю expose фильтры уже не в моде?![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
у меня в конце селекта
ORDER BY node_data_field_rv_news_date_field_rv_news_date_value DESC
а надо чтобы было >= и <= , ну при чем тут expose?
все, я понял, документация про этот хук феерически звездит, надо все класть в .module
)) Ну собственно как и было написано в пункте 3 «в самописном модуле вставляем всего одну функцию»