Modx Revolution pdoPage и Bootstrap 4
Modx Revolution pdoPage и Bootstrap 4- Главная
- MODX
- 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]]»>«</a></li>` |
Шаблон предыдущей страницы (стрелка влево). |
&pageNextTpl=`имя чанка` Доступные значения: <li><a[[+classes]][[+title]] href=»[[+href]]»>>></a></li> |
&tplPageNext=`@INLINE <li><a href=»[[+href]]»>»</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
#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-разметке вашей страницы все дополнительные кнопки имеют один и тот же класс?
В разметке должен быть тег
с вызовомpdoPage.initialize({...})
.Каковы значения «more» и «moreTpl»?
Возможно,вам нужно расширить код JS,чтобы он работал с несколькими вызовами pdopage.
полутренированный Гарри
#3
Я думаю,проблема в том,что вы должны использовать разные значения для свойстваpageVarKey
.
Попробуйте добавить его к вызовуpdoPageи проверьте,работает ли он сейчас.
[[!pdoPage?...&pageVarKey=`страница[[+категория]]`]]
средний этаж
#4
Отлично!Спасибо!Это решение!
система закрыто
#5
Эта тема была автоматически закрыта через 2 дня после окончания обсуждения и отмеченного решения.Новые ответы больше не допускаются.Вы можете открыть новую тему,щелкнув значок ссылки под исходным сообщением или решением и выбрав «+Новая тема».
<дел> | |
<дел> | |
[[!pdoPage? | |
&parents=`[[*id]]` | |
&element=`pdoResources` | |
&limit=`1` | |
&ajaxMode=`по умолчанию` | |
&tpl=`ресурсы` | |
&tplPageWrapper=`@INLINE | |
<ул> | |
[[+предыдущая]][[+страницы]][[+следующая]] | |
` | |
&tplPage=`@INLINE | |
|
|
[[+pageNo]] | |
` | |
&tplPageActive=`@INLINE | |
|
|
[[+pageNo]] | |
(текущий) | |
` | |
&tplPageSkip=`@INLINE | |
|
|
. .. | |
` | |
&tplPagePrev=`@INLINE | |
|
|
« | |
` | |
&tplPagePrevEmpty=`@INLINE | |
|
|
« | |
` | |
&tplPageNext=`@INLINE | |
|
|
» | |
` | |
&tplPageNextEmpty=`@INLINE | |
|
|
» | |
` | |
]] | |
дел> | |
[[!+page.[an error occurred while processing the directive] [an error occurred while processing the directive] [an error occurred while processing the directive]
|