Ответить на свой вопрос. 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 и контекстным фильтром, который возвращает идентификаторы всех узлов из одной и той же категории продуктов, передавая текущий идентификатор узла страницы.
$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. Только в hook_alter hook $ view-> query-> где доступны параметры и $ view-> query-pager еще не определен. Это означает, что нет необходимости переписывать значение по умолчанию для пейджера-> current_page и номера продуктов категории являются доступными.
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 значения. В отличие от пейджер-> set_current_page метод может устанавливать значение страницы при любых просмотрах, даже если $ view-> pager не был инициализирован. Для меня это звучит довольно оригинально.
И спасибо за исправление моих ошибок, извините за мой плохой английский.