MODx Revolution - мультидоменность, мультиязычность и тому подобное

MODx Revolution - мультидоменность, мультиязычность и тому подобное

С появлением новой MODx Revolution, система управления очень преобразилась и что самое интересное это - реализована встроенная поддержка для обслуживания нескольких доменов с одной установки MODx. До выхода revolution это было возможно только через "костыли", которые были весьма не надежны.

В данной статье я опишу полностью весь процесс создания мультидоменной системы на MODx. Разберем на примере создания англоязычной версии нашего сайта.

Подготовка:

  1. Мы предполагаем что и домен и поддомен будут иметь одну и туже файловую систему и хостинг, например /var/www/fakeart/data/www.
  2. На момент написания статьи я использовал версию 2.0.2pl, поэтому в будущем может что то измениться
  3. Так же в нашей установке включен ЧПУ, поэтому как это будет влиять если их отключить мы не знаем

Контексты.

Это слово, таинственное и не понятное для рядовых пользователей evolution... Система контекстов - это как бы нулевой уровень нашего дерева, и таких контекстов можно создать сколько душе угодно.

По умолчанию, после установки новой modx, она выглядить так:

контекст

В нашем случае "web" это контекст по умолчанию для нашего основного домена.

Теперь перейдем в раздел контекстов (меню Система> контексты) и создадим новый контекст, назовем его english

новый контекст

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

Завершение конфигурирования контекстов

И так у нас есть новый контекст "english", и в дереве документов он появился, теперь остается сконфигурировать его.
Для это кликнем правой кнопкой мыши по контексту "english" и далее во вплывающем меню выберем "Обновить контекст".

Здесь нам нужно перейти на вкладку "Настройки контекста" и создать параметры как это сделано у меня:

параметры контекста

Ниже привожу таблицу параметров для контекста:

Ключ | Значение

http_host | www.домен.ру
site_url | http://www.домен.ру
base_url | /
site_name | Сайт такой то
site_start | 6
error_page | 7 [опционально]
default_template | 3 [опционально]

После создания этих параметров настройку вашего нового контекста можно считать завершенной, конечно туда можно запихнуть еще целое множество параметров, но об этом как нибудь в следующий раз

Редактируем файл index.php

На мой взгляд это очень странно что систему контекстов сделали и все вроде бы работает, но вот не задача в команде разработчиков затаился лентяй, непожелавший вынести всего пару параметров в настройки из интерфейса и очень жаль т.к. нам сейчас придется залезть в святая святых - в код modx. Где мы собственно и определим поведение  modx-а при обращении на тот или иной домен.
Итак откроем файл index.php и найдем в нем строку:
$modx->initialize('web');
И закомментируем ее или замените на:
//$modx->initialize('web');

Сразу после этой строки вставляем следующий код (сам код разбирать не буду, думаю в нем все понятно):

/*мультидоменность*/
switch(strtolower(MODX_HTTP_HOST)) {
   case 'yar-it.com:80':
   case 'yar-it.com':
      // если параметр http_host равен yar-it.com, то обратимся к контексту web
      $modx->initialize('web');
      break;
   case 'en.yar-it.com:80':
   case 'en.yar-it.com':
      // если параметр http_host равен en.yar-it.com, то обратимся к контексту english
      $modx->initialize('english');
      break;
  default:
      // тут контекст по умолчанию
      $modx->initialize('web');
      break;
}
Последний штрих, домен в моем случае en.yar-it.com должен быть алиасом(псевдонимом) вашего основго домена иначе вся эта хитрая схема работать не будет. У меня на хочтинге панель ISPmanager , поэтому алиас домена я настроил в один клик, как в других панелях я не знаю

