PageBreaker
Плагин для разбивки контента большой страницы на несколько подстраниц.
Принцип работы
Плагин ищет в контенте страницы определенные разделители, по умолчанию <!-- pagebreak -->
. Если находит, то делит страницу по ним и генерирует ссылки на следующие.
При переходе по такой ссылке MODX не находит нужной страницы, потому что она не существует, и генерирует событие OnPageNotFound. Плагин срабатывает на это событие, вычисляет запрошенный кусок контента и выводит.
Таким образом, у вас получается несколько "виртуальных" страниц из одной реальной.
Демонстрация
Посмотреть на работу плагина можно на демо-сайте.
Возможности
- Работает с кэшированными ресурсами.
- Запускается только тогда, когда в контенте есть разделители.
- Поставляется с плагином PageBreak для TinyMCE (TypoMCE), чтобы делать авторазбивку текста.
- Поддерживает friendly urls
- Поддерживает обычные документы и контейнеры
Чанки
Для оформления постраничной навигации используются следующие чанки:
Имя | Описание | Плейсхолдеры |
---|---|---|
tpl.PageBreaker.begin | Ссылка на первую страницу | [[+link]] - ссылка на страницу |
tpl.PageBreaker.next | Ссылка на следующую страницу, может быть пустой. | [[+link]] - ссылка на страницу |
tpl.PageBreaker.prev | Ссылка на предыдущую страницу, может быть пустой. | [[+link]] - ссылка на страницу |
tpl.PageBreaker.outer | Блок со всеми ссылками. | [[+pb_link_prev]] , [[+pb_link_next]] , [[+pb_link_begin]] - оформленные ссылки, [[+pb_page]] - номер текущей страницы, [[+pb_total]] - общее количество страниц |
Если вы находитесь на первой или последней странице, то ссылки на предыдущую или следующую страницу не будут генерироваться. Это сделано для того, чтобы вы могли проверять такие ситуации фильтрами вывода и подставлять ссылку в начало документа. Именно так сделано с стандартном чанке outer:
<div class="pagebreaker">
[[+pb_link_prev]]
<span class="pb_page_current">[[+pb_page]]</span>
[[%pb_page_from]]
<span class="pb_page_total">[[+pb_total]]</span>
[[+pb_link_next:default=`[[+pb_link_begin]]`]]
</div>
Ajax
Плагин может работать в режиме Ajax, то есть, переключать страницы без перезагрузки.
- Для этого вам нужно активировать системную настройку pagebreaker_ajax
- Ссылки на страницы должны иметь класс
pb_link
. Проверьте, если вы меняли стандартные чанки. - Тег
[[*content]]
должен быть обёрнут в элемент с #pagebreaker_content (можно изменить в настройке pagebreaker_ajax_selector).
То есть, вот так:
<div id="pagebreaker_content">
[[*content]]
</div>
В режиме Ajax плагин старается работать через Javascript HistoryApi, то есть адрес страницы будет переключаться так же, как и без ajax. Никаких дополнительных параметров в строке адреса.
Если у посетителя старый браузер - придётся задействовать хэш в url.