Две и более пагинации на одной странице с помощью pdoPage
Сделать две и более пагинации на одной странице c помощью pdoPage.
Оглавление
Если на одной странице вызвать сниппет 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}
Как видите, чтобы добиться работы нескольких пагинаций на одной странице, достаточно просто переопределить пару параметров.
Время запросов: 0,1422 s
Количество запросов: 25
Источник: cache