Вы хотите использовать hook_views_query_alter () , хотя я специально не изменил предложение WHERE, я изменил предложение SORTBY, и идея обоих должна быть относительно похожей.
Вот небольшой фрагмент кода:
function my_module_views_query_alter(&$view, &$query) {
switch ($view->name) {
case 'view1':
$args = _my_module_get_querystring();
switch ($args['condition']) {
case 'condition1':
$query->where[0]['args'][0] = 1;
break;
case 'condition2':
$query->where[0]['args'][0] = 2;
break;
}
break;
}
}
/**
* Returns querystring as an array.
*/
function _my_module_get_querystring() {
$string = drupal_query_string_encode($_REQUEST, array_merge(array('q'), array_keys($_COOKIE)));
$args = explode('&', $string);
foreach ($args as $id => $string) {
unset($args[$id]);
$string = explode('=', $string);
$args[$string[0]] = str_replace(' ', '-', $string[1]);
}
return $args;
}
Этот конкретный фрагмент позволит вам изменить предложение WHERE, используя строку запроса (? Условие = условие1), но вы можете изменить его, чтобы получить аргументы по вашему желанию.
Надеюсь, это поможет.