Разные домены для языков в bLang

Задача заключается в том, чтобы разные языковые версии сайта работали на разных доменах. Для bLang решается с помощью плагина:

<?php
if ($modx->event->name == 'OnWebPageInit' || $modx->event->name == 'OnPageNotFound') {
    $domains = explode(PHP_EOL, $domains);
    $scheme = parse_url(MODX_SITE_URL, PHP_URL_SCHEME);
    foreach ($domains as $domain) {
	$domain = explode('=', trim($domain));
	if (count($domain) !== 2) continue;
        $domain[0] = trim($domain[0]);
	$domain[1] = trim($domain[1]);
	$key = '_' . $domain[1] . '_url';
	$url = !empty($modx->documentIdentifier) && is_numeric($modx->documentIdentifier) ? $modx->makeUrl($modx->documentIdentifier) : '/';
	$modx->config[$key] = $scheme . '://' . $domain[0] . $url;
	if (!isset($_GET['lang']) && $domain[0] == $_SERVER['HTTP_HOST']) {
	    $_GET['lang'] = $domain[1];
	}
    }
    if (!isset($_GET['lang'])) $modx->sendErrorPage();
}
if ($modx->event->name == 'OnPageNotFound' && isset($_GET['lang'])) {
    $modx->systemCacheKey = 'notfound_' . $_GET['lang'];
}
if ($modx->event->name == 'OnMakeDocUrl') {
    $modx->event->stopPropagation();
}

Плагин нужно разместить перед bLang. Также для плагина необходимо создать параметр domains типа textbox и в нем указать сопоставление доменов и языков:

sitename.com=en
sitename.ru=ru

Затем домены должны быть внесены в файл assets/cache/siteHostnames.php, а в htaccess следует закомментировать:

#RewriteRule ^([a-z]{2})$ $1/ [R=301,L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^([a-z]{2})/(.*)$ index.php?q=$2&lang=$1 [L,QSA]

Теперь язык будет меняться в зависимости от домена.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.