Комментарии (16)

  1. JohnnyCoure: 06.09.2017 03:02

    Bandar Domino, Poker Online, Domino QQ, Domino Online Yes, it's happening on 'The Comedy Get Down' tour starting August 6th at The Forum in behind the scenes moments: Watch more 7 Sep 2016 Famous TV doctors look to help save actual lives in Cigna's new A series of additional campaign spots will run on digital and social channels
    like this
    12 Dec 2016 It turned into a frustrating season of X Factor: from about week 7, it's ...... 24 May 2013 Tv Show Beirut Suburb Social Event X Factor Week 10 Season Finale Lebanon. Public Photos. Tv Show Beirut Suburb Social Event X Factor 2 May 2017 You've made the quantum leap to be healthy and fit. She's appeared on reality TV shows and has worked at Miraval Resort and Spa in

  2. LloydsKip: 20.07.2017 12:14

    Проект Спринт Сигнал, sprint signal

    Кто первый нажмёт на кнопку входа, тот и встанет в новую матрицу в первых рядах!

    Каждые 3 дня появляется новая матрица и так же - кто быстрее нажмёт на кнопку!

    По сути это Бесконечный сетевой проект!

    Реальный шанс быть сразу после Админа - равные условия у ВСЕХ!

    Можно без приглашений, НО партнёрка 30%.

    https://goo.gl/PsU95o

    сетевой проект с новой концепцией - такого ещё не было в Интернете!

  3. Екатерина: 15.04.2013 23:16

    В CPanel при создание субдомена просто укажите тужу папку что для домена, на котором стоит MODX

  4. samz.me: 22.05.2012 11:37

    Ниже код плагина вешается на OnHandleRequest

    /* don't execute if in the Manager */
    if ($modx->context->get('key') == 'mgr') {
    return;
    }

    switch ($modx->getOption('http_host'))
    {
    case 'www.site1.com':
    $modx->switchContext('www.site1.com');
    break;
    case 'www.site2.com':
    $modx->switchContext('www.site2.com');
    break;
    }

  5. Oleg: 19.02.2012 17:26

    Делаю мультисайтовость на виртуальном хостинге
    2 домена в одной папке (publik_html), в /saite1.ru стоит modx
    второй домен сделал в cPanel, без Virtual Host

    Про то, что бы ссылки правильные были, разобрался, надо в конце site_url слэш ставить
    site_url --> http://www.домен.ру/

    от Error503 избавился, поправил config.core.php в /sate2.ru
    Сделал : ":1 define('MODX_CORE_PATH', saite1.ru(__FILE__). '/core/');"

    Но второй сайт всё равно не отображается.
    Просто пустая страница по всем ссылкам.
    ресурс и шаблон установлены.

    может действительно, нужно через плагин...
    но что за плагин, как его подключить и настроить?

    а может нужен допил .htaccess ?

  6. Администрация: 04.02.2012 10:56

    В принципе любой хостинг где есть возможность задавать алиасы (псевдонимы) доменов

  7. Роман: 04.02.2012 01:37

    Автору спасибо за полезную статью.
    Подскажите пожалуйста, какой хостинг с ISPmanager лучше использовать для организации мультисайтовости modx таким способом?

  8. MODx Revolution developer: 22.10.2011 12:53

    Alias используется при включенных в Системных настройках Friendly Url. И, конечно же, нужно отредактировать .htaccess

  9. Олег: 27.01.2011 18:11

    Добрый день.
    Подскажите пожалуйста.
    В целом все сделал, практически все работает.
    Не удалось: Повесить событие на OnWebPageIni, впрочем как и на OnHandleRequest. Может кто знает почему?
    Главный вопрос: Да, отлично грузится главная "en.site.ru"! НО,при всем этом не грузятся внутренние страницы. При просмотре выдает ссылку типа "en.site.rucompany.html/". Прекрасно понятно, что слэш должен стоять после "ru". Но вот как его туда поставить?
    Перепробовал менять настройки, излазил весь интернет в поисках ответа. К сожалению ответа не нашел.
    Подскажите пожалуйста, в чем может быть проблема? Где искать.
    Спасибо.

  10. Александр: 28.12.2010 13:09

    Спасибо. В CPanel есть возможность задавать редирект, но должно быть
    это не соответствует статусу алиаса, не знаю. Я сообразил набрать адрес en.yar-it.com но там оказалось пусто. Зато есть такой: http://yar-it.com/en.yar-it.com -- это и есть результат вышеописанных действий? А как же добиться того, чтобы работал полноценный поддомен, типа en.yar-it.com?

    Я имею с этим проблему описанную на http://modxcms.com/forums/index.php?topic=58075.0. Пользователь AlexShowe. Разговор об ошибке 503. Может быть Вам, как спецу, придет что-нибудь в голову?

  11. Администрация: 28.12.2010 08:36

    Алиас - дополнительное доменное имя для ресурса (сайта, домена, ip-адреса).
    В Cpanel насколько мне известно нет возможности создавать алиасы, но это всегда можно сделать через файл htaccess, либо попробовать путь к папке с файлами домена указать на основной домен или еще вариант это пользоваться панелью ISPmanager

  12. Александр: 27.12.2010 23:09

    Всем привет!
    1. Как не бился, моя субдоменная страница упорно показывает Error 503. Вопрос: не влияет ли то, что я создавал поддоменное имя через панель управления (CPanel) хоста, а не как сказано на http://rtfm.modx.com/display/revolution20/Creating+a+Subdomain+from+a+Folder+using+Virtual+Hosts в части Creating the Virtual Host? Лог ошибок упрорно пишет: /.htaccess: Invalid command 'php_flag', perhaps mis-spelled or defined by a module not included in the server configuration". В .htaccess перепробовал все варианты с обоими строками где есть 'php_flag'. Ничего не помогает.
    2. Заранее извиняюсь за тупость, но не понял про алиас. Ведь это что-то типа переадресации с корневого адреса на под-адрес, или наоборот? Что на что у вас переадресовывается :), получаетя, что один из адресов (en.yar-it.com или yar-it.com) не используется? Возможно мне надо тоже какой-то алиас создать?

  13. Сергей: 04.12.2010 22:42

    Данный метод актуален только внутри одного домена?
    Или, например, можно делать контексты, которые будут работать с разных доменов?

  14. Илья: 25.10.2010 10:19

    Можно пример, как реализовать через плагин?

  15. Администрация: 09.10.2010 18:19

    Да, так правильнецей будет

  16. Кононенко Михаил: 06.10.2010 23:25

    А зачем index.php хакать?
    может правильней повесить плагин на OnWebPageIni? Заодно и setlocale() соответствующий выставить.

  1. 1




Разрешённые теги: <b><i><br>Добавить новый комментарий:


Последние работы

Аметка

Сайт знакомств

Aprioro - поиск

Мультипоисковая система

Зарулём76

Автопрокат

Магазинтер

Магазин мобильной электроники

Лазаревское

тепличный комплекс

Домовия

агентство недвижимости

Ярославский Текстиль

Пошив рабочей одежды

Sib-Man

охота и рыбалка