Пагинация вложена сама в себя

Помогите разобраться с пагинацией:
{var $result = '!pdoPage' | snippet : [
'ajaxMode' => 'default',
'parents' => 9,
'sortby' => $_modx->resource.sortBy,
'sortdir' => $_modx->resource.sortDir,
'includeTVs' => 'size,area,image1,pro,price1',
'tpl' => '@FILE elements/chunks/card.tpl',
'limit' => 15,
'tvPrefix' => '',
'where' => $_modx->resource.tagfilter,
'tvFilters' => $_modx->resource.tagfilter2,
'tplPageWrapper' => '@INLINE <nav aria-label="Page navigation"><ul class="pagination  justify-content-center">{$prev}{$pages}{$next}</ul></nav>',
'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 rel="prev"><a class="page-link" href="{$href}">«</a></li>',
'tplPageNext' => '@INLINE <li rel="next"><a class="page-link" href="{$href}">»</a></li>',
'tplPagePrevEmpty' => '@INLINE ',
'pageLimit' => 6,
'tplPageNextEmpty' => '@INLINE ',
'ajaxElemWrapper' => '#child_list',
'ajaxElemRows' => '#child_list .card-deck',
'ajaxElemPagination' => '#child_list .pagination',
'ajaxElemLink' => '#child_list .pagination a',
]}

{$result}
    {$_modx->getPlaceholder('page.nav')}
{else}
    <p class="lead">Нет подходящих проектов</p>
{/if}
Вот этот код работает странно, При открытии страницы каталога, он нормально отображает пагинацию, а при переходе на другую страницу он дважды вкладывает пагинацию в tplPageWrapper:


<nav aria-label="Page navigation">
    <ul class="pagination  justify-content-center">
        <nav aria-label="Page navigation">
            <ul class="pagination  justify-content-center">
                <li rel="prev"><a class="page-link" href="?page=2&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">«</a></li>
                <li class="page-item"><a class="page-link" href="?page=1&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">1</a></li>
                <li class="page-item"><a class="page-link" href="?page=2&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">2</a></li>
                <li class="page-item active"><a class="page-link" href="?page=3&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">3</a></li>
                <li class="page-item"><a class="page-link" href="?page=4&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">4</a></li>
                <li class="page-item"><a class="page-link" href="?page=5&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">5</a></li>
                <li class="page-item"><a class="page-link" href="?page=6&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">6</a></li>
                <li rel="next"><a class="page-link" href="?page=4&pageId=9&hash=e09036a1ecf29af51e5997ed9933901bedafefbc">»</a></li>
            </ul>
        </nav>
    </ul>
</nav>
Если по ссылке открыть сразу допустим 3-ю страницу, то этой вложенности нет. Она появляется, когда непосредственно по пагинации щёлкаешь. Со штандартными шаблонами пагинации таже беда.
Misha Bulic
29 ноября 2018, 16:56
modx.pro
926
0

Комментарии: 6

Василий Столейков
07 декабря 2018, 07:27
0
Это потому что ты в своём шаблоне пагинации не указываешь класс pagination И для обёртки. Это необходимо, исследуй чанк по умолчанию в параметре tplPageWrapper.
В твоём случае, для тега nav также нужен класс pagination. Если при этом едет вёрстка, то её уже и поправляй под эту конструкцию.
    Misha Bulic
    07 декабря 2018, 10:47
    0
    Неа, убрал вообще nav и оставил только ul всё равно такая же фигня
      Василий Столейков
      07 декабря 2018, 11:27
      0
      Так не убрать нужно, а добавить класс pagination. Должны быть 2 одинаковых класса вложенных один в другой.
      В чанке по умолчанию это же есть:
      @INLINE <div class="pagination"><ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>
        Misha Bulic
        07 декабря 2018, 11:32
        0
        Неа, всё равно так же
          Василий Столейков
          07 декабря 2018, 13:08
          0
          Попробуй убирать по очереди параметры шаблонов, чтобы подставлялись дефолтные чанки. Тогда сможешь понять методом исключения где зарыта проблема.
          И скинь полный код всего твоего контейнера #child_list, чтобы было видно где именно ты вызываешь сниппет, а где пагинацию, а то ты только вызовы показал.
          Дело точно в твоей обёртке. Вот пример правильной обёртки.
            Maksim
            25 октября 2020, 14:25
            0
            Добрый день!

            как то решается вопрос вложенной пагинации, использую дефолтный код для вызова pdoPage
            <div id="pdopage">
                    <div class="rows">
                    [[!pdoPage?
                        &tpl=`@INLINE <div>[[+pagetitle]]</div>`
                        &ajaxMode=`default`
                    ]]
                </div>
                [[!+page.nav]]
            </div>
            если нажать на переход на страницу в пагинации, то после Ajax загрузки пагинация оборачивается в еще один ul (хотя в документации сказано:
            Внутри [[+page.nav]] у нас div с классом pagination — так в pdoPage по умолчанию
            , также в документации неверный дефолтный чанк &tplPageWrapper
            @INLINE <div class="pagination"><ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul></div>
            )
            <ul class="pagination">
                <ul class="pagination">
                    <li class="page-item disabled"><a class="page-link" href="#">Первая</a></li>
                        ...
                </ul>
            </ul>
            только при Ajax такое происходит, подскажите как правильно настроить?

            Использую:
            MODX Revolution 2.7.3-pl
            PdoTools 2.12.7-pl
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6