Pdopage modx: pdoPage / Сниппеты / pdoTools / docs.modx.pro

Modx Revolution pdoPage и Bootstrap 4

Modx Revolution pdoPage и Bootstrap 4

  1. Главная
  2. MODX
  3. Modx Revolution pdoPage и Bootstrap 4

5216

Назад

На текущий момент компоненты pdoTools для MODX Revolution и в том числе pdoPage работают из коробки со старой версией Bootstrap, а для нового Bootstrap 4 есть такое решение, для корректного отображения пагинации (разбивка статей на страницы).

[[!pdoPage?
&tpl=`tpl_usluga`
&limit=`10`
&parents=`[[*id]]`
&tplPageWrapper=`@INLINE <nav aria-label="pagination"><ul>[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></nav>`
&tplPageFirst=`@INLINE <li><a href="[[+href]]">Первая</a></li>`
&tplPageLast=`@INLINE <li><a href="[[+href]]">Последняя</a></li>`
&tplPage=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageActive=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a></li>`
&tplPagePrev=`@INLINE <li><a href="[[+href]]"><span aria-hidden="true">«</span><span>Previous</span></a></li>`
&tplPageNext=`@INLINE <li><a href="[[+href]]"><span aria-hidden="true">»</span><span>Next</span></a></li>`
&tplPagePrevEmpty=`@INLINE <li><a href="[[+href]]"><span aria-hidden="true">«</span><span>Previous</span></a></li>`
&tplPageNextEmpty=`@INLINE <li><a href="[[+href]]"><span aria-hidden="true">»</span><span>Next</span></a></li>`
]]
<div>
    [[!+page.
nav]] </div>

Или на Fenom

{$_modx->runSnippet('!pdoPage', [
'parents' => $_modx->resource.id,
'tpl' => 'one_article',
'limit' => 4,
'includeTVs' => 'image',
'tplPageWrapper' => '@INLINE <nav aria-label="pagination"><ul>{$first}{$prev}{$pages}{$next}{$last}</ul></nav>'
'tplPageFirst' => '@INLINE <li><a href="{$href}">1Первая1</a></li>'
'tplPageLast' => '@INLINE <li><a href="{$href}">Последняя</a></li>'
'tplPage' => '@INLINE <li><a href="{$href}">{$pageNo}</a></li>'
'tplPageActive' => '@INLINE <li><a href="{$href}">{$pageNo}</a></li>'
'tplPagePrev' => '@INLINE <li><a href="{$href}"><span aria-hidden="true">«</span><span>Previous</span></a></li>'
'tplPageNext' => '@INLINE <li><a href="{$href}"><span aria-hidden="true">»</span><span>Next</span></a></li>'
'tplPagePrevEmpty' => '@INLINE <li><a href="{$href}"><span aria-hidden="true">«</span><span>Previous</span></a></li>'
'tplPageNextEmpty' => '@INLINE <li><a href="{$href}"><span aria-hidden="true">»</span><span>Next</span></a></li>'
])}
{$_modx->getPlaceholder('page.
nav')}

« Предыдущая статья

Защита от спама с помощью recaptcha в MODX Revo

Следующая статья »

PrettyTags — дружелюбные теги в MODX

Назад

Антиспам поле. Его необходимо скрыть через css

Ваше имя

Электронная почта

Ваше сообщение

Присылайте свои вопросы, предложения и пожелания на электронную почту. Будем рады сотрудничеству.

E-mail: [email protected]

Telegram: daruse93

Вы можете сказать спасибо автору сайта или перевести оплату.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.

pdoPage как замена getPage / Сниппеты / Modx Revolution / Технический блог веб-разработчика

Как и в случае с остальными сниппетами 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><a href=»[[+href]]»>[[+pageNo]]</a></li>`

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

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

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

<li><a[[+classes]][[+title]] href=»[[+href]]»>First</a></li>

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

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

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

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

<li><a[[+classes]][[+title]] href=»[[+href]]»>Last</a></li>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&tplPageWrapper=`@INLINE <div><ul>[[+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>[[+pageNo]]</span>

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

<a href=»[[+href]]»>[[+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>[[+pageNo]]</span>`
  &tplPage=`@INLINE <a href="[[+href]]">[[+pageNo]]</a>`
]]

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

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

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

Pdopage ajax разбиение на страницы с помощью нескольких кнопок — Extras

mediengaarage

, 15:21

#1

У меня несколько вызовов pdopage на одной странице. К сожалению, функция «загрузка ajax по кнопке» не работает. Если я загрузил все за один вызов, то остальные кнопки «загрузить еще» тоже отключены.

Вот мой фрагмент-вызов:

 
[[!+[[+категория]]_[[+категория]]page.nav]] <дел> [[!pdoPage? &ajaxMode=`кнопка` &tpl=`tplEvents` &limit=`5` &родители=`9` &includeContent=`1` &includeTVs=`eventDate,topEvent,eventLink,eventBild,categorie,tags` &processTVs=`1` &tvFilters=`категория==[[+категория]]` &sortby=`дата_события` &sortdir=`DESC` &tvPrefix=`` &hideContainers=`1` &tplWrapper=`tplEventWrapper` &ajaxElemRows=`#[[+категория]]pdopage .[[+категория]]_rows` &ajaxTplMore=`@INLINE ` &ajaxElemMore=`#[[+категория]]pdopage .[[+категория]]-больше` &pageNavVar=`[[+категория]]page.nav` &ajaxElemWrapper=`#[[+категория]]pdopage` &ajaxElemPagination=`#[[+категория]]pdopage . pagination` &ajaxElemLink=`#[[+категория]]pdopage .pagination a` &totalVar=`[[+категория]]page.total` &plPrefix=`[[+категория]]_` ]]
[[+[[+категория]]страница.всего]]

В чем проблема?

полутренированный Гарри

#2

В HTML-разметке вашей страницы все дополнительные кнопки имеют один и тот же класс?
В разметке должен быть тег