Плагин

02 июля 2016, 11:54

Плагин для разбивки контента большой страницы на несколько подстраниц.

Принцип работы

Плагин ищет в контенте страницы определенные разделители, по умолчанию <!-- 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.


Предыдущий документ
Поддержка TinyMCE