Мультидоменность MODx Revolution


Подготовка хостинга

Перед тем как начать настройку мультисайтинга на MODX Revolution, необходимо подготовить наш хостинг:

  • Установите в качестве корневой папки  для всех необходимых домейнов папку, в которой установлен MODX  Revolution.
  • Необходимо настраивать только домены второго уровня (имя.ru), нет нужды конфигурировать домены третьего уровня (имя.имя.ru) на этом этапе. Их мы настроим в самом MODX Revolution в продолжении нашего урока.

  • Нам понадобится доступ к файлам сайта, поэтому вам нужно позаботиться о том, чтобы у вас был FTP доступ или альтернативный вариант.

Создание контекстов 

Мультисайтинг на MODX Revolution реализуется посредствам "Contexts" (Контексты).
Когда вы впервые вошли в панель управления   MODX Revolution, вы наверняка заметили  в левом меню  иконку маленького домика с названием  "web". Это Контекст сайта по-умолчанию. 

Контекст веб сайта по-умолчанию в MODx Revolution 

Мы добавим дополнительные контексты для каждого из наших сайтов. Создание контекстов производиться из меню System > Contexts: .

Добавление контекстов в Системных настройках MODx Revolution 

Как только вы перейдете на страницу контекстов, вы увидете таблицу с двумя уже существующими контектами - ‘web’ и ‘mgr’. ‘mgr’ - это контекст интерфейса управления MODX Revolution. Никакой из этих двух контектов (‘web’ и ‘mgr’) не может быть удалён.

Нажмите на кнопку ‘Create New‘ для создания контекста дополнительного сайта. ‘Content Key‘ это имя вашего контекста, которое будет отображаться в меню Resources в панели администрации.

Название контекста ‘Content Key‘ должно быть простым и без пробелов. 

Создание контекста для второго домена 

Обновите меню Resources (нажав на зеленые стрелочки в меню) и вы увидите новосозданный контекст.
Создайте главную страницу сайта и страницу ошибки в нашем новом контексте. В продолжении урока мы укажем, какая из страниц является главной и какая страницей ошибки.

На данном этапе у вас должно получиться следующее:

Создание нескольких доменов в MODx Revolution 

Конфигурирование контекста

Сейчас нам необходимо настроить наш новый контекст. Делается это посредствам добавления специальных системных настроек.

  • Перейдитe к списку контекстов (System > Contexts).
  • Нажмите правой кнопкой на новый контекст и выберите ‘Update Context‘ в открывшемся меню.
  • Перейдите на закладку  ‘Context Settings‘ и нажмите на кнопку 'Create New'.
  • Создание нового контекста 

  • В открывшемся окошке нам необходимо заполнить только Key, Name и Value.

Заполнение необходимых полей для контекста

Повторите последний пункт для создания следующих параметров контекста  (key - value): 

site_start – ID главной страницы сайта (этот параметр написан ввиде цифры в скобках в конце каждого документа в меню Resources) 
base_url – установите этот параметр “/” (без кавычек)
http_host – укажите в этом параметре домен вашего дополнительного сайта “имя.ru” (если речь идет о домейне третьего уровня, то в этом параметре необходимо указать имя.имя.ru)
site_url – укажите в этом параметре полный адрес вашего дополнительного сайта “http://имя.ru/” (можете указать с www)

В результате вы должны получить следующую картину:

Создание страницы ошибки не является обязательным для того, чтобы мультисайтинг заработал. Настройка страницы ошибки производится также как и настройка главной страницы, только в поле Key нужно указать error_page

Настройка главной и страницы ошибки MODx сайта  

Связывание домена с контекстом 

Cуществует 2 варианта этой настройки. 
Первый вариант - в этом случае все домены ссылаются на одну и туже папку.
Второй вариант - в этом случае у каждого домена своя собственная папка. 
В данной статье мы разберем первый вариант.

Откройте в редакторе (к примеру Notepad++) файл index.php, который находится в корневой папке установленного MODX Revolution  и прокрутите до конца документа. Вы должны обнаружить следующий код:

/* Initialize the default 'web' context */
$modx->initialize('web');

Замените вышеуказанные 2 строки на следующий код:


/* Настройка маппинга контекстов */
switch ($modx->getOption('http_host')) {
	case 'modxdomain2.com:80':
	case 'modxdomain2.com':
		// Если http_host является дополнительным доменом, то переключить контекст
		$modx->switchContext('Domain2');
	break;

	default:
		// откат, возврат к основному контексту
		$modx->initialize('web');
	break;
}

Замените modxdomain2.com на имя вашего домена и Domain2 на имя вашего дополнительного контекста.
Если вам необходимо добавить дополнительные сайты, повторите следующие строки перед тегом default: 

case 'modxdomain3.com:80':
case 'modxdomain3.com':
// Если http_host является дополнительным доменом, то переключить контекст
$modx->switchContext('Domain3');
break;

Разумеется предварительно создав для этого домен modxdomain3.com и контекст Domain3.

Всё

Оригинал статьи