[pdoTools] 2.2.1 Улучшения ajax пагинации
Представляю вам новую версию pdoTools с небольшими улучшениями работы pdoPage в режиме ajax.
Первое изменение заключается в том, что все запросы теперь отправляются на отдельный файл-коннектор, который лежит в /assets/components/pdotools/. Во-первых, это ускоряет работу, потому что мы запускаем MODX в API_MODE и не выполняем все сниппеты на текущей странице, перед pdoPage.
А во-вторых, теперь режим ajax у pdoPage можно использовать при включенном Fenom в теле страницы. Кому интересно, вот подробности.
Второе изменение косметическое. Был добавлен параметр &ajaxHistory, который позволяет отключить сохранение номера страницы в url.
Зачем это нужно? Очень просто — для режимов scroll и button. Очень многие пользователи просили сделать так, чтобы можно было просто загружать результаты и сбрасывать всё при перезагрузке страницы.
По умолчанию &ajaxHistory пуст и ориентируется на параметр &ajaxMode: для default он включен, а для прокрутки и кнопки — отключен. Но вы можете и сами указать ему 0 или 1 при любом режиме работы.
Если &ajaxHistory отключен, то страницы в url не сохраняются, а значит и блок с постраничной навигацией не нужен — так что, он скрывается автоматически. Обратите внимание, что он по-прежнему необходим для правильной работы, но на странице его не видно.
В общем, в новой версии прокрутка и загрузка кнопкой работают более привычно для большинства пользователей.
Совсем мелкое изменение — добавление блоку-обёртке (по умолчанию это у нас #pdopage) класса loading при загрузке, чтобы вывести какой-нибудь индикатор. Например, вот так:
Оценить pdoPage в &ajaxMode=`scroll` можно прямо здесь, в разделе последних комментариев. Если вдруг что-то не работает — почистите кэш своего браузера.
Добавил еще один параметр в pdoPage для указания схемы генерации ссылки на страницу &pageLinkScheme. Теперь легко можно делать человекопонятную навигацию, если захочется.
Документация здесь.
Первое изменение заключается в том, что все запросы теперь отправляются на отдельный файл-коннектор, который лежит в /assets/components/pdotools/. Во-первых, это ускоряет работу, потому что мы запускаем MODX в API_MODE и не выполняем все сниппеты на текущей странице, перед pdoPage.
А во-вторых, теперь режим ajax у pdoPage можно использовать при включенном Fenom в теле страницы. Кому интересно, вот подробности.
Второе изменение косметическое. Был добавлен параметр &ajaxHistory, который позволяет отключить сохранение номера страницы в url.
Зачем это нужно? Очень просто — для режимов scroll и button. Очень многие пользователи просили сделать так, чтобы можно было просто загружать результаты и сбрасывать всё при перезагрузке страницы.
По умолчанию &ajaxHistory пуст и ориентируется на параметр &ajaxMode: для default он включен, а для прокрутки и кнопки — отключен. Но вы можете и сами указать ему 0 или 1 при любом режиме работы.
Если &ajaxHistory отключен, то страницы в url не сохраняются, а значит и блок с постраничной навигацией не нужен — так что, он скрывается автоматически. Обратите внимание, что он по-прежнему необходим для правильной работы, но на странице его не видно.
В общем, в новой версии прокрутка и загрузка кнопкой работают более привычно для большинства пользователей.
Совсем мелкое изменение — добавление блоку-обёртке (по умолчанию это у нас #pdopage) класса loading при загрузке, чтобы вывести какой-нибудь индикатор. Например, вот так:
<div id="pdopage">
<div class="rows">
[[!pdoPage?
&parents=`0`
&ajaxMode=`scroll`
]]
</div>
<div class="spinner"></div>
[[!+page.nav]]
</div>
<style>
#pdopage .spinner {
display: none;
width: 32px;
height: 32px;
background: url('/inc/img/loading.gif') no-repeat;
background-size: 32px;
}
#pdopage.loading .spinner {
display: block;
margin: 20px auto 10px auto;
}
</style>
Это можно было и раньше сделать через pdoPage.callbacks, но я решил что лишний класс не помешает.Оценить pdoPage в &ajaxMode=`scroll` можно прямо здесь, в разделе последних комментариев. Если вдруг что-то не работает — почистите кэш своего браузера.
Версия 2.2.2
Добавил еще один параметр в pdoPage для указания схемы генерации ссылки на страницу &pageLinkScheme. Теперь легко можно делать человекопонятную навигацию, если захочется.
Документация здесь.
Комментарии: 19
Очень полезное улучшение, Василий спасибо за ваши труды.
Таки да, спасибо. Все же мечта сделать сайт на чистом femon близка к правде. А то из-за особенности pdoPage пришлось отказаться в свое время. Теперь пора вернуть как было :)
Было бы здорово, если бы ещё замена текущих позиций была бы из коробки на аяксмод button без callback'ов
Спасибо, обновился.
Всё хорошо, но в ajaxе
Не отрабатывает modx фильтры
небо1.рф/shop/men/sweatshirt/
Обновил, только что, если кликнуть показать ещё
Не отрабатывает modx фильтры
небо1.рф/shop/men/sweatshirt/
Обновил, только что, если кликнуть показать ещё
Вызывай их кэшированными.
так вызывались, до обновления нормально работало…
yadi.sk/i/3vo6S3uXmopsi
почистил кэш на всякий и всё равно тоже самое.
yadi.sk/i/3vo6S3uXmopsi
почистил кэш на всякий и всё равно тоже самое.
ну моё дело сообщить о баге, чье-то дело минусовать)
откатываюсь до версии ранее.
Но ошибка в том, что
[[!+old_price:gt=`0`:then=`распродажа`]]
такую конструкцию не отрабатывает [pdoTools] 2.2.2
откатываюсь до версии ранее.
Но ошибка в том, что
[[!+old_price:gt=`0`:then=`распродажа`]]
такую конструкцию не отрабатывает [pdoTools] 2.2.2
Поковырялся решил проблему как и говорил новая версия при аяксе показать всё
не отрабатывает плейсхолдеры вида [[!+]], решил поменять на [[+]] всё заработало
[[!+old_price:gt=`0`:then=`распродажа`]] было
[[+old_price:gt=`0`:then=`распродажа`]] стало
Не знаю баг, не баг, ну в общем, как то так)
не отрабатывает плейсхолдеры вида [[!+]], решил поменять на [[+]] всё заработало
[[!+old_price:gt=`0`:then=`распродажа`]] было
[[+old_price:gt=`0`:then=`распродажа`]] стало
Не знаю баг, не баг, ну в общем, как то так)
По большому счёту — нет, не баг.
Некэшированные условия не обрабатываются при запуске сниппета, а оставляются «на потом» для разбора парсером. При работе же через ajax до него дело вообще не доходит, ибо pdoPage делает exit() когда всё закончил.
Странно, что это работало раньше. В любом случае, в магазине уже можно загрузить версию 2.2.3, которая дополнительно обрабатывает [[!+]], хоть их и не стоит использовать без особой необходимости.
Некэшированные условия не обрабатываются при запуске сниппета, а оставляются «на потом» для разбора парсером. При работе же через ajax до него дело вообще не доходит, ибо pdoPage делает exit() когда всё закончил.
Странно, что это работало раньше. В любом случае, в магазине уже можно загрузить версию 2.2.3, которая дополнительно обрабатывает [[!+]], хоть их и не стоит использовать без особой необходимости.
Большое спасибо))
Всем привет! Сегодня натыкайлся на коммент по поводу расширения стандартного js pdopage. Сейчас найти не могу. Кому не сложно подкиньте ссылку :)
Не отображает картинки на страницах подгруженных аяксом…
Вызов картинки в чанке [[!pthumb? &input=`[[+tv.img]]` &options=`w=250&h=320&f=png`]]
Вывод до апдейта assets/image-cache/image.e414e724.png
После апдейта image.png
Вызов картинки в чанке [[!pthumb? &input=`[[+tv.img]]` &options=`w=250&h=320&f=png`]]
Вывод до апдейта assets/image-cache/image.e414e724.png
После апдейта image.png
Классный обновления!
Теперь думаю о канонических url для page :D
Теперь думаю о канонических url для page :D
Ajax c указанным pageLinkScheme работает криво(
Здравствуйте. Подскажите, пожалуйста, как реализовать работу &pageLinkScheme=`/[[+pageVarKey]]-[[+page]]` в связке с &ajaxMode=`default`. Параметры указал, плагин для обработки повесил на событие OnPageNotFound, но переход по страницам навигации не происходит. В чем может быть проблема?
Василий, приветствую. До улучшений pdopage можно было так:
щас response, естесственно, всю страницу отдает
какие-то аналогичные способы есть для подобных штук в новых реалиях?
P. S. Извиняюсь за дублирование, поздно сообразил, что лучше сразу сюда)
&ajax=`1`
$.get('?page=3', function(response) {
своя логика без переделывания стандартного скрипта
}
Перешел на fenom.щас response, естесственно, всю страницу отдает
какие-то аналогичные способы есть для подобных штук в новых реалиях?
P. S. Извиняюсь за дублирование, поздно сообразил, что лучше сразу сюда)
Василий, прошу прощения, не могу найти ответ про пагинацию и pdoPage. Сейчас, находясь на третьей и последующих страницах есть ссылка на первую вида
Вопрос, как можно указать ссылки на первую страницу такими:
site.ru/news?page=1
а на второй, так вообще, аж три ссылки на первую страницу, ты писал об этом уже) (https://bezumkin.ru/sections/components/1975/#comment-15942)Вопрос, как можно указать ссылки на первую страницу такими:
site.ru/news
?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.