Разное количество новостей на страницах пагинации
Всем доброго дня!
Столкнулся с задачей вывода разного количества новостей-анонсов на страницах пагинации. Т.е. например, всего 35 новостей. На первой странице выводим – 11, далее – по 12 на каждой.
Для разбивки на страницы используется pdoPage.
Сейчас реализовал следующим образом:
1. Организовал вызов сниппета с пагинацией и сделал вывод по плейсхолдеру.
2. На первой странице этот вывод скрываю и начинаю показывать со второй.
3. На первой странице организую аналогичный вызов, но уже через ms2GalleryResources. Задача стоит показать 11 ресурсов, так, чтобы на второй странице, где выводятся результаты другого сниппета все было по порядку, без пропущенных ресурсов. Сделал так: создал тестовый каталог с ресурсом-пустышкой и добавил его в parents. Дату публикации поставил 2037 годом, чтобы всегда первым этот ресурс выводился (сортировка идет по дате, всегда). Далее выставил шаблон для первого ресурса – пустышку '@INLINE'.
Окей! Задача решилась, скорость, в общем-то хорошая, однако, мне кажется, что есть более элегантное решение. Без дублей вызова. Коллеги, прошу поделиться опытом, если такой был.
Ниже предлагаю код моего решения:
Столкнулся с задачей вывода разного количества новостей-анонсов на страницах пагинации. Т.е. например, всего 35 новостей. На первой странице выводим – 11, далее – по 12 на каждой.
Для разбивки на страницы используется pdoPage.
Сейчас реализовал следующим образом:
1. Организовал вызов сниппета с пагинацией и сделал вывод по плейсхолдеру.
2. На первой странице этот вывод скрываю и начинаю показывать со второй.
3. На первой странице организую аналогичный вызов, но уже через ms2GalleryResources. Задача стоит показать 11 ресурсов, так, чтобы на второй странице, где выводятся результаты другого сниппета все было по порядку, без пропущенных ресурсов. Сделал так: создал тестовый каталог с ресурсом-пустышкой и добавил его в parents. Дату публикации поставил 2037 годом, чтобы всегда первым этот ресурс выводился (сортировка идет по дате, всегда). Далее выставил шаблон для первого ресурса – пустышку '@INLINE'.
Окей! Задача решилась, скорость, в общем-то хорошая, однако, мне кажется, что есть более элегантное решение. Без дублей вызова. Коллеги, прошу поделиться опытом, если такой был.
Ниже предлагаю код моего решения:
{$_modx->runSnippet('!pdoPage',[
'parents' => '[[*id]],112',
'tpl' => 'blog.preview.tpl',
'where' => [
'template:!=' => '6'
],
'tvPrefix' => '',
'includeTVs' => 'articleMainTag',
'element' => 'ms2GalleryResources',
'includeThumbs' => 'wide,big,medium',
'limit' => 12,
'pageVarKey' => 'page',
'tplWrapper' => '@INLINE <div class="blog-previews-block alt clearfix">{$output}</div>',
'pageLinkScheme' => '/[[+pageVarKey]]/[[+page]]',
'tplPageWrapper' => '@INLINE [[+prev]][[+pages]][[+next]]'
'tplPage' => '@INLINE <a href="[[+href]]">[[+pageNo]]</a>',
'tplPagePrev' => '@INLINE <a href="[[+href]]" class="prev"></a>',
'tplPageNext' => '@INLINE <a href="[[+href]]" class="next"></a>',
'tplPageActive' => '@INLINE <a hreg="javascript:void(0);" class="active">[[+pageNo]]</a>'
'tplPageSkip' => '@INLINE <span class="disabled">...</span>',
'tplPageFirstEmpty' => '@INLINE',
'tplPageLastEmpty' => '@INLINE',
'tplPagePrevEmpty' => '@INLINE',
'tplPageNextEmpty' => '@INLINE'
'toPlaceholder' => 'posts'
])}
{if $_modx->getPlaceholder('page') == 1}
{$_modx->runSnippet('!ms2GalleryResources',[
'parents' => '[[*id]],112',
'tpl' => 'blog.preview.tpl',
'where' => [
'template:!=' => '6'
],
'tplFirst' => '@INLINE'
'tpl_2' => 'blog.previewFirst.tpl',
'tvPrefix' => '',
'includeTVs' => 'articleMainTag',
'element' => 'ms2GalleryResources',
'includeThumbs' => 'wide,big,medium',
'limit' => 12,
'tplWrapper' => '@INLINE <div class="blog-previews-block clearfix">{$output}</div>',
])}
{else}
{$_modx->getPlaceholder('posts')}
{/if}
<div class="blog-paggination">
<div class="blog-paggination-wrapper">
{$_modx->getPlaceholder('page.nav')}
</div>
</div>
P.S. Ребята, очень буду благодарен, если подскажете, как на fenom в parents, несколько родителей указывать, если один из них – текущий id – $_modx->resource.id ($_modx->resource.id,56,65 – не работает)