переключение контекста.
        Доброго времени суток. Продолжаю войну с переводами, предыдущую заметку решил оставить, так как по сути решение нашел, но оно не работает, а именно не переключаются контексты.
Что я имею:
Контекст по умолчанию web
— cultureKey — ru
— site_start — 1
— error_page — 1
Создал новый контекст en
— cultureKey — en
— site_start — 197
— error_page — 197
Далее, я уже даже прибегнул к тому, что в плагине на событие OnHandleRequest прописал принудительное
Я что то упустил? Контексты как то иначе переключаются? Буду крайне благодарен любой информации… 4е сутки веду войну…
    
    
                                                                                
            Что я имею:
Контекст по умолчанию 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е сутки веду войну…
Комментарии: 14
                Так ведь можно же воспользоваться плагином отсюда. Уже напамять знаю :-). 
Просто в контекстах создавать нужные настройки.
                    Просто в контекстах создавать нужные настройки.
                Отлично!!! Такого я еще не находил, спасибо, попробую))            
                    
                Не сработало… Как минимум 
                    - [[BabelLinks]]
 
                Мне кажется, там чего-то не хватает… В каментах люди пишут сообщения типа 
                    2. при обновлении MODx надо контролировать файлы index.php
Спасибо!Или уже очень поздно, и я плохо вижу, или в заметке на самом деле нету ничего касаемо копирования файлов…
По index.php. А если он обновится в MODx? Веть скопированные файлы так же хорошо бы обновить до актуальной версии.
                Я вообще перестал понимать происходящее… Если я в index.php заменю дефолтное значение 
Если же в index.php останется web то в плагине смена контекста не работает…
ps
                    /* 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 как был русский так и остается…            
                Там совсем не нужно трогать index.php. Просто внимательно все сделать. Не забыть про .htaccess, и прочие мелочи. А еще есть логи ошибок сервака и самого MODX.            
                    
                Добавь в настройки контекста:
                    base_url = "/"
http_host = "en.yoursite.ru"
site_url = "http://en.yoursite.ru/"Замени yoursite.ru на свой. Должно заработать.            
                А я же могу сделать yoursite.ru/en/?
В этих блоках мне надо указать en,ru?
                    В этих блоках мне надо указать 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]            
                В чем проблема? Можешь. Если у тебя нет поддоменов, то создавай виртуальные каталоги-контейнеры (en/ru) — т.е. ресурсы со start_id обзывай en и ru (они должны быть контейнерами). Мой пример выше для поддоменов. Тогда тебе не нужны эти параметры.
.httpaccess вообще не причем. MODX сам рулит.
                    .httpaccess вообще не причем. MODX сам рулит.
                Когда я делал мультиязычность на своём проекте с помощью babel я использовал следующие мануалы:
Документация Babel на русском
MODx REVO multilanguage Мультиязычность + Babel (способ настройки без изменения .htacces)
Пример плагина: Switchlang
Статья немного битая, но в целом всё понятно, понятно что
В зависимости от кол-ва требуемых языков, создаются папки, в моём случае это "en" и "es" т.е. английский и испанский (хочу заметить, что web — это русский язык).
Всё отлично работает, также и с пакетом Article (дополнение для новостных сайтов, добавляет новую возможность "Создать->Создать Статьи здесь" и уже внутри создавать дочерние документы и с интерфейсом управления).
                    Документация 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 (дополнение для новостных сайтов, добавляет новую возможность "Создать->Создать Статьи здесь" и уже внутри создавать дочерние документы и с интерфейсом управления).
                Нашел еще интересный плагин для роутинга контекстов
NEW CONTEXT ROUTING PLUGIN FOR MODX
chsmedien.com/blog/2014/01/new-context-routing-plugin-for-modx
(modx.com/extras/package/xrouting
                    NEW CONTEXT ROUTING PLUGIN FOR MODX
chsmedien.com/blog/2014/01/new-context-routing-plugin-for-modx
(modx.com/extras/package/xrouting
                Здравствуйте! Никто не сталкивался с тем, что не выводится ссылка на активный контекст.
Само переключение контекстов прекрасно работает, вот ссылка на активный не выводится. Стандартный вызов: [[BabelLinks]]
                    Само переключение контекстов прекрасно работает, вот ссылка на активный не выводится. Стандартный вызов: [[BabelLinks]]
                Разобрался, нужно было выставить параметр &showCurrent=`1`.            
                    
                У меня несколько обратная ситуация, в оригинал версии не выводит переключатель на english, а когда захожу в ручную на английски url то все порядке. сталкивался кто с таким?            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.