Сайт знакомств
MODx Revolution - мультидоменность, мультиязычность и тому подобное
MODx Revolution - мультидоменность, мультиязычность и тому подобное
С появлением новой MODx Revolution, система управления очень преобразилась и что самое интересное это - реализована встроенная поддержка для обслуживания нескольких доменов с одной установки MODx. До выхода revolution это было возможно только через "костыли", которые были весьма не надежны.
В данной статье я опишу полностью весь процесс создания мультидоменной системы на MODx. Разберем на примере создания англоязычной версии нашего сайта.
Подготовка:
- Мы предполагаем что и домен и поддомен будут иметь одну и туже файловую систему и хостинг, например /var/www/fakeart/data/www.
- На момент написания статьи я использовал версию 2.0.2pl, поэтому в будущем может что то измениться
- Так же в нашей установке включен ЧПУ, поэтому как это будет влиять если их отключить мы не знаем
Контексты.
Это слово, таинственное и не понятное для рядовых пользователей 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
Последние работы
Мультипоисковая система
Автопрокат
Магазин мобильной электроники
тепличный комплекс
агентство недвижимости
Пошив рабочей одежды
охота и рыбалка
Cafe & Club
Последнее в блоге
Так уж ли важен CTR в директе?
May 21, 2013
Создание Сайтов: Зачем платить больше?! (SEO)
Jul 31, 2011
Русский язык для dolphin cms boonex
Jan 07, 2011
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
LloydsKip: 20.07.2017 12:14
Проект Спринт Сигнал, sprint signal
Кто первый нажмёт на кнопку входа, тот и встанет в новую матрицу в первых рядах!
Каждые 3 дня появляется новая матрица и так же - кто быстрее нажмёт на кнопку!
По сути это Бесконечный сетевой проект!
Реальный шанс быть сразу после Админа - равные условия у ВСЕХ!
Можно без приглашений, НО партнёрка 30%.
https://goo.gl/PsU95o
сетевой проект с новой концепцией - такого ещё не было в Интернете!
Екатерина: 15.04.2013 23:16
В CPanel при создание субдомена просто укажите тужу папку что для домена, на котором стоит MODX
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;
}
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 ?
Администрация: 04.02.2012 10:56
В принципе любой хостинг где есть возможность задавать алиасы (псевдонимы) доменов
Роман: 04.02.2012 01:37
Автору спасибо за полезную статью.
Подскажите пожалуйста, какой хостинг с ISPmanager лучше использовать для организации мультисайтовости modx таким способом?
MODx Revolution developer: 22.10.2011 12:53
Alias используется при включенных в Системных настройках Friendly Url. И, конечно же, нужно отредактировать .htaccess
Олег: 27.01.2011 18:11
Добрый день.
Подскажите пожалуйста.
В целом все сделал, практически все работает.
Не удалось: Повесить событие на OnWebPageIni, впрочем как и на OnHandleRequest. Может кто знает почему?
Главный вопрос: Да, отлично грузится главная "en.site.ru"! НО,при всем этом не грузятся внутренние страницы. При просмотре выдает ссылку типа "en.site.rucompany.html/". Прекрасно понятно, что слэш должен стоять после "ru". Но вот как его туда поставить?
Перепробовал менять настройки, излазил весь интернет в поисках ответа. К сожалению ответа не нашел.
Подскажите пожалуйста, в чем может быть проблема? Где искать.
Спасибо.
Александр: 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. Может быть Вам, как спецу, придет что-нибудь в голову?
Администрация: 28.12.2010 08:36
Алиас - дополнительное доменное имя для ресурса (сайта, домена, ip-адреса).
В Cpanel насколько мне известно нет возможности создавать алиасы, но это всегда можно сделать через файл htaccess, либо попробовать путь к папке с файлами домена указать на основной домен или еще вариант это пользоваться панелью ISPmanager
Александр: 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) не используется? Возможно мне надо тоже какой-то алиас создать?
Сергей: 04.12.2010 22:42
Данный метод актуален только внутри одного домена?
Или, например, можно делать контексты, которые будут работать с разных доменов?
Илья: 25.10.2010 10:19
Можно пример, как реализовать через плагин?
Администрация: 09.10.2010 18:19
Да, так правильнецей будет
Кононенко Михаил: 06.10.2010 23:25
А зачем index.php хакать?
может правильней повесить плагин на OnWebPageIni? Заодно и setlocale() соответствующий выставить.