Доброго времени суток.
Есть вьюха которая выводить определённый тип контента. Пагинация по умолчанию настроена на 20 нод на странице.
По мимо постраничной навигации, есть ещё дропдаун с количеством выводимых элементов на странице. Не подскажите, как реализовать его функционал? Что-то в интернетах не могу ничего найти на столь тривиальную задачку...
Комментарии
Короче, выкрутился как-то так.
Без аякса.
Нагуглил про hook_views_pre_build():
<?php
function qph_common_views_pre_build(&$view) {
// Make sure this is only for the specific view you want to modified
if ($view->name == "my_view_name" && isset($_GET['per_page'])) {
$view->set_items_per_page(intval($_GET['per_page']));
}
}
?>
Далее, преобразовал свой дропдаун вот так:
<option <?php if(isset($_GET['per_page']) && $_GET['per_page'] == 20) echo 'selected="selected"'; ?> >20</option>
<option <?php if(isset($_GET['per_page']) && $_GET['per_page'] == 10) echo 'selected="selected"'; ?> >10</option>
<option <?php if(isset($_GET['per_page']) && $_GET['per_page'] == 5) echo 'selected="selected"'; ?> >5</option>
</select>
Ну и собственно, JS функция для вставки параметра в URL:
{
var kvp = document.location.search.substr(1).split('&');
var i=kvp.length; var x;
while(i--)
{
x = kvp[i].split('=');
if (x[0]==key)
{
x[1] = value;
kvp[i] = x.join('=');
break;
}
}
if(i<0) {kvp[kvp.length] = [key,value].join('=');}
//this will reload the page, it's likely better to store this until finished
document.location.search = kvp.join('&');
}
Как-то так
Берите, пользуйтесь на здоровье)
спс