Как лучше всего реализовать 2 сайта на одном движке?
Необходимость появилась в связи с тем что 2 этих сайта будут использовать один шаблон и одинаковый набор css/js. Так же многие чанки будут одинаковые.
— Домены будут вида site1.ru и site2.ru без поддоменов и без определения контекста с помощью папок таких как site.ru/site1 и site.ru/site2.
— Нужно сделать для каждого домена контекст.
— Нужно чтобы все плагины работали адекватно pdoTools (например создания файла robots.txt), SeoPro, MIGX и прочее.
— Некоторые страницы на первом сайте могут отсутствовать на втором и наоборот. Поэтому те способы которые просто реализуют 2 версии одной страницы не подойдут
— Сайт отличаются контентом и не только, то есть один сайт не является переводом на другой язык второго сайта.
В интернете пока что наткнулся на GatewayManager, xRouting, contexRouter кто-то рекомендовал babel (вроде как он заточен на языковые версии. Поэтому не уверен что он мне подойдет)
Можете так же предлагать платные дополнения (пользовался до этого CityField всё удобно и стабильно работает но к сожалению для этого проекта не подходит)
Предварительно пока что выбираю из GatewayManager и xRouting. Если кто-то из личного опыта знает про плюсы и минусы этих решений прошу написать.
Комментарии: 12
а в чем проблема создать два контекста и настроить их. у вас даже пользователи одни на 2 сайта будут
Раньше с этим никогда не работал. Инструкции в интернете вроде как немного отличаются друг от друга + возможно нужно учесть какие-то нюансы о которых я сейчас не знаю. Поэтому искал плагин который это всё сделает + будет поддерживаться
А ты не ищешь лёгких путей, да? Modx предоставляет прекрасный инструмент для решения подобных задач — контексты. Все дополнения будут работать одинаково хорошо во всех контекстах.
Наоборот ищу самый лёгкий путь) Плагин который будет работать с контекстами. GatewayManager установил он не работает с последней версией MODX/php. xRouting тоже не поддерживается вроде бы как с php8 не очень хорошо работает (не устанавливал). Вот эти ребята treehillstudio.com/free-modx-extras/ вроде как переписали xRouting и поддерживают его и называется SmartRouting. Судя по всему то что я искал. Я знаю что это можно всё ручками написать но зачем когда есть готовый плагин)
1. Все домены должны ссылаться на одну папку.
2. Каждый контекст должен иметь настройку http_host и base_url.
3. Нужно написать плагин который будет переключать контекст в зависимости от домена
2. Каждый контекст должен иметь настройку http_host и base_url.
3. Нужно написать плагин который будет переключать контекст в зависимости от домена
<?php
// Работаем только на фронтенде
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];
if($ctx = $modx->getObject('modContextSetting', array('key' => 'http_host', 'value' => $host)) ){
$ctx_key = $ctx->get('context_key');
if($ctx_key != 'web'){
$modx->switchContext($ctx_key);
}
}
Всё. Сайты готовы.
А что насчёт реализации описанной на оф. сайте docs.modx.com/3.x/ru/building-sites/contexts/virtual-host? В плане удобства в каком-то плане мне нравится ваш код, не нужно файлы копировать и редактировать каждый раз при создании домена. Но мне так же нравится вариант представленный в документации так как он имеет свой .htaccess файл. Что вы думаете об это реализации?
Я думаю излишне сложно. В моей практике не было случаев, когда нужен отдельный htaccess на каждый домен.
Ну судя по всему раз уже 2 человека написали лучше всего похоже не использовать SmartRouting а написать всё самому
Ты явно не ищешь лёгкий путь и не читаешь что тебе пишут, контексты и babel тебе в помощь, всё так же зависит от того как ты хочешь чтобы твой сайт работал, можешь и в modstore.pro посмотреть плагины modstore.pro/packages/other/polylang ну а это вот бесплатно, быстро, тебе просто полная настройка всего cat-art.ru/blog/multiyazyichnost-modx-revo
Всё читаю и пытаюсь вникнуть) Просто нет опыта и хочется разобраться в вопросе не поверхностно. Я ищу лёгкий путь в самой настройке но иду сложным путем в плане того что хочется собрать побольше информации.
Мне кажется вы не совсем правы, предлагая автору инструменты для многоязычности и ссылку, на которую опять-таки инструкция по многоязычности. Это только собьет его с толку.
Автор пишет
Автор пишет
БЕЗ поддоменов и без определения контекста с помощью папок таких как site.ru/site1 и site.ru/site2.а вы даете ссылку на инструкцию, которая начинается со слов
Русская версия сайта — site.ru/Автор пишет, что
Английская версия — site.ru/en/
Сайт отличаются контентом и не только, то есть один сайт НЕ ЯВЛЯЕТСЯ переводом на другой язык второго сайта.А в вашей инструкции как раз речь о том, что babel позволяет создать перевод для существующей страницы.
Ну я вроде уже определился пообщавшись здесь, что мне не нужен SmartRouting (единственное у него в документации написано Cache the http_host/base_url => context settings to avoid database lookups on page load. Но я думаю это не критичный момент и можно обойтись без этого). Скорее всего воспользуюсь вариантом Артура Шевченко или вариантом из официальной документации. Я считаю вариант Артура хорош, особенно если будет много доменов и в любой момент нужно будет создавать и удалить их. Так как у меня на проекте всего 2 домена и больше не будет, мне так же подходит вариант из документации. Всем спасибо)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.