drupal的view雖然好使但是在有些情況下我們想根據自己的需求來動態的修改查詢條件,這不足為過,那麼接下來就告訴你一個很好的方法來修改view的查詢條件,同時你也可以根據需求來添加查詢合法的查詢條件
1、在你的模塊中你要聲明一個這樣和鉤子
[php]
function modulename_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'modulename') . '/',
);
2、在你的模塊目錄下面創建一個文件(modulename.views.inc),用來修改view的查詢條件 ,裡面用到一個鉤子,和一個自定義方法
[php]
function modulename_views_query_alter(&$view, &$query) {
if ($view->name == 'viewname') {
$data = _get_views_operationinfo_time_key($query->where[1]['conditions']);
if (count($data) > 0) {
foreach ($data as $d) {
$query->where[1]['conditions'][$d]['value'] = strtotime($query->where[1]['conditions'][$d]['value']);
}
}
}
}
function _get_views_operationinfo_time_key($conditions) {
$data = array();
foreach ($conditions as $key => $val) {
if ($val['field'] == 'fieldname') {
$data[] = $key;
}
}
return $data;
}
以上幾個字符的意思:
1、modulename 你的模塊名字
2、viewname 你的view的機讀名字
3、fieldname 要加條件的字段的名字,這裡它是以表名.字段名來規定的
如果疑問請留言,上面的代碼如果你把$query這個大數組打印出來找到下標為where的數組元素你就會一目了然了,希望可以幫到大家。
注:上面的例子是我用來將時間日期轉換為時間戳的,當然你可以在這裡任意的改動