Categories: ModX

Modx: ошибка pdoPage, не работает ajax и пагинация

Очень долго возился с выводом постов в блоге на 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 не работает), не грузит еще посты (где-то косяк) или вообще ничего не выводит. Такое было, когда я хотел выводить через аякс-запросы. На что стоит обратить внимание:

  1. id блока, в котором находится вывод;
  2. 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>

В таком случае подгрузка статей будет после нажатия кнопки:

Вывод постов на сайте modx через ajax pdopage при нажатии на кнопку

Если нужно загружать посты по мере прокрутки страницы, замените

&ajaxMode=`button`

на

&ajaxMode=`scroll`

 

В остальных моментах читайте документацию и практикуйтесь. Возникли вопросы? Пишите в комментарии.

veniamin

View Comments

  • Сайт на Modx revo. Пагинация через [[!+page.nav]]. После подключения SEOPro начались странности…

    Пагинация не работает, если при переходе листаю на следующую страницу, в путь к ресурсу система подставляет лишний раз адрес раздела в виде ?page=2

    Если убрать повторение раздела, то URL вида ?page=2 открывает страницу 2 как положено…

    Т.е. получается, что навигация пытается продублировать псевдоним раздела и в URL подставляет как вложенную ссылку, хотя "вложенные URL" в системе отключены…

    Как ее оттуда убрать чей-т тупл

    • Много моментов может быть, проверьте настройки сайта, плагина и почистите кеш

Recent Posts

Как заработать токе NOT за стейкинг BNB или FDUSD

Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…

6 дней ago

Как заработать TON и NOT за стейкинг в телеграм

Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…

6 дней ago

Бонус 100 USDT +10 BUSD от Binance

Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…

2 года ago

Как парсить длительность видео youtube на php в привычном виде

Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…

2 года ago

Как удалить чужую сессию пользователя в ubuntu (linux)

Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…

2 года ago

Как наложить watermark на видео в python windows массово

Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…

3 года ago