pdoPage - показ записей с последней страницы
modx.ru/vopros-otvet/info/7690/ — Pdopage — переход на последнюю страницу
modx.ru/vopros-otvet/info/6885/#32034 — Открывалась последняя страница блога
Здесь в комментах спрашивали про это
ilyaut.ru/addons/modification-getpage-to-bring-the-pagination-to-the-generally-recognized-standards/
Но как в DocLister в EVO, где это идет из коробки — reversePagination, и как сделано по ссылкам выше, это все не совсем то...
Как то «не уютно» когда пагинация идет 5-4-3-2-1, привычней когда 1-2-3-4-5, и выглядит примерно как на картинке ниже — кликнул по ссылке, и открылась последняя страница, где самая последняя запись находиться на последней странице, а самая первая на превой, при этом сам вывод номеров страниц остается таким же.
Вообщем методом «шаманства» и «научного тыка», немного модифицировал сниппет pdoPage.
Конечно же, копируем сниппет pdoPage. Переименовываем например, в pdoPagestart.
В копии сниппета, где Page меняем строчку на $page = 1;
// Page
if (isset($_REQUEST[$pageVarKey]) && $strictMode && (!is_numeric($_REQUEST[$pageVarKey]) || ($_REQUEST[$pageVarKey] <= 1 && !$isAjax))) {
return $pdoPage->redirectToFirst($isAjax);//вот эту, на $page = 1;
}
Вставляем код:if (!isset($_REQUEST[$pageVarKey]) && $start > 1) {
$pdoPage->pdoTools->runSnippet($scriptProperties['element'], $scriptProperties);
$total = (int)$modx->getPlaceholder($totalVar);
$page = ceil(($total)/$scriptProperties['limit']);
$scriptProperties['offset'] = $scriptProperties['limit'] * ($page - 1);
}
Чуть ниже offset, после условия:if (!empty($scriptProperties['offset']) && empty($scriptProperties['limit'])) {
$scriptProperties['limit'] = 10000000;
}
В параметрах — поддержка ajax запросов должно быть «ДА»Сортировка &sortdir=`ASC`
Значение параметра &start = `2` — вывод с последней страницы, &start = `1` как и раньше, с первой.
Проверил на новостях, статьях, комментариях, и с ajax пагинацией тоже, все работает.
Для меня будет полезно узнать если возможно что-то неправильно в этом решении, буду признателен комментариям профи. По сути решение готовое и работает, может кому нибудь пригодиться.