你想使用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;
}
这种特殊的一块将允许您使用查询字符串(?条件=条件1)改变WHERE子句,但你可以改变它得到的参数,但是你希望。
希望这会有所帮助。
我想我的大脑只是爆炸......但感谢的代码示例!我想是时候做一些关于模块开发的东西了,然后查看挂钩来理解这些位的含义。任何推荐的教程? – Nicholai 2010-02-09 14:28:52