Очень долго возился с выводом постов в блоге на modx. Выводил через pdoPage, и сталкивался с проблемами навигации. В статье расскажу какие проблемы были и как их решить. И конечно же выложу рабочий код решение.
Рабочий код плагина вывода пагинации pdoPage modx
Сразу выложу код и поясню его, а потом опишу косяки, с которыми столкнулся.
[[!pdoPage? &parents=`76` &includeTVs=`status, start, minimum,screen,tarrifs` &tpl=`shabindex` &ajaxMode=`1` ]] [[!+page.nav]]
parents – родительский ресурс, с которого выводить статьи (посты);
includeTVs – мои tv, очень много информации у меня разбита и хранится в Дополнительных полях;
tpl – шаблон вывода (чанк). Его сейчас выложу;
ajaxMode – именно в нем и причина, почему-то нужно указывать.
Код шаблона для моего вывода через сниппет pdoPage в modx:
<h4><a href="[[+uri]]">[[+pagetitle]]</a></h4><br> [[+tv.screen:ifnotempty=`<a href="[[+uri]]"><img src="[[+tv.screen]]" alt="[[+longtitle]]" title="[[+longtitle]]" style='max-width: 250px;'></a><br>`]] Статус: <strong>[[+tv.status]]</strong><br> Старт: [[+tv.start:strtotime:date=`%d.%m.%Y`]]<br> Публикация: [[+publishedon:date=`%d.%m.%Y`]] <br> Минимум: [[+tv.minimum]]<br> <a href="[[+uri]]">Подробнее...</a> <hr>
В чанке используются стандартные переменные (типа uri, pagetitle, longtitle) и Дополнительные поля (tv.status, start). Если что не понятно – спрашивайте. Кстати, по дате еще есть нюансы (strtotime или нет, формат даты modx). Но это уже другая статья.
А сейчас по основным проблемам или даже багам, с которыми я сталкивался.
Не работает последняя страница pdoPage modx
Сначала я столкнулся с проблемой, когда у меня не работала последняя страница. У меня стоял &limit=10, было 4 страницы, по первым трем ходил спокойно, а последняя не открывалась – просто перезагружалась текущая. И была загвоздка, я играл с кодом, и у меня вылазила вторая ошибка – если заработает последняя, то не открывались другие страницы.
Не работает первая страница навигации pdoPage
Уже вроде написал код, проверил, но перестала открываться первая страница (“Первая” и “1”). Причем проблема когда ты находишься на последней странице. На других все хорошо. Вроде не существенно, и можно забить, но нужно решать любые косяки.
Не работает ajax режим
Обновляет страницу (сам ajax не работает), не грузит еще посты (где-то косяк) или вообще ничего не выводит. Такое было, когда я хотел выводить через аякс-запросы. На что стоит обратить внимание:
- id блока, в котором находится вывод;
- ajaxMode.
У многих не работал ajax-вывод именно через не заданный или неправильно заданный контейнер (div) в котором находился блок с данными. Вот рабочий код для вывода pdoPage с ajax-подгрузкой постов (статей):
<div id="pdopage">
<div class="pure-g rows">
[[!pdoPage?
&parents=`76`
&includeTVs=`status, start, minimum,screen,tarrifs`
&tpl=`shabindex`
&limit=`10`
&maxLimit=`50`
&ajaxMode=`button`
]]
[[!+page.nav]]
</div>
</div>
В таком случае подгрузка статей будет после нажатия кнопки:

Если нужно загружать посты по мере прокрутки страницы, замените
&ajaxMode=`button`
на
&ajaxMode=`scroll`
В остальных моментах читайте документацию и практикуйтесь. Возникли вопросы? Пишите в комментарии.


Сайт на Modx revo. Пагинация через [[!+page.nav]]. После подключения SEOPro начались странности…
Пагинация не работает, если при переходе листаю на следующую страницу, в путь к ресурсу система подставляет лишний раз адрес раздела в виде ?page=2
Если убрать повторение раздела, то URL вида ?page=2 открывает страницу 2 как положено…
Т.е. получается, что навигация пытается продублировать псевдоним раздела и в URL подставляет как вложенную ссылку, хотя “вложенные URL” в системе отключены…
Как ее оттуда убрать чей-т тупл
Много моментов может быть, проверьте настройки сайта, плагина и почистите кеш