你想使用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