getPage
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
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
Budget
$204 per month—let's make that $500!
Learn moreЧто такое 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
При настройке иногда возникают проблемы. Полезные материалы на форумах:
- Preparing Custom Snippets for getPage
- getPage: pagination returns empty 2nd page
- 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
Budget
$204 per month—let's make that $500!
Learn more










