Jump to main content Jump to doc navigation

Что такое getPage?

Универсальный сниппет для вывода, навигации и опционального кеширования многостраничных представлений из любого элемента, который принимает свойства limit и offset для ограничения набора данных и устанавливает плейсхолдер с общим числом элементов для постраничной навиции.

Требования

  • MODX Revolution 2.0.0-beta5 или новее
  • PHP5 или новее

История

getPage написал Jason Coward (opengeek). Релиз вышел 19 марта 2010 года.

Скачать

Скачайте через менеджер MODX Revolution в разделе управление пакетами или из репозитория MODX Extras: https://modx.com/extras/package/getpage

Сам по себе этот сниппет ничего не выводит. Он оборачивает другой сниппет и возвращает результат для указанной страницы (или диапазона данных в полном наборе). Например, сниппеты getResources, getFeed и Archivist можно обернуть в getPage.

Использование

Вызов getPage:

[[!getPage?
    &elementClass=`modSnippet`
    &element=`getResources`
]]

Не кешируйте getPage нельзя вызывать кешируемым на кешируемом ресурсе. Всегда вызывайте getPage с некешируемым префиксом !, оставляя остальной вывод ресурса кешируемым. То же правило для плейсхолдера из свойства pageNavVar (по умолчанию page.nav), чтобы навигация не попала в кешируемое содержимое страницы.

Обязательные свойства Укажите свойство element и все дополнительные свойства, которые требует оборачиваемый элемент.

Доступные свойства

Обязательные свойства

Имя Описание Значение по умолчанию
element Имя modElement, из которого обрабатывается вывод.

Свойства постраничного вывода

Имя Описание Значение по умолчанию Добавлено в версии
limit Лимит результатов на страницу. Можно переопределить в $_REQUEST. В 1.2.2+ сначала проверяется $_GET, затем $_REQUEST. 10
offset Смещение, позиция записи, с которой начинается выборка для текущей страницы. Считается из total, limit и переменной страницы из pageVarKey. 0
page Отображаемая страница. Определяется по значению переменной $_REQUEST из pageVarKey. вычисляется
pageCount Общее число страниц. вычисляется
pageVarKey Ключ свойства, который указывает текущую страницу в $_REQUEST и задаёт значение page. В 1.2.2+ сначала проверяется $_GET, затем $_REQUEST. page
totalVar Ключ плейсхолдера с общим числом записей в ограничиваемой коллекции. total
total Общее число записей для постраничного вывода (см. totalVar). вычисляется
firstItem Индекс (с 1) первого элемента на текущей странице. вычисляется
lastItem Индекс (с 1) последнего элемента на текущей странице. вычисляется
pageOneLimit Опциональный лимит для первой страницы, отличный от основного limit 1.2.2-pl

Свойства навигации по страницам

Имя Описание Значение по умолчанию
pageLimit Максимальное число ссылок на страницы в блоке навигации. 5
pageNavVar Ключ плейсхолдера с элементами навигации по страницам. page.nav

Свойства шаблонов навигации

Эти tpl-свойства нельзя менять прямо в теге сниппета из-за порядка разбора тегов в Revolution. Чтобы изменить значения по умолчанию, используйте набор свойств:

  • На вкладке «Элементы» откройте дерево сниппетов и найдите getPage.
  • Откройте вкладку «Свойства элемента».
  • Создайте новый набор свойств кнопкой «Добавить набор свойств» и отметьте «Создать новый набор свойств».
  • Задайте имя набора и сохраните.
  • Теперь можно менять значения свойств. При обновлении они не перезапишутся.
  • Укажите имя набора в вызове сниппета:
[[!getPage@PropertySetName? &element=`getResources` &parents=`3` ...]]
Имя Описание Значение по умолчанию Добавлено в версии
pageNavOuterTpl Шаблон разметки блока навигации по страницам. [[+first]][[+prev]][[+pages]][[+next]][[+last]] 1.2.0-pl
pageNavTpl Шаблон одного элемента навигации. <li[[+classes]]><a[[+classes]][[+title]] href="[[+href]]">[[+pageNo]]</a></li>
pageActiveTpl Шаблон элемента навигации для текущей страницы. <li[[+activeClasses]]><a[[+activeClasses:default=` class="active"`]][[+title]] href="[[+href]]">[[+pageNo]]</a></li>
pageFirstTpl Шаблон перехода на первую страницу. <li class="control"><a[[+classes]][[+title]] href="[[+href]]">First</a></li>
pageLastTpl Шаблон перехода на последнюю страницу. <li class="control"><a[[+classes]][[+title]] href="[[+href]]">Last</a></li>
pagePrevTpl Шаблон перехода на предыдущую страницу. <li class="control"><a[[+classes]][[+title]] href="[[+href]]"><<</a></li>
pageNextTpl Шаблон перехода на следующую страницу. <li class="control"><a[[+classes]][[+title]] href="[[+href]]">>></a></li>

Свойства кеширования

Имя Описание Значение по умолчанию
cache Кешировать ли содержимое каждого запроса страницы по уникальному URI запроса (не только pageVarKey) значение настройки cache_resource или false
cache_key Ключ именованного экземпляра xPDOCache для кеширования содержимого страницы. значение настройки cache_resource_key
cache_handler Класс-производный xPDOCache для экземпляра кеша. значение настройки cache_resource_handler или xPDOFileCache
cache_expires Число секунд жизни каждого элемента в кеше. 0 означает хранение до ручной очистки, если обработчик не пишет данные вне cache_resource_key по умолчанию значение expires для указанного cache_key или 0

Прочие свойства

Имя Описание Значение по умолчанию
elementClass Имя класса modElement для обработки вывода, например modChunk или modSnippet по умолчанию modSnippet
namespace Пространство имён выполнения как префикс для плейсхолдеров конкретного экземпляра getPage.
toPlaceholder Элемент не возвращает вывод в getPage, а записывает его в плейсхолдер. getPage может кешировать этот плейсхолдер так же, как обычный вывод элемента, и подставлять его из кеша.

Примеры

Постраничный вывод дочерних ресурсов текущего ресурса с чанком myRowTpl:

[[!getPage? &element=`getResources` &parents=`[[*id]]` &tpl=`myRowTpl`]]
<div class="pageNav">[[!+page.nav]]</div>

Постраничный вывод всех ресурсов под ресурсом с ID 5, кроме ресурса 10, с чанком myRowTpl:

[[!getPage? &element=`getResources` &parents=`5` &resources=`-10` &tpl=`myRowTpl`]]
<div class="pageNav">[[!+page.nav]]</div>

Если вы пишете свой сниппет для работы с getPage, он должен поддерживать три вещи:

  • limit
  • offset
  • totalVar

При настройке иногда возникают проблемы. Полезные материалы на форумах:

  1. Preparing Custom Snippets for getPage
  2. getPage: pagination returns empty 2nd page
  3. xPDO.getCount & xPDO.limit

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more