@eugene159

Почему в pdoPage при переходе на другую страницу новостей сбрасывается контекст? Как это исправить?

Есть страница с новостями. На ней есть pdoPage. Вот вызов:
[[!pdoPage?
    &elementClass=`modSnippet`
    &element=`pdoResources`

    &parents=`[[*id]]`
    &tpl=`allnewsItem`
    &includeTVs=`newsImg, newsDate`
    &prepareTVs=`1`
    &depth=`0`
    &limit=`6`
    &includeContent=`1`

    &ajax=`1`
    &ajaxMode=`default`

    &pageVarKey=`page`
    &pageNavVar=`page.nav`
]]

На сайте два контекста — web (по умолчанию, он русский) и en (английский).
В карточке новости есть вызов сниппета, результат которого зависит от контекста. Вот примерный код.
<?php
switch($context = $modx->context->key) {
  case 'web':
    $result = 'Привет';
    break;
  case 'en':
    $result = 'Hello';
    break;
}

return $result;

Если я зайду на английскую версию сайта, открою страницу с новостями, в карточке будет выводиться «Hello». Потом я перейду, например, на страницу 2. И в карточке будет выводиться «Привет». Хотя я все еще на английской версии сайта.

Почему так происходит? Должно же выводиться «Hello».
Как это можно исправить?

Использовать лексиконы — не вариант, т.к. строка в реальном проекте создается динамически.
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
an-tar
@an-tar Куратор тега MODX
Full stack web developer
pdoPage поддерживает общий для всех сниппетов из пакета pdoTools параметр &context, передайте туда контекст из системного параметра вот так:

[[!pdoPage?
    &elementClass=`modSnippet`
    &element=`pdoResources`

    &parents=`[[*id]]`
    &tpl=`allnewsItem`
    &includeTVs=`newsImg, newsDate`
    &prepareTVs=`1`
    &depth=`0`
    &limit=`6`
    &includeContent=`1`
    &context=`[[*context_key]]`
    &ajax=`1`
    &ajaxMode=`default`

    &pageVarKey=`page`
    &pageNavVar=`page.nav`
]]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы