Вывод пагинации без дублирования ссылок на первую и последнюю страницы с помощью pdoPage
1)Сниппет:
3) Результат при активной 1-ой:
Хотелось бы получить такой результат: закрепленные ссылки на первую и последнюю страницы, между ними 3 промежуточные страницы. Пробовал найти как выводить плейсхолдер [[+pages]] без первой и последней, но не нашел.
Заранее благодарю за любые мысли, направляющие в нужную сторону.
[[!pdoPage?
&tpl=`New`
&limit=`4`
&includeTVs=`image`
&limit=`2`
&pageLimit=`3`
&tplPageWrapper=`@INLINE <nav aria-label="pagination"><ul class="pagination">[[+prev]][[+first]][[+pages]][[+last]][[+next]]</ul></nav>`
&tplPageFirst=`@INLINE <li class="page-item 1"><a class="page-link" href="[[+href]]">1</a></li>`
&tplPageLast=`@INLINE <li class="page-item 1"><a class="page-link" href="[[+href]]">[[+pageCount]]</a></li>`
&tplPage=`@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageActive=`@INLINE <li class="page-item active "><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>`
&tplPagePrev=`@INLINE <li class="page-item"><a class="page-link" href="[[+href]]"><img src="assets/app/img/prev.png" alt="Предыдущая"><span class="sr-only">Next</span></a></li>`
&tplPageNext=`@INLINE <li class="page-item"><a class="page-link" href="[[+href]]"><img src="assets/app/img/next.png" alt="Следующая"><span class="sr-only">Next</span></a></li>`
&tplPagePrevEmpty=`@INLINE <li class="page-item disabled"><a class="page-link" ><img src="assets/app/img/prev.png" alt="Предыдущая"><span class="sr-only">Next</span></a></li>`
&tplPageNextEmpty=`@INLINE <li class="page-item disabled"><a class="page-link" ><img src="assets/app/img/next.png" alt="Следующая"><span class="sr-only">Next</span></a></li>`
&tplPageFirstEmpty=``
&tplPageLastEmpty=``
]]
2) Результат при активной 2-ой:3) Результат при активной 1-ой:
Хотелось бы получить такой результат: закрепленные ссылки на первую и последнюю страницы, между ними 3 промежуточные страницы. Пробовал найти как выводить плейсхолдер [[+pages]] без первой и последней, но не нашел.
Заранее благодарю за любые мысли, направляющие в нужную сторону.
Комментарии: 6
А что если схалтурить и сделать вот так в чанке tplPage:
Проверьте-ка вдруг подойдет
{if $pageNo not in [1, $pageCount]}
<li class="page-item"><a href="{$href}" class="page-link">{$pageNo}</a></li>
{/if}
// Или через css
<li class="page-item" {$pageNo in [1, $pageCount] ? 'style="display:none" или class="hidden"' : ''}><a href="{$href}" class="page-link">{$pageNo}</a></li>
Проверьте-ка вдруг подойдет
Первый вариант работает наполовину: убирает дублирование, на 1 и 2 выводит 4 кнопки, на 3-* 5 кнопок. Также хотелось бы еще убрать такое же дублирование последних кнопок, так как с $pageCount почему-то не убирает, хотя если подставить число страниц, то убирает.
Второй вариант работает некорректно.
Второй вариант работает некорректно.
Оба варианта одинаковые, но не суть.
Я так и думал, что в чанк tplPage не приходит плейсхолдер [[+pageCount]], нуу… так как я слаб в php, то я бы попробовал залезть через js в объект pdoPage до загрузки и сделал бы нужные манипуляции
Я так и думал, что в чанк tplPage не приходит плейсхолдер [[+pageCount]], нуу… так как я слаб в php, то я бы попробовал залезть через js в объект pdoPage до загрузки и сделал бы нужные манипуляции
Попробуйте вот так:
{'!pdoPage' | snippet : [
'tplPage' => '@INLINE {if $pageNo not in [1, $_modx->getPlaceholder("pageCount")]}<li class="page-item"><a href="{$href}" class="page-link">{$pageNo}</a></li>{/if}',
'pageLimit' => 3
]}
На первой и последней странице по два выводит?
Нет, так не выходит.
Немного сделал иначе, с небольшой потерей функционала.
Теперь стрелки ссылаются на 1-ю и последнюю страницы.
Немного сделал иначе, с небольшой потерей функционала.
Теперь стрелки ссылаются на 1-ю и последнюю страницы.
[[!pdoPage?
&tpl=`New`
&limit=`4`
&includeTVs=`image`
&limit=`2`
&pageLimit=`5`
&tplPageWrapper=`@INLINE <nav aria-label="pagination"><ul class="pagination">[[+first]][[+pages]][[+last]]</ul></nav>`
&tplPageFirst=`@INLINE <li class="page-item"><a class="page-link" href="[[+href]]"><img src="assets/app/img/prev.png" alt="Предыдущая"><span class="sr-only">Next</span></a></li>`
&tplPageLast=`@INLINE <li class="page-item"><a class="page-link" href="[[+href]]"><img src="assets/app/img/next.png" alt="Следующая"><span class="sr-only">Next</span></a></li>`
&tplPage=`@INLINE <li class="page-item"><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageActive=`@INLINE <li class="page-item active "><a class="page-link" href="[[+href]]">[[+pageNo]]</a></li>`
&tplPagePrev=``
&tplPageNext=``
&tplPagePrevEmpty=``
&tplPageNextEmpty=``
&tplPageFirstEmpty=`@INLINE <li class="page-item disabled"><a class="page-link" ><img src="assets/app/img/prev.png" alt="Предыдущая"><span class="sr-only">Next</span></a></li>`
&tplPageLastEmpty=`@INLINE <li class="page-item disabled"><a class="page-link" ><img src="assets/app/img/next.png" alt="Следующая"><span class="sr-only">Next</span></a></li>`
]]
Результат как на Связном.
Копируем сниппет pdoPage с новым именем _pdoPage.
(С целью исключения перезаписи при обновлении)
Строка 159. Конструкция вида:
Меняем
Сам вызов
Копируем сниппет pdoPage с новым именем _pdoPage.
(С целью исключения перезаписи при обновлении)
Строка 159. Конструкция вида:
if (!empty($pageCount) && $pageCount > 1) {
$pagination = array(
'first' => $page > 1 && !empty($tplPageFirst)
? $pdoPage->makePageLink($url, 1, $tplPageFirst)
: '',
'prev' => $page > 1 && !empty($tplPagePrev)
? $pdoPage->makePageLink($url, $page - 1, $tplPagePrev)
: '',
'pages' => $pageLimit >= 7 && empty($disableModernPagination)
? $pdoPage->buildModernPagination($page, $pageCount, $url)
: $pdoPage->buildClassicPagination($page, $pageCount, $url),
'next' => $page < $pageCount && !empty($tplPageNext)
? $pdoPage->makePageLink($url, $page + 1, $tplPageNext)
: '',
'last' => $page < $pageCount && !empty($tplPageLast)
? $pdoPage->makePageLink($url, $pageCount, $tplPageLast)
: '',
);
Меняем
$page > 1 на $page > 2
$page < $pageCount на $page < $pageCount - 1
Сам вызов
[[!_pdoPage?
-//-
&tplPageFirst=`@INLINE <li class="control"><a href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageLast=`@INLINE <li class="control"><a href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageFirstEmpty=`@INLINE `
&tplPageLastEmpty=`@INLINE `
&tplPagePrevEmpty=`@INLINE `
&tplPageNextEmpty=`@INLINE `
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.