Я почти уверен, что вы можете сделать это с hook_views_pre_build (&$view)
. Я точно знаю, что вы можете связываться с $view->pager
, чтобы обновить, использовать пейджер или нет, и изменить количество элементов на странице.
Это фрагмент из пользовательского модуля, который я сделал:
if (is_numeric($perpage) && (int) $perpage > 1) {
$view->pager["items_per_page"] = (int) $perpage;
} else if ($perpage == "all") {
$view->pager["use_pager"] = false;
$view->pager["items_per_page"] = 0;
}
Я подозреваю, что вы можете выключить пейджер, а также настроить элементы на странице, чтобы ограничить результаты.
EDIT:
ОК, только что увидел часть об открытом фильтре. Фрагмент кода на самом деле взят из фрагмента кода, который имитирует открытый фильтр для этого случая. На странице есть несколько ссылок для выбора количества элементов на странице. Ссылки обновляют страницу и задают параметр perpage=whatever
. Затем ловушка дезинфицирует ввод и в основном выполняет приведенный выше фрагмент кода. Я также сделал нечто похожее, используя HTML выбор, а затем подключил параметр с обновлением с помощью jQuery.