pdoPage, подскажите, где ошибка
Добрый день, друзья
Перед тем, как задавать вопрос, прочёл форум. Там писали, что, используя fenom вызов сниппета с pdoPage или pdoCalendar2, надо вначале формирования документа запустить их и результат присвоить переменной, а после уже выборку ресурсов запускать через pdoResource. Вообщем, сделал я так:
Когда запускаю этот же pdoPage сразу вместо переменной {$ipages} и использую getPlaceholders('page.nav'), или же запускаю через оригинальный синтаксис вызова сниппетов modx [[!pdoPage]], то получаю просто массив каждого ресурса полученного pdoPage, типа Array = [id=...]
Перед тем, как задавать вопрос, прочёл форум. Там писали, что, используя fenom вызов сниппета с pdoPage или pdoCalendar2, надо вначале формирования документа запустить их и результат присвоить переменной, а после уже выборку ресурсов запускать через pdoResource. Вообщем, сделал я так:
<тут_код_заголовка>
{set $parents = $_modx->resource.id}
{if $parents == 9}
{add $parents = '9,18'}
{/if}
{set $ipages = $_modx->runSnippet('!pdoPage', [
'element' => 'pdoResources',
'parents' => $parents,
'depth' => 3,
'where' => ['content_type' => 9],
'limit' => 12,
'resources' => '-101',
'sortdir' => 'ASC',
'pageLimit' => 5,
'pageLinkScheme' => '/{$pageVarKey}-{$page}',
'tplWrapper' => '@INLINE {$output}',
'tplPageWrapper' => '@INLINE {$prev}{$pages}{$next}',
'tplPage' => '@INLINE <a href={$href}>{$pageNo}</a>',
'tplPageActive' => '@INLINE <a href={$href} class="active">{$pageNo}</a>'
])}
<немного_вёрстки>
{* Это приходится делать, потому что после первого использования в pdoPage переменная, видимо, изменяется и ресурсы не выводятся. *}
{add $parents = $_modx->resource.id}
{if $parents == 9}
{add $parents = '9,18'}
{/if}
{$_modx->runSnippet('!pdoResources', [
'parents' => $parents,
'resources' => '-101',
'where' => ['content_type' => 9],
'sortdir' => 'ASC',
'tvPrefix' => '',
'limit' => '1000',
'includeTVs' => 'tv_preview_image,tv_price_start',
'tplWrapper' => '@INLINE {$output}',
'tpl' => '@FILE chunks_product/products_list_preview.tpl'
])}
<немного_вёрстки>
<div class=paginaton>
{$ipages}
</div>
получаю ничего.Когда запускаю этот же pdoPage сразу вместо переменной {$ipages} и использую getPlaceholders('page.nav'), или же запускаю через оригинальный синтаксис вызова сниппетов modx [[!pdoPage]], то получаю просто массив каждого ресурса полученного pdoPage, типа Array = [id=...]
Комментарии: 4
Не вижу tpl для pdoResources в вызове сниппета с $ipages, предполагаю что из-за этого.
Алексей, спасибо за ответ!
Получилось сделать так, что ссылки выводятся, но урл генерируется не по схеме, и выводятся ссылки списком, чанки введённые к ним не применяются.
По ссылкам
'tplPage' => '@INLINE <a href={$href}>{$pageNo}</a>
Вот это ведь отвечает за вывод обычной ссылки на страницу.Получилось сделать так, что ссылки выводятся, но урл генерируется не по схеме, и выводятся ссылки списком, чанки введённые к ним не применяются.
По ссылкам
web.site/katalog/{$pageVarKey}-{$page}
а получаетсяweb.site/katalog/katalog/{$pageVarKey}-{$page}
Также на месте самого сниппета остаётся вывод этого массива со всеми элементами и подэлементами, данными, которые получил сниппет.
Вообщем, так:
Также добавил этот плагин: Ссылка на документацию
После вызова сниппета, использование заработало для:
У меня система не понимает переменную {$uri}, и ничего не выводит.
Но я не пойму, почему у меня переключение страниц не согласуется с предыдущим вызовом на странице pdoResources? То есть ресурсы как выводились до 1000, так и выводятся. Или меняю на 10, так только 10 первых и выводится. а вот при переключении по страницам — остаются те же первые 10 результатов, или все.
'pageLinkScheme' => '/[[+pageVarKey]]-[[+page]]',
В вызове сниппета через феном в схеме ссылки использовать только классические теги модх. У меня иначе не заработало.Также добавил этот плагин: Ссылка на документацию
После вызова сниппета, использование заработало для:
{$_modx->getPlaceholder('page.nav')}
Чтобы не выводился ненужный массив, пришлось оставить set{set $ipages = $_modx->runSnippet('!pdoPage', [
Иначе даже при запуске сниппета сразу через $_модх — у меня ничего не работало.У меня система не понимает переменную {$uri}, и ничего не выводит.
Но я не пойму, почему у меня переключение страниц не согласуется с предыдущим вызовом на странице pdoResources? То есть ресурсы как выводились до 1000, так и выводятся. Или меняю на 10, так только 10 первых и выводится. а вот при переключении по страницам — остаются те же первые 10 результатов, или все.
Решён вопрос.
Я сначала не понял, и вроде чётко не написано в документации, что надо вместо pdoResources использовать pdoPage, если нужна постраничность.
Я сначала не понял, и вроде чётко не написано в документации, что надо вместо pdoResources использовать pdoPage, если нужна постраничность.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.