Как объединить два modx?
Как объединить два modx example.com sub.example.com?
Установил на оба сайта, поменял в sub.example.com адреса базы данных на основной. Нашел в документации пост о настройках контекста, отредактировал за исключением последнего пункта(я так понимаю документация не соответствует нынешней версии).
И результат готов на половину, на sub.example.com всё отображается кроме стилей и картинок. А на example.com в менеджере не подтягивается на «2web» стартовая страница. А когда создаю новую, то она идет по стандартному адресу родителя: example.com/page.
Установил на оба сайта, поменял в sub.example.com адреса базы данных на основной. Нашел в документации пост о настройках контекста, отредактировал за исключением последнего пункта(я так понимаю документация не соответствует нынешней версии).
И результат готов на половину, на sub.example.com всё отображается кроме стилей и картинок. А на example.com в менеджере не подтягивается на «2web» стартовая страница. А когда создаю новую, то она идет по стандартному адресу родителя: example.com/page.
Комментарии: 8
Как объединить два modx?Никак. А главное зачем? Если нужно два сайта в одной админке используй контексты. Инструкции по настройке в интернете есть. А делать два сайта с одной БД это дичь какая-то.
Это может быть очень удобно, если шаблоны одинаковые либо похожи, контент пересекается (например компания и её филиал, или диффузный бренд или просто раздел вынести на поддомен company.com и blog.company.com нужно сделать по тем или иным причинам.
У каждого контекста свои настройки, их можно использовать в шаблоне (те же контакты в шапке и т.п.).
Бонусом получишь обновление движка и пакетов на оба сайта, 1 раз вместо двух создашь любимые TV (обложка для страницы или галерея), 1 раз купишь платный компонент и так далее. На мой взгляд например, совсем не дичь, для этого (в числе прочего) контексты и придуманы в MODX!..
У каждого контекста свои настройки, их можно использовать в шаблоне (те же контакты в шапке и т.п.).
Бонусом получишь обновление движка и пакетов на оба сайта, 1 раз вместо двух создашь любимые TV (обложка для страницы или галерея), 1 раз купишь платный компонент и так далее. На мой взгляд например, совсем не дичь, для этого (в числе прочего) контексты и придуманы в MODX!..
Как я понял, коллега установил две админки modx и подключил их к одной БД и, если это так, то это дичь. А контексты это удобно спору нет.
Никак. А главное зачем?я делаю это я в познавательных целях, как это может/должно работать. Ну а плюс информация которую я нахожу в основном старая 7-18-ый года, где версия MODX уже не соответствует нынешней.
Как я понял, коллега установил две админки modx и подключил их к одной БД и, если это так, то это дичь.Я просто посчитал, что если я подключу БД к основному сайту, это должно упростить вывод информации. Но понял что ошибся в своих рассуждениях.
в основном старая 7-18-ый года, где версия MODX уже не соответствует нынешнейЕсли нынешняя это 3.х, то там глобально в работе с контекстами ничего не изменилось, так что старые инструкции вполне рабочие, главное найти в новом интерфейсе нужные пункты меню.
Запустит довольно просто, как раз этим занимался сейчас :) решил и здесь написать:
Создай второй контекст, создай плагин (в элементах в админке) назови например ContextSwitch и подключи его на OnHandleRequest вот код:
1. site_start (укажи id страницы в новом контексте, её нужно там создать и опубликовать) и это будет главная страница!
2. http_host (полный адрес url без https и слешей, например sub.example.com)
И всё должно заработать!
Создай второй контекст, создай плагин (в элементах в админке) назови например ContextSwitch и подключи его на OnHandleRequest вот код:
<?php
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];
// Выбираем контекст с настройкой http_host
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value' => $host));
$q->select('context_key');
if ($q->prepare() && $q->stmt->execute()) {
// Получаем ключ контекста
if ($context = $q->stmt->fetch(PDO::FETCH_COLUMN)) {
// Web инициализируется в index.php - на него переключаться не нужно
if ($context != 'web') {
$modx->switchContext($context);
}
}
}
Далее в новом контексте укажи настройку (правый клик в админке → редактировать контекст) и добавь туда 2 системные настройки: 1. site_start (укажи id страницы в новом контексте, её нужно там создать и опубликовать) и это будет главная страница!
2. http_host (полный адрес url без https и слешей, например sub.example.com)
И всё должно заработать!
Это указивать в контекстах админки субдомена или основного?
Для второго (и последующих) контекста, то есть того, который имеет имя (key), отличное от web. Где там какой домен или поддомен, разницы нет. Как надо чтобы открывалось, такой адрес и пиши. На хостинге все эти домены направляй в одну папку.
НО! Если у тебя и правда из двух установленных MODX в разных папках, у которых в core/config/config.inc.php указана одна и та же база с одинаковым значением $table_prefix — то я не знаю что тебе посоветовать, кроме как не пользоваться одной из папок, а настроить работу поддоменов через контексты, как указал выше.
Дело в том, что в MODX используется файловый кэш, в т.ч. системных настроек и т.п. В момент, когда ты очищаешь кэш, он удаляется и папки core/cache/* и как раз из-за этого могут быть проблемы. Наверное, если отключить вообще весь кэш, то всё будет работать, а почему бы и нет (в познавательных-то целях). Данные все в БД. Отключай короче все кэши, чтобы ничего не записывалось на диск, а всё было в Базе Данных… Но опять же, всякие фотографии, скрипты и стили для фронтенда, они же лежат на диске. При установке любого компонента, его файлы кладутся в папку с установленным MODX, а информация записывается в БД. Из другой папки будет видно инфу, а файлов нет — скорее всего будут ошибки.
Предполагаю, что комфортная работа не возможна в таких случаях. Но не уверен, возможно в кейсах, когда выносится core из корневой папки, можно использовать его в нескольких установках, но так я ни разу не делал, а в MODX3 такую возможность убрали, так что уже и не представится возможности.
Короче, используй 1 установленный движок, и контексты :)
НО! Если у тебя и правда из двух установленных MODX в разных папках, у которых в core/config/config.inc.php указана одна и та же база с одинаковым значением $table_prefix — то я не знаю что тебе посоветовать, кроме как не пользоваться одной из папок, а настроить работу поддоменов через контексты, как указал выше.
Дело в том, что в MODX используется файловый кэш, в т.ч. системных настроек и т.п. В момент, когда ты очищаешь кэш, он удаляется и папки core/cache/* и как раз из-за этого могут быть проблемы. Наверное, если отключить вообще весь кэш, то всё будет работать, а почему бы и нет (в познавательных-то целях). Данные все в БД. Отключай короче все кэши, чтобы ничего не записывалось на диск, а всё было в Базе Данных… Но опять же, всякие фотографии, скрипты и стили для фронтенда, они же лежат на диске. При установке любого компонента, его файлы кладутся в папку с установленным MODX, а информация записывается в БД. Из другой папки будет видно инфу, а файлов нет — скорее всего будут ошибки.
Предполагаю, что комфортная работа не возможна в таких случаях. Но не уверен, возможно в кейсах, когда выносится core из корневой папки, можно использовать его в нескольких установках, но так я ни разу не делал, а в MODX3 такую возможность убрали, так что уже и не представится возможности.
Короче, используй 1 установленный движок, и контексты :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.