переключение контекста.
Доброго времени суток. Продолжаю войну с переводами, предыдущую заметку решил оставить, так как по сути решение нашел, но оно не работает, а именно не переключаются контексты.
Что я имею:
Контекст по умолчанию 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 то все порядке. сталкивался кто с таким?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.