Война с pdoPage
Добрый день!
Совсем чего-то я запутался с pdoPage. Главное, что на основном сайте разбиение на страницы у меня работает (надеюсь, что правильно). Решил добавить небольшой апендикс к сайту, настраиваю там pdoPage, никак не хочет рабоать как надо.
Вызываю так:
Сниппет LIST:
Чанк PAGE_NAVI:
Страниц, которые должны вывестись сейчас 11. На первый взгляд всё работает, но при ближайшем рассмотрении оказывается, что выводится только две страницы. На первой выводятся ссылки на то количество страниц, какой задан лимит, а на второй последняя, 11-я страница. Остальные пропадают. Куда копать не понимаю.
Еще, забыл. Чанк вывода tpl_List
И еще, Василий писал, что можно организовать нумерацию с помощью плейсхолдера [[+idx]]. Но куда его присунуть? Пробовал в tpl_List вставить, не прокатывает. А с @INLINE не разобрался :-(
Совсем чего-то я запутался с pdoPage. Главное, что на основном сайте разбиение на страницы у меня работает (надеюсь, что правильно). Решил добавить небольшой апендикс к сайту, настраиваю там pdoPage, никак не хочет рабоать как надо.
Вызываю так:
[[!pdoPage?
&element=`LIST`
&pageLimit=`9`
&tplPageActive = `@INLINE <li class="active">[[+pageNo]]</li>`
&tplPageFirst = `@INLINE <li class="control"><a href="[[+href]]">Начало</a></li>`
&tplPageFirstEmpty = ``
&tplPageLast = `@INLINE <li class="control"><a href="[[+href]]">Конец</a></li>`
&tplPageLastEmpty = ``
&tplPagePrevEmpty = ``
&tplPageNextEmpty = ``
]]
[[!$PAGE_NAVI?]]Сниппет LIST:
$parentID = 8073;
$placeholders = array();
$tpl_List = 'tpl_List';
$output = "";
//---------------------------------------------------------
$criteria = $modx->newQuery('modResource');
$criteria->select(array('modResource.id','modResource.pagetitle'));
$criteria->where(
array(
'parent' => $parentID,
'deleted' => 0
)
);
$criteria->sortby('modResource.publishedon','DESC');
$total = $modx->getCount('modResource',$criteria);
$totalVar = $modx->getOption('totalVar', $scriptProperties, 'total');
$modx->setPlaceholder($totalVar,$total);
$limit = $modx->getOption('pageLimit',$scriptProperties,10);
$offset = $modx->getOption('offset',$scriptProperties,0);
$criteria->limit($limit,$offset);
$all = $modx->getCollection('modResource',$criteria);
//----------------------------------------------------------
foreach($all as $value) {
$placeholders['link'] = $value->id;
$placeholders['pagetitle'] = $value->pagetitle;
$output .= $modx -> getChunk($tpl_List, $placeholders);
}
return $output;Чанк PAGE_NAVI:
<div class="pagenavi">
<div class="pagecount">Страница [[+page]] из [[+pageCount]]</div>
<ul class="pageList">[[!+page.nav]]</ul>
</div>Страниц, которые должны вывестись сейчас 11. На первый взгляд всё работает, но при ближайшем рассмотрении оказывается, что выводится только две страницы. На первой выводятся ссылки на то количество страниц, какой задан лимит, а на второй последняя, 11-я страница. Остальные пропадают. Куда копать не понимаю.
Еще, забыл. Чанк вывода tpl_List
<a href="[[+link]]">[[+pagetitle]]</a>смотрел по документации, там в примерах можно такой коротенький запихнуть в параметр &tpl = `@INLINE <a href="[[+link]]">[[+pagetitle]]</a>
`но я не совсем (точнее совсем) не разобрался, как к нему потом обращаться, как его вызывать.И еще, Василий писал, что можно организовать нумерацию с помощью плейсхолдера [[+idx]]. Но куда его присунуть? Пробовал в tpl_List вставить, не прокатывает. А с @INLINE не разобрался :-(
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Мне бы только разобраться, почему у меня выводится только: на странице №1 количество записей = limit, а на странице №2 последняя запись. Если поставить limit=3, то выведутся на странице №1 три записи, а на странице №2 запись №11. Ну и, было бы неплохо записи еще пронумеровать сквозной нумерацией. Мне бы только уточнить, можно это реализовать средствами pdoTools у меня в моих чанках и сниппетах. Или нужно самому что-нибуть придумать.
То есть, нужно написать свой правильный сниппет для вызова внутри pdoPage. Про это и статья по ссылке.
Ну и непонятно, что такого сложного в сниппете LIST, что не может сделать pdoResources из коробки?
Я сейчас понять не могу, почему выборка как-то странно выводится. Вроде условий минимум, должен вывести, разбить на нужное количество страниц и всё. Но где-то затык непонятный происходит
Удивляют меня такие заявления: «мне проще так, но я сам сделать ничего не могу, помогите»!
idx выставляет сам класс pdoFetch, если выбирать данные через его метод run().
Соответственно в вызове должно быть
А в сниппете