Дата публикации
13 Сентября 2019
Дата изменения
5 Июля 2020
Уникальных просмотров
2.176

Оглавление

Если на одной странице вызвать сниппет 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
Время запросов: 0,1422 s
Количество запросов: 25
Источник: cache