pdoPage как замена getPage

Как и в случае с остальными сниппетами pdoTools, pdoPage отличается от своего предшественника getPage большей функциональностью, а именно: возможностью создания пагинации с пропуском страниц и поддержкой ajax из коробки. Кроме того, благодаря дополнительным параметрам, сниппет настраивается достаточно гибко. 

Параметры в большинстве своём схожи. Есть некоторые нюансы, но там где они присутствуют, будет написано, в чём именно они заключаются.

Основные параметры

getPage (значение по умолчанию) pdoPage (значение по умолчанию) Применение

&element=`getResources`

&element=`pdoResources`

Имя сниппета для вывода ресурсов. Для pdoPage, обычно используется pdoResources. В случае с getPage, обычно в качестве значения параметра передаётся - getResources. 

Дополнительные параметры

getPage (значение по умолчанию) pdoPage (значение по умолчанию) Применение

&limit=`10`

&limit=`10`

Здесь указывается сколько элементов будет показано на странице. Другими словами, исходя из этого значения, будет зависеть то, из скольких страниц будет состоять пагинация.

&offset=`0`

&offset=`0`

Количество элементов, которые будут пропущены. 

&page=`1`

&page=`1`

Номер страницы, которая передаётся для вывода по умолчанию. То есть в том случае, если не указано иное значение в url.

-

&pageCountVar=`pageCount`

Имя плэйсхолдера, в котором хранится общее количество страниц. 

getResources. Возможности поменять параметр нет, но плэйсхолдер pageCount так же доступен. 

&pageVarKey=`page`

&pageVarKey=`page`

Имя GET переменной, в которой передаётся номер текущей страницы. 

&totalVar=`total`

&totalVar=`page.total`

Имя плейсхолдера, в котором хранится общее количество результатов. 

&pageNavVar=`page.nav`

&pageNavVar=`page.nav`

Имя плейсхолдера, в котором хранится вся пагинация.

Параметры шаблонов

getPage (значение по умолчанию) pdoPage (значение по умолчанию) Применение

&pageNavTpl=`имя чанка`

Доступные значения:

<li[[+classes]]><a[[+classes]][[+title]] href="[[+href]]">[[+pageNo]]</a></li>

&tplPage=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a></li>`

Шаблон номера страницы в пагинации.

&pageActiveTpl=`имя чанка`

Доступные значения:

<li[[+activeClasses]]><a[[+activeClasses:default= `class="active"`]][[+title]] href="[[+href]]">[[+pageNo]]</a></li>

&tplPageActive=`@INLINE <li class="active"><a href="[[+href]]">[[+pageNo]]</a></li>`

Шаблон активного номера страницы в пагинации.

&pageFirstTpl=`имя чанка`

Доступные значения:

<li class="control"><a[[+classes]][[+title]] href="[[+href]]">First</a></li>

&tplPageFirst=`@INLINE <li class="control"><a href="[[+href]]">[[%pdopage_first]]</a></li>`

Шаблон первой страницы в пагинации. 

&pageLastTpl=`имя чанка`

Доступные значения:

<li class="control"><a[[+classes]][[+title]] href="[[+href]]">Last</a></li>

&tplPageLast=`@INLINE <li class="control"><a href="[[+href]]">[[%pdopage_last]]</a></li>`

Шаблон последней страницы в пагинации.

&pagePrevTpl=`имя чанка`

Доступные значения:

<li class="control"><a[[+classes]][[+title]] href="[[+href]]"><<</a></li>

&tplPagePrev=`@INLINE <li class="control"><a href="[[+href]]">&laquo;</a></li>`

Шаблон предыдущей страницы (стрелка влево).

&pageNextTpl=`имя чанка`

Доступные значения:

<li class="control"><a[[+classes]][[+title]] href="[[+href]]">>></a></li>

&tplPageNext=`@INLINE <li class="control"><a href="[[+href]]">&raquo;</a></li>`

Шаблон следующей страницы (стрелка вправо).

&pageNavOuterTpl=`имя_чанка`

Доступные значения:

[[+first]][[+prev]][[+pages]][[+next]][[+last]]

&tplPageWrapper=`@INLINE <div class="pagination"><ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>`

Шаблон, в котором определяется порядок отображения первой, предыдущей страницы, номерных страниц, а так же следующей и последней страницы.

Пример вызова getPage

[[!getPage?
  &element=`getResources`
  &tpl=`blog_item`
  &includeContent=`1`
  &includeTVs=`image, gallery, video`
  &limit=`3`
  &pageNavOuterTpl=`wrapper_p`
  &pageActiveTpl=`active_p`
  &pageNavTpl=`page_p`
]]

Давайте разберём параметры сниппета:

&pageNavOuterTpl=`wrapper_p` - чанк-обёртка для вывода всех страниц. Пример содержимого чанка:

<ul>[[+pages]]</ul>

&pageActiveTpl=`active_p` - чанк для вывода текущей страницы. Пример содержимого чанка:  

<span class="current">[[+pageNo]]</span>

&pageNavTpl=`page_p` - чанк ссылки на страницу. Пример содержимого чанка: 

<a href="[[+href]]" class="inactive">[[+pageNo]]</a>

Напоминаю, что сниппет является обёрткой для getResources, поэтому в нём доступны параметры getResources. Так же доступен плэйсхолдер [[!+page.nav]], в котором собственно и хранится вся пагинация. 

Параметры вызова pdoPage

Пример использования: 

[[!pdoPage?
  &element=`pdoResources`
  &tpl=`blog_item`
  &includeContent=`1`
  &includeTVs=`image, gallery, video`
  &limit=`3`
  &tplPageWrapper=`@INLINE [[+pages]]`
  &tplPageActive=`@INLINE <span class="current">[[+pageNo]]</span>`
  &tplPage=`@INLINE <a href="[[+href]]" class="inactive">[[+pageNo]]</a>`
]]

Если на странице указано 2 или более вызова данного сниппета, следующие параметры должны отличаться : 

&pageVarKey=`another_page` - имя переменной, через которую будет передаваться номер страницы. 
&pageNavVar=`another_pages` - имя плейсхолдера для вывода пагинации. 

При вызове сниппета единожды, указывать их не обязательно, поскольку у них уже используется значение по умолчанию. 

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.