Jump to main content Jump to doc navigation

У вас есть выбор при совместном использовании одной базы данных и менеджера в нескольких доменах. Вы можете использовать первичный интерфейсный интерфейс (известный как «web») для обработки всех доменов, или вы можете создать уникальный файл шлюза для каждого домена, чтобы напрямую инициализировать определенный контекст. Если вы используете один шлюз, вы бы использовали плагин для переключения контекстов, зарегистрированных в событии OnHandleRequest, что-то вроде этого:

<?php
/* не выполнять, если в Панеле управления */
if ($modx->context->get('key') == 'mgr') {
        return;
}

switch ($_SERVER['HTTP_HOST']) {
        case 'domain2.tld':
                // если http_host принадлежит конкретному домену, переключить контекст
                $modx->switchContext('domain2.tld');
                break;
        case 'domain3.tld':
                // если http_host принадлежит конкретному домену, переключить контекст
                $modx->switchContext('domain3.tld');
                break;
        default:
                // по умолчанию ничего не делать
                break;
}
?>

В качестве альтернативы, вы просто скопируете файл index.php из веб-контекста по умолчанию (вместе с core.config.php и .htaccess для правил перезаписи, измененных соответствующим образом) в другой каталог и измените строку

$modx->initialize('web');

в

$modx->initialize('aContextNameOfYourChoice');

Обратите внимание, что вы также можете просто скопировать index.php в тот же каталог и переименовать его, чтобы сделать это, но ваши правила перезаписи должны быть достаточно умными, чтобы направлять запросы в соответствующий контекстный шлюз, и вам нужно будет настроить запрос request_controller в контекстных настройках соответственно.

Вы также можете использовать пользовательское расположение ядра в любом из этих сценариев; это не зависит от контекстно-управляемых многосайтовых возможностей.

Ознакомьтесь с компонентом GatewayManager