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 пагинацией тоже, все работает.
Для меня будет полезно узнать если возможно что-то неправильно в этом решении, буду признателен комментариям профи. По сути решение готовое и работает, может кому нибудь пригодиться.
Nik
Nik
11 марта 2020, 15:26
modx.pro
2
534
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0