Оглавление

Если на одной странице вызвать сниппет pdoPage более одного раза, то при переключении страниц пагинации — переключение происходит во всех вызовах. Давайте быстро разберемся почему так происходит.

Активируем несколько пагинаций

В документации к pdoPage ищем параметры pageVarKey и pageNavVar. Если посмотреть их значения по умолчанию, можно понять что они связаны между собой. Параметр pageVarKey имеет значение  -page, тогда как pageNavVar содержит в себе имя плейсхолдера — page.nav. При активации первого сниппета pdoPage, вы скорее всего указываете значения по умолчанию, примерно так:

/* modParser */
[[!pdoPage?
    &parents=`0`
]]
[[!+page.nav]]

/* pdoParser */
{$_modx->runSnippet('!pdoPage', [
'parents' => 0,
])}
{'page.nav' | placeholder}

При вызове второго сниппета pdoPage, если не поменять значение параметров pageVarKey и pageNavVar, все вызовы будут реагировать на переключение страниц. Чтобы этого избежать, необходимо переопределить имя переменной для поиска страниц в url и прописать новое имя в вызове плейсхолдера pageNavVar.

Пример двух и более пагинаций

Первый вызов pdoPage:

/* modParser */
[[!pdoPage?
    &parents=`0`
    &pageVarKey=`news`
    &pageNavVar=`news.nav`
]]
[[!+news.nav]]

/* pdoParser */
{$_modx->runSnippet('!pdoPage', [
'parents' => 0,
'pageVarKey' => 'news',
'pageNavVar' => 'news.nav',
])}
{'news.nav' | placeholder}

Второй вызов pdoPage:

/* modParser */
[[!pdoPage?
    &parents=`0`
    &pageVarKey=`articles`
    &pageNavVar=`articles.nav`
]]
[[!+articles.nav]]

/* pdoParser */
{$_modx->runSnippet('!pdoPage', [
'parents' => 0,
'pageVarKey' => 'articles',
'pageNavVar' => 'articles.nav',
])}
{'articles.nav' | placeholder}

И третий:

/* modParser */
[[!pdoPage?
    &parents=`0`
    &pageVarKey=`photo`
    &pageNavVar=`photo.nav`
]]
[[!+photo.nav]]

/* pdoParser */
{$_modx->runSnippet('!pdoPage', [
'parents' => 0,
'pageVarKey' => 'photo',
'pageNavVar' => 'photo.nav',
])}
{'photo.nav' | placeholder}

Как видите, чтобы добиться работы нескольких пагинаций на одной странице, достаточно просто переопределить пару параметров.