Хочу реализовать мультиязычность и мультидоменность - на русском сайт в RU, на английском COM...
Использую modX3…
Хочу реализовать мультиязычность и мультидоменность, т.е.
для сайта на русском домен в зоне RU, а для английского домен в зоне COM…
Настроил контексты, домены открывает и для RU и для COM…
Но почему-то контент для вывода берет с основного ресурса, и для RU, и для COM,
не меняет содержимое в зависимости от домена…
Хочу реализовать мультиязычность и мультидоменность, т.е.
для сайта на русском домен в зоне RU, а для английского домен в зоне COM…
Настроил контексты, домены открывает и для RU и для COM…
Но почему-то контент для вывода берет с основного ресурса, и для RU, и для COM,
не меняет содержимое в зависимости от домена…
Комментарии: 14
Настроил контекстыКак именно настроил? Указал site_url, site_start, http_host? Плагин для переключения контекстов написал?
Да, и плагин и site_url, другие параметры…
Как ты выводишь содержимое?
Через *content…
Во 2м modx и на одном домене — спокойно настраивал мультиязычность и babel, а мультидоменность — почему-то не берет из разных контекстов для разных доменов
Во 2м modx и на одном домене — спокойно настраивал мультиязычность и babel, а мультидоменность — почему-то не берет из разных контекстов для разных доменов
Плагин на какое событие? Код плагина покажи
if ($modx->event->name != 'OnMODXInit' || $modx->context->key == 'mgr') {
return;
}
if ($host = str_replace('www.', '', $_SERVER['HTTP_HOST'] ?: $_SERVER['SERVER_NAME'])) {
// Выбираем контексты с настройкой http_host
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value:!=' => ''));
$q->select('context_key as ctx, value as host');
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
// Учитываем наш запрос в БД
$modx->queryTime += microtime(true) — $tstart;
$modx->executedQueries++;
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
// Если нашли нужный контекст — переключаем на него
if ($row['host'] == $host) {
$modx->switchContext($row['ctx']);
break;
}
}
}
}
return;
}
if ($host = str_replace('www.', '', $_SERVER['HTTP_HOST'] ?: $_SERVER['SERVER_NAME'])) {
// Выбираем контексты с настройкой http_host
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value:!=' => ''));
$q->select('context_key as ctx, value as host');
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
// Учитываем наш запрос в БД
$modx->queryTime += microtime(true) — $tstart;
$modx->executedQueries++;
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
// Если нашли нужный контекст — переключаем на него
if ($row['host'] == $host) {
$modx->switchContext($row['ctx']);
break;
}
}
}
}
ты проверял переключается ли контекст?
как это сделать?
В шаблоне вывести ключ контекста [[*context_key]]
пустой...(
Ты в шаблоне прописал?
да
Если ты прописал в шаблоне [[*context_key]], то он обязан был вывестись. Тут есть два варианта: ты его не видишь из-за стилей, ты прописал не в шаблоне. Есть и третий, ты не копировал, а набирал буквы сам и опечатался.
Вопрос решил. Переустановил modx… И чудо — всё заработало…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.