переключение контекста.

Доброго времени суток. Продолжаю войну с переводами, предыдущую заметку решил оставить, так как по сути решение нашел, но оно не работает, а именно не переключаются контексты.
Что я имею:
Контекст по умолчанию web
— cultureKey — ru
— site_start — 1
— error_page — 1
Создал новый контекст en
— cultureKey — en
— site_start — 197
— error_page — 197

Далее, я уже даже прибегнул к тому, что в плагине на событие OnHandleRequest прописал принудительное
$_SESSION['lang'] = 'en';
$modx->switchContext('en');
$modx->setOption('cultureKey', 'en');
В теории при любой передаче параметра должен же переключиться контекст? Но у меня ничего не происходит… Вообще…
Я что то упустил? Контексты как то иначе переключаются? Буду крайне благодарен любой информации… 4е сутки веду войну…
Николай
23 сентября 2013, 20:22
modx.pro
1
10 579
0

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

Max Skoryk
24 сентября 2013, 00:57
0
Так ведь можно же воспользоваться плагином отсюда. Уже напамять знаю :-).
Просто в контекстах создавать нужные настройки.
    Николай
    24 сентября 2013, 01:11
    0
    Отлично!!! Такого я еще не находил, спасибо, попробую))
      Николай
      24 сентября 2013, 03:42
      0
      Не сработало… Как минимум
        [[BabelLinks]]
      не выводит ничего, хотя сниппет установлен, контексты созданы, и прописаны…
        Николай
        24 сентября 2013, 03:53
        0
        Мне кажется, там чего-то не хватает… В каментах люди пишут сообщения типа
        2. при обновлении MODx надо контролировать файлы index.php

        Спасибо!
        По index.php. А если он обновится в MODx? Веть скопированные файлы так же хорошо бы обновить до актуальной версии.
        Или уже очень поздно, и я плохо вижу, или в заметке на самом деле нету ничего касаемо копирования файлов…
        Николай
        24 сентября 2013, 05:56
        0
        Я вообще перестал понимать происходящее… Если я в index.php заменю дефолтное значение
        /* Initialize the default 'web' context */
        $modx->initialize('web');
        На
        /* Initialize the default 'web' context */
        $modx->initialize('en');
        То $modx->switchContext('web'); и $modx->switchContext('en'); работает!
        Если же в index.php останется web то в плагине смена контекста не работает…

        ps
        if ($_SESSION['lang'] == "en") { 
            $modx->setOption('cultureKey', 'en'); 
        } else { 
            $modx->setOption('cultureKey', 'ru'); 
        }
        В office переводится все ок, на разных страницах разный язык, а вот ms2 как был русский так и остается…
          Max Skoryk
          24 сентября 2013, 09:23
          0
          Там совсем не нужно трогать index.php. Просто внимательно все сделать. Не забыть про .htaccess, и прочие мелочи. А еще есть логи ошибок сервака и самого MODX.
            Сергей Шлоков
            24 сентября 2013, 10:21
            0
            Добавь в настройки контекста:
            base_url = "/"
            http_host = "en.yoursite.ru"
            site_url = "http://en.yoursite.ru/"
            Замени yoursite.ru на свой. Должно заработать.
              Николай
              24 сентября 2013, 12:55
              0
              А я же могу сделать yoursite.ru/en/?
              В этих блоках мне надо указать en,ru?
              # The Friendly URLs part
              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteCond %{REQUEST_FILENAME} !-d
              RewriteRule ^(en|ru)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
                Сергей Шлоков
                24 сентября 2013, 13:36
                0
                В чем проблема? Можешь. Если у тебя нет поддоменов, то создавай виртуальные каталоги-контейнеры (en/ru) — т.е. ресурсы со start_id обзывай en и ru (они должны быть контейнерами). Мой пример выше для поддоменов. Тогда тебе не нужны эти параметры.
                .httpaccess вообще не причем. MODX сам рулит.
              Павел Левин
              01 октября 2013, 18:59
              0
              Когда я делал мультиязычность на своём проекте с помощью babel я использовал следующие мануалы:
              Документация Babel на русском
              MODx REVO multilanguage Мультиязычность + Babel (способ настройки без изменения .htacces)

              Пример плагина: Switchlang
              <?php
              $lankey = substr($_SERVER['REQUEST_URI'],1,2);
              if($modx->context->get('key')!="mgr"){
                  //grab the current domain from the http_host option
                  switch ($lankey) {
                      case 'en':
                          //switch the context
                          $modx->switchContext('en');
                          //set the cultureKey
                          $modx->setOption('cultureKey','en');
                          break;
                      case 'es':
                          $modx->switchContext('es');
                          $modx->setOption('cultureKey', 'es');
                          break;
                      default:
                          // Set the default language/context here
                          $modx->switchContext('web');
                          $modx->setOption('cultureKey', 'ru');
                          break;
                  }
              }
              системное событие: OnHandleRequest

              Статья немного битая, но в целом всё понятно, понятно что
              </span><span class="pun">
              не должно быть в config.core.php и вообще его не нужно открывать)

              В зависимости от кол-ва требуемых языков, создаются папки, в моём случае это "en" и "es" т.е. английский и испанский (хочу заметить, что web — это русский язык).

              Всё отлично работает, также и с пакетом Article (дополнение для новостных сайтов, добавляет новую возможность "Создать->Создать Статьи здесь" и уже внутри создавать дочерние документы и с интерфейсом управления).
                Рустам С
                21 марта 2015, 00:04
                1
                0
                Нашел еще интересный плагин для роутинга контекстов

                NEW CONTEXT ROUTING PLUGIN FOR MODX
                chsmedien.com/blog/2014/01/new-context-routing-plugin-for-modx

                (modx.com/extras/package/xrouting
                  nekto
                  18 мая 2015, 20:37
                  0
                  Здравствуйте! Никто не сталкивался с тем, что не выводится ссылка на активный контекст.
                  Само переключение контекстов прекрасно работает, вот ссылка на активный не выводится. Стандартный вызов: [[BabelLinks]]
                    nekto
                    18 мая 2015, 20:40
                    0
                    Разобрался, нужно было выставить параметр &showCurrent=`1`.
                      mukan120689
                      31 июля 2017, 14:59
                      0
                      У меня несколько обратная ситуация, в оригинал версии не выводит переключатель на english, а когда захожу в ручную на английски url то все порядке. сталкивался кто с таким?
                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    14