Как лучше всего реализовать 2 сайта на одном движке?

Мне нужно запихнуть 2 сайта в один cms.

Необходимость появилась в связи с тем что 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. Если кто-то из личного опыта знает про плюсы и минусы этих решений прошу написать.
Арман
24 марта 2024, 00:40
modx.pro
503
0

Комментарии: 12

vit
vit
24 марта 2024, 03:14
+2
а в чем проблема создать два контекста и настроить их. у вас даже пользователи одни на 2 сайта будут
    Арман
    24 марта 2024, 15:51
    0
    Раньше с этим никогда не работал. Инструкции в интернете вроде как немного отличаются друг от друга + возможно нужно учесть какие-то нюансы о которых я сейчас не знаю. Поэтому искал плагин который это всё сделает + будет поддерживаться
    Артур Шевченко
    24 марта 2024, 09:33
    +1
    А ты не ищешь лёгких путей, да? Modx предоставляет прекрасный инструмент для решения подобных задач — контексты. Все дополнения будут работать одинаково хорошо во всех контекстах.
      Арман
      24 марта 2024, 15:49
      0
      Наоборот ищу самый лёгкий путь) Плагин который будет работать с контекстами. GatewayManager установил он не работает с последней версией MODX/php. xRouting тоже не поддерживается вроде бы как с php8 не очень хорошо работает (не устанавливал). Вот эти ребята treehillstudio.com/free-modx-extras/ вроде как переписали xRouting и поддерживают его и называется SmartRouting. Судя по всему то что я искал. Я знаю что это можно всё ручками написать но зачем когда есть готовый плагин)
        Артур Шевченко
        24 марта 2024, 20:33
        1
        +1
        1. Все домены должны ссылаться на одну папку.
        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);
            }
        }
        Всё. Сайты готовы.
          Арман
          24 марта 2024, 20:58
          0
          А что насчёт реализации описанной на оф. сайте docs.modx.com/3.x/ru/building-sites/contexts/virtual-host? В плане удобства в каком-то плане мне нравится ваш код, не нужно файлы копировать и редактировать каждый раз при создании домена. Но мне так же нравится вариант представленный в документации так как он имеет свой .htaccess файл. Что вы думаете об это реализации?
            Артур Шевченко
            25 марта 2024, 10:33
            0
            Я думаю излишне сложно. В моей практике не было случаев, когда нужен отдельный htaccess на каждый домен.
        Арман
        24 марта 2024, 16:05
        0
        Ну судя по всему раз уже 2 человека написали лучше всего похоже не использовать SmartRouting а написать всё самому
          Pandemic
          25 марта 2024, 10:10
          0
          Ты явно не ищешь лёгкий путь и не читаешь что тебе пишут, контексты и babel тебе в помощь, всё так же зависит от того как ты хочешь чтобы твой сайт работал, можешь и в modstore.pro посмотреть плагины modstore.pro/packages/other/polylang ну а это вот бесплатно, быстро, тебе просто полная настройка всего cat-art.ru/blog/multiyazyichnost-modx-revo
            Арман
            25 марта 2024, 10:19
            0
            Всё читаю и пытаюсь вникнуть) Просто нет опыта и хочется разобраться в вопросе не поверхностно. Я ищу лёгкий путь в самой настройке но иду сложным путем в плане того что хочется собрать побольше информации.
              Александр Мельник
              25 марта 2024, 15:52
              0
              Мне кажется вы не совсем правы, предлагая автору инструменты для многоязычности и ссылку, на которую опять-таки инструкция по многоязычности. Это только собьет его с толку.
              Автор пишет
              БЕЗ поддоменов и без определения контекста с помощью папок таких как site.ru/site1 и site.ru/site2.
              а вы даете ссылку на инструкцию, которая начинается со слов
              Русская версия сайта — site.ru/
              Английская версия — site.ru/en/
              Автор пишет, что
              Сайт отличаются контентом и не только, то есть один сайт НЕ ЯВЛЯЕТСЯ переводом на другой язык второго сайта.
              А в вашей инструкции как раз речь о том, что babel позволяет создать перевод для существующей страницы.
                Арман
                25 марта 2024, 18:55
                0
                Ну я вроде уже определился пообщавшись здесь, что мне не нужен SmartRouting (единственное у него в документации написано Cache the http_host/base_url => context settings to avoid database lookups on page load. Но я думаю это не критичный момент и можно обойтись без этого). Скорее всего воспользуюсь вариантом Артура Шевченко или вариантом из официальной документации. Я считаю вариант Артура хорош, особенно если будет много доменов и в любой момент нужно будет создавать и удалить их. Так как у меня на проекте всего 2 домена и больше не будет, мне так же подходит вариант из документации. Всем спасибо)
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          12