Понадобилось динамически назначать offset для views.
Вызываю вьюв /articles?page1=3, хочу перейти на 4-ю страницу.
{
if ($view->name == 'articles' ) {
$currpage = 0;
if ( isset($_GET['page1'])) { $currpage = $_GET['page1']; }
print "currpage=$currpage";
if ($currpage > 0) {
$items_per_page = $view->display[$view->current_display]->handler->view->get_items_per_page();
$offset = $view->display[$view->current_display]->handler->view->get_offset();
print "items_per_page=$items_per_page offset=$offset";
if ($items_per_page>0) {
$new_offset = $currpage*$items_per_page;
print "new_offset=$new_offset";
$view->display[$view->current_display]->handler->view->set_offset($new_offset);
$view->set_offset($new_offset);
$view->display[$view->current_display]->handler->view->query->pager->offset = $new_offset;
$offset2 = $view->display[$view->current_display]->handler->view->get_offset();
print "offset2=$offset2";
$offset3 = $view->get_offset();
print "offset3=$offset3";
$view->display[$view->current_display]->handler->view->query->pager->update_page_info();
}
}
}
}
На выходе получаю: "currpage=3items_per_page=10 offset=0new_offset=30offset2=30offset3=30"
Казалось бы, offset установлен, но все равно показывает первую страницу вьюва. Пробовал с вьювами с установленным pager и без него.
Views 7.x-3.8
Возможно, использую не тот hook, буду раз любым советам.