回答自己的問題。 Solution for Drupal 5/6(不知道的版本)
其他一些有益的信息 https://drupal.stackexchange.com/questions/1561/is-it-possible-to-dynamically-set-views-pager-settings
https://drupal.stackexchange.com/questions/16046/alter-pagination-start-index
混合的信息後,我寫了簡單的解決方案爲Drupal 7
當用戶要從產品的節點,他可以跳轉到當前類別中的任何其他產品。 這就是爲什麼我通過啓用ajax和上下文過濾來創建視圖,該過濾器通過傳遞當前頁面節點ID來返回來自同一產品類別的所有節點的ID。
$n_id = intval(arg(1));
$nnm = db_query("select t.nid from {taxonomy_index} t left join {node} n on n.nid = t.nid where t.tid = (select t2.tid from {taxonomy_index} t2 where t2.nid = :vid) order by n.title", array(':vid' => $n_id));
$res= array();
if ($nnm->rowCount()) {
foreach ($nnm as $row) $res[]= $row->nid;
$handler->argument= implode('+', $res);
return true;
} else {
return false;
}
在自定義模塊爲我的產品的詳細信息視圖我加hook_views_query_alter。 只有在query_alter鉤子$ view-> query->其中參數可用並且$ view-> query-pager尚未定義。這意味着無需重寫默認值pager-> current_page和產品類別的nid是可用的。
function [modulename]_views_query_alter(&$view) {
//$_GET['wtf'] -- variable to check first view load
if ($view->name == "view_name" && $view->current_display == 'view_display' && !isset($_GET['wtf'])) {
//Search current node id ($view->args[0]) in all category's nodes
$res= array_search($view->args[0], $view->query->where[0]['conditions'][0]['value'][':node_nid']);
if ($res) {
//$view->set_current_page($res);
//Set page id for pager
$_GET['page']= $res;
}
$_GET['wtf']= 2;
}
}
奇怪的是,有這樣的方法沒有提及提供pager-> CURRENT_PAGE值。 不同於pager-> set_current_page方法,即使$ view-> pager未被初始化,它也可以在任何視圖掛鉤處設置頁面值。這聽起來很適合我。
謝謝你糾正我的錯誤,我很抱歉我的英語不好。