Мои заметки

Тут я делюсь своим различным опытом в области программирования и своего хобби.

Напишите мне
Отвечу по возможности по услгам

Мультидоменность контекстами

Шаг 1 Создаем плагин switchContextDomain на событие OnMODXInit:
 

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;
            }
        }
    }
}
 
Шаг 2 Назначаем контексту web настройки:
 

http_host = domain1.ru
site_start = ID главного ресурса в текущем контексте
site_url = http://domain1.ru/
 
Шаг 3 Назначаем контексту domain2 настройки:
 

http_host = domain2.ru
site_name = Название второго сайта
site_start = ID главного ресурса в текущем контексте
site_url = http://domain2.ru/
 
Итого Как видите, все довольно просто, что называется, до безобразия!