К содержанию

Создание мультисайта на MODX REVO

Лучше поздно, чем никогда. Как и обещал https://modx.pro/help/5194/ пишу про создание мультисайта на MODX REVO. Выкладываю в блог Готовые решения, т.к. в статье есть чуть-чуть кода.

Смысл всей затеи — упростить поддержку сайтов.

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

Кроме того, для упрощения работы необходимо внедрить стандарты, чтобы упростить рутину. Звучит громко, но на самом деле все просто — по «узким» моментам единожды принимаем какое-то решение и дальше просто поступаем по образцу, чтобы не тратить время на изобретение велосипедов. По принятому решению пишем короткую заметку в Евернот, чтобы потом когда понадобится можно было быстро найти, на чем основывалось решение.

В таких «стандартах» у меня:
— ресайз картинок с примерами кода
— настройки галереи fancybox с примерами кода
— создание файловых архивов
— названия чанков, например почти везде у меня есть чанки HEADER.site1, FOOTER.site1, ASIDE.site1 (в названии используем название контекста).
— и т.д. и т.п.

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

Плюсы и особенности «мультисайта»:
  • у админа единый интерфейс управления всеми сайтами
  • модераторы заходят в админки своих сайтов по своим адресам, т.е. site1.ru/manager/, site2.ru/manager/ и т.д. и со своей настроенной админкой
  • похожий интерфейс бекэнда у все сайтов, т.е. можно отвечать на вопросы модераторов и сеошников просто по памяти без компьютера и интернета под рукой.
  • меньше времени на обновление программного обеспечения сайтов, т.к. один раз для мультисайта, а не для каждого отдельно.
  • во время переноса, некоторые сайты были переверстаны на bootstrap, соответственно потом, в случае доработок сильно экономим на верстке + сайт получается адаптированным для смартфонов (гугль утверждает, что это важно).
Недостатки «мультисайта», или то, на что «сходу» не нашел решения, может быть кто-то подскажет:
  • в редакторе TinyMCE при вставке гиперссылки из редактора отображаются/ищутся все ресурсы мультисайта, т.е. но ограничивается текущим контекстом.
  • не нашел как спрятать шаблоны не относящиеся к текущему контексту.
Как оказалось, самое сложное в мультисайте — перенести контент. На текущий момент до сих пор не все сайты перенесены. Потому-что, раз «уж взялись», и чтобы «два раза не вставать», то и реорганизовать контент, исправить какие-то ошибки (смысловые, интерфейсные, юзабилити, грамматические, SEO и т.д. и т.п.), отказаться от «форума» в пользу «тикетов», подправить верстку, уменьшить количество сущностей (шаблонов, чанков и т.д.). А это все происходит долго.

Важный момент, на который нужно обратить внимание по каждому сайту:
Не навредить SEO! Поскольку «вылететь» из поисковой выдачи Яндекса и Гугла — это плохо. Один из сайтов «вылетел», пришлось в срочном порядке восстанавливать все адреса + дополнительно настраивать контекстную рекламу, поскольку у владельца сайта это был основной канал коммуникации с клиентами.

Про мультисайты на modx не так много статей, когда я все это задумал, мне казалось, что или все слишком очевидно или просто особо этим никто не занимается.
При поиске через гугль нашел это:
_http://www.wiseguydigital.com/blog/2010/how-to-build-multi-site-modx-installations
_http://modx.ws/blog/uroki-modx-revolution/multisajt-na-modx-revolution.html
_http://www.belafontecode.com/modx-revolution-hosting-multiple-domains/

— в статьях описано примерно одно и тоже.

Как сделал я:

1. Сайты на виртуальном сервере, все домены ссылаются в одну папку, таким образом прекрасно работает плагин от Василия Наумкина bezumkin.ru/sections/tips_and_tricks/2439/, который переадресует каждый домен на свой контекст.
upd. Переадресация идет, если имя домена совпадает с настройкой контекста http_host.



2. Соответственно для каждого домена сделан отдельный контекст. В настройках контекста прописаны обязательные настройки:
site_start – ID главной страницы сайта (этот параметр написан ввиде цифры в скобках в конце каждого документа в меню Resources)
base_url – установите этот параметр “/” (без кавычек)
http_host – укажите в этом параметре домен вашего дополнительного сайта “имя.ru” (если речь идет о домейне третьего уровня, то в этом параметре необходимо указать имя.имя.ru)
site_url – укажите в этом параметре полный адрес вашего дополнительного сайта “http://имя.ru/” (можете указать с www)
— без них работать не будет.

Плюс все нужные индивидуальные настройки для каждого домена, напрмер «страница 404», «статус сайта», «использовать вложенные url». И настройки почты. Я чаще всего использую ЯндексПочту для домена, все прекрасно работает. Для каждого домена задаем отдельные почтовые ящики.

3. По настройке htaccess с «www» и «без www» создал топик в разделе Работа modx.pro/work/5786-configure-htaccess-to-multisite/. Помог Василий Наумкин.
Те записи, которые есть в примере файла htaccess дистрибутива modx для доменов и с «www» и «без www» не работают, сайт пишет про циклическую ошибку (комент Ильи Уткина в вышеуказанном топике про работу).

Для сайтов «с www» нужно прописать отдельное правило для этого сайта. А там, где ниже идёт правило для редиректа всех www на без-www нужно добавить условие не редиректить тот сайт.

Итого:

# Редирект site1.ru -> www.site1.ru
RewriteCond %{HTTP_HOST}    ^site1.ru\.ru [NC]
RewriteRule ^/?(.*)         http://www.site1.ru/$1 [R=301,L]
 
# Редирект всех остальных www -> non-www, кроме site1.ru
RewriteCond %{HTTP_HOST}    !^www\.site1\.ru [NC]
RewriteCond %{HTTP_HOST}    ^www\.(.*)$ [NC]
RewriteRule ^(.*)$          http://%1/$1 [R=301,L]

4. Сделал отдельный каталог со спецдиректориями по названию доменов для их индивидуальных файлов, изображений, шаблонов и т.д.




Путь от корня мультисайта индивидуально папки получился «s/site1/», «s/site2/» и т.д. для каждого сайта. В эти папки положил важные для SEO подпапки от каждого сайта, например:
«s/site1/assets/image»
«s/site1/assets/gallery»
«s/site1/assets/files»
«s/site1/assets/cashe»

Папки image, gallery, files и т.д. — из Modx Evo, там хранится проиндексированный поисковиками контент, но для того, чтобы этот контент открывался по прежнему адресу нужно из url убрать адрес спецдиректории для каждого домена, например «s/site1/».

5. Для того, чтобы вырезать из URL пути «s/site1/», «s/site2/» Василий Наумкин написал плагин и привел пример записи в htacess.

<?php
if ($modx->event->name != 'OnWebPagePrerender') {continue;}
$urlCut = $modx->getOption('urlCut');
if (empty($urlCut)) {
    return;
}
$urls = array_map('trim', explode(',', $urlCut));

foreach ($urls as $url) {
    $modx->resource->_output = preg_replace("#(/|){$url}#i", '/', $modx->resource->_output);
}

Он работает для всех контекстов и берёт список вырезаемых url из настройки контекст urlCut. Т.е. если надо вырезать кусок из url «s/site1/», то в настройках контекста добавляем запись «urlCut».




Затем нужно научить Apache2 загружать такие файлы из спецдиректории, прописываем в htaccess:

# Работаем только для site1 и только для ненайденных файлов c указанными расширениями
RewriteCond %{HTTP_HOST}    ^www\.site1\.ru [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 
RewriteRule ^(.+)\.(png|gif|jpg|jpeg|xls|doc|pdf)$ /s/med55/$0 [L,NC]

Соответственно для каждого домена нужно прописать похожее правило.

Мы сохранили прежние пути к проиндексированным в поисковых системах файлам, хотя физически она находятся в отдельных спецдиректориях. Таким образом не вредим SEO.

Для примера, картинка у нас физически находится по адресу:
site1.ru/s/site1/assets/image/image.jpg

Но открывается она по URL
site1.ru/assets/image/image.jpg

Т.е. после добавления сайта в мультисайт адреса изображений остались прежними.

По специфичным моментам настройки каждого отдельного домена в мультисайте вроде все.

Тонкости:

Я создал один контекст для образца, со всеми индивидуальными настройками которые мне нужны для каждого домена и потом просто копировал его, чтобы каждый раз не прописывать отдельные настройки для каждого контекста. Кроме того в этом образцовом контексте созданы ресурсы 404, sitemap и т.д., они тоже копируются при копировании контекста — это удобно.

Для переноса, в мультисайте настраивается тестовый домен, контент существующего сайта переносился «вручную». После того, как все перенесли и убедились, что все ок, в настройках контекста меняли имя домена на нужное и только потом переадресовывали домен на папку мультисайта.

Настройка прав и админки для юзеров с урезанными правами — стандартная, никаких особенностей, связанных с мультисайтом там нет. Просто настраиваем нужный доступ к контексту и юзер открывает админку по адресу его сайта «site1/manager/» и в дереве ресурсов отображается только его контекст.

Для каждого отдельного контекста создана отдельная категория, соответственно все чанки, шаблоны, доп.поля, плагины складываем туда, чтобы «не в одну кучу». При необходимости, для удобства разработки, можно настроить отдельного юзера с доступом в эту категорию, чтобы другие категории не мешались. Я так не делал, поскольку во многих случаях просто копировал код с «соседнего» сайта, например чанк вывода новости со всеми прописанными полями (заголовок и длинный заголовок, ресайз картинок, альты и тайтлы к картинке, вывод дат и т.д.). Это и упрощает разработку и позволяет не забыть важные моменты, т.е. не надо каждый раз вспоминать «что же нужно прописать».

Для удобства, в названиях чанков, шаблонов, доп.полей и т.д. используем названия контекста, чтобы было понятно, к чему он относится. Выше я писал про HEADER.site1.

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

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




Стандартные компоненты, сниппеты и плагины прекрасно работают в мультисайте.
Для настройки меню сайта от корня достаточно указать необходимый контекст [[pdoMenu? &context=`site1`]]

Выводы:
Вставлять в мультисайт какие-то сложные сайты (интернет-магазины и т.д.) наверно не стоит.

Но что-то проще:
— лендинги;
— сайты без какого-либо сложного функционала, например сайт организации с лентой новостей, каталогом товаров и услуг — можно и по временным затратам встроить в мультисайт проще чем создать отдельный новый сайт + сильно экономим время на обслуживании.

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

Наверняка я что-то упустил, если есть какие-то вопросы, спрашивайте.
Иван Чуваев
Иван Чуваев
06 июля 2015, 02:48
modx.pro
24 289
Реклама

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

Василий Столейков
Василий Столейков Проверенный
06 июля 2015, 14:22
А если есть несколько однотипных, но мультиязычных сайтов, где языки находятся в подпапках /ru/, /en/?
Как бы вы организовали работу с несколькими мультиязычными сайтами в одной админке?
    Иван Чуваев
    Иван Чуваев Проверенный
    06 июля 2015, 15:48
    Ссылку в топике https://bezumkin.ru/sections/tips_and_tricks/2439/ смотрели?
    Первый пример там как раз для /ru/, /en/.
    Мультиязычный сайт у меня всего один, на там все тупо — просто отдельные ресурсы с отдельными шаблонами и контентом на английском языке — просто переведенный каталог товаров. И шапке сайта ссылки «ru»|«en». Ну т.е. нет никакого автоматического выбора по языку браузера и т.д.
      brioni
      brioni Проверенный
      02 февраля 2016, 22:05
      А можно делать всё тоже самое только без новых доменов?
      Т е создать каталог, а выводить его как отдельный сайт.
      Александр Москвин
      02 февраля 2016, 15:36
      lux-line.ru/ — сайт 3 версии

      банально сниппетом
      [[!swland?
      &ru=`русская`
      &en=`английская`
      &cn=`китайская`
      ]]

      $url=explode('/', $_SERVER[REQUEST_URI]);
      $ru = !empty($ru)? $ru: '';
      $en = !empty($en)? $en: '';
      $cn = !empty($cn)? $cn: '';
      $land=$url[1];
      if($land=='en'){
      return $en;
      }else if($land=='cn'){
      return $cn;
      }else{
      return $ru;
      }
      Сергей Росоловский
      Сергей Росоловский Проверенный
      06 июля 2015, 22:17
      Зачем Апач? я думал им уже не пользуются.
        Василий Наумкин
        Василий Наумкин Администратор
        07 июля 2015, 05:34
        Очень много где пользуются, особенно на shared хостингах. Да и на VPS панели управления, типа ISP Manager, под него заточены.

        Гораздо проще дать человеку .htaccess, чем объяснять, что такое Nginx и как писать для него правила.
        Перетягин Илья
        Перетягин Илья Старожил
        07 июля 2015, 01:27
        Спасибо за проделанную работу!
          yani
          yani Проверенный
          08 июля 2015, 12:19
          в редакторе TinyMCE при вставке гиперссылки из редактора отображаются/ищутся все ресурсы мультисайта, т.е. но ограничивается текущим контекстом.
          не нашел как спрятать шаблоны не относящиеся к текущему контексту.
          мне кажется эти параметры придется хардкорно править в «ядре»
          я например меняла сортировку шаблонов в выпадающем списке
            Иван Чуваев
            Иван Чуваев Проверенный
            16 июля 2015, 14:46
            Да, похоже только хардкор.
            Павел
            Павел Старожил
            16 июля 2015, 13:13
            А как на счет быстродействия? если почистить кеш то он почистится у всех сайтов сразу
              Иван Чуваев
              Иван Чуваев Проверенный
              16 июля 2015, 14:49
              Отдельные сайты в мультисайте относительно небольшие — до 1000 страниц со всеми новостями. Сервер довольно мощный. Кэш картинок при сбросе общего кэша сайта не сбрасывается. Я тормозов не замечаю.
                Василий Наумкин
                Василий Наумкин Администратор
                16 июля 2015, 16:32
                Моё мнение на этот счёт однозначное — сайт не должен жить за счёт кэша.

                При очистке на modx.pro, первый раз главная грузится так:
                total time: 2.2554 s
                query time: 0.4618 s
                queries: 233
                
                Потом вот так:
                total time: 0.3539 s
                query time: 0.0480 s
                queries: 137
                

                То есть, очистки кэша никто не замечает — как это и должно быть.
                max
                max Старожил
                01 сентября 2015, 13:19
                Добрый день! Мне как раз необходимо переустановить SEO-цели на мультисайте. Вижу такую картину:
                onclick="yaCounter[[++[[*context_key]].yaKey]].reachGoal('something'); return true;"
                При попытке изменения содержимого, оно меняется сразу на 2 сайтах, что не есть хорошо. Если не сложно, можете направить меня на путь решения данного вопроса(где именно мне искать поле для ввода СЕО-цели под конкретный сайт)? Спасибо.
                  Илья Уткин
                  Илья Уткин Администратор
                  01 сентября 2015, 14:42
                  Скорее всего, в настройках каждого контекста.
                    Илья Уткин
                    Илья Уткин Администратор
                    01 сентября 2015, 14:42
                    А, нет, похоже, разработчик не знал, что так можно. Так что ищите в настройках системы
                      max
                      max Старожил
                      01 сентября 2015, 15:56
                      ничего не нашел такого, что могло бы помочь(
                    Василий Столейков
                    Василий Столейков Проверенный
                    02 сентября 2015, 08:07
                    Если я правильно понял вопрос...
                    Как вариант: вывести весь код в отдельные чанки, а вместо кода прописать [[$ya.[[++context_key]]]]. Чанки соответственно будут называться по ключу контекстов, например [[$ya.ru]], [[$ya.en]]…
                    После этого меняешь содержимое только нужного чанка и код меняется только на нужном сайте.
                      max
                      max Старожил
                      02 сентября 2015, 13:35
                      спасибо за информацию) попробую
                    миха86
                    миха86 Старожил
                    16 сентября 2015, 13:19
                    Установил modx по адресу d1.com, настроил контексты, сделал d2.com алиасом d1.com, прикрутил плагин, вбиваю d2 — перебрасывает на d1. Где может быть ошибка?
                      миха86
                      миха86 Старожил
                      16 сентября 2015, 21:34
                      ?
                      Сергей
                      Сергей Старожил
                      28 декабря 2015, 00:07
                      Добрый вечер!
                      Получилось ли у кого-нибудь сделать авторизацию у каждого контекста по его же site_url?
                      site1.site.ru/manager
                      site2.site.ru/manager
                      site3.site.ru/manager
                      Выдает ошибку 404

                      Работает только site.ru/manager… можно авторизоваться по основному url… но хотелось бы по другому решить…

                      Комментирование строчки не помогло:
                      if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
                        Владимир
                        Владимир Старожил
                        28 декабря 2015, 02:35
                        На всех сайтах (у меня) админка доступна по siteNN.site.tld/manager/, т.е. с любого поддомена.
                        Проверяйте настройки контекстов.
                          Сергей
                          Сергей Старожил
                          30 декабря 2015, 02:01
                          base_url - /
                          default_context - site1.site.ru
                          default_media_source - 8
                          default_template - 5
                          http_host - site1.site.ru
                          site_name - Название сайта site1.site.ru
                          site_start - 2
                          site_url - http://site1.site.ru
                          Плагин взят от сюда bezumkin.ru/sections/tips_and_tricks/2439/ (второй для поддоменов). На сайте site1.site.ru скопированы с основного — .htaccess config.core.php index.php

                          Самое, что интересное — всё работает, каждый контекст (сайт) загружается, все страницы работают…

                          Но, при попытке зайти в админку — выдает 404 ошибку…

                          Может дело в том, что у меня основной сайт лежит по адресу site.ru? а не site.site.ru?
                          Вы можете написать основные настройки Ваши или как у вас устроено… видимо какая-то мелочь не пропускает это дело…

                          В логах это — site1.site.ru: 127.0.0.1 [30/Dec/2015:01:56:35 +0300] «GET /mngredu HTTP/1.1» 404 171 "-" «Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0»

                          Спасибо!
                            Владимир
                            Владимир Старожил
                            30 декабря 2015, 02:04
                            base_url — /
                            уберите оттуда site1.site.ru
                            или вы опечатались, а затем исправили? (в письме мне пришло несколько иное)

                            В своем профиле добавьте возможность оправки личных сообщений
                              Сергей
                              Сергей Старожил
                              30 декабря 2015, 02:17
                              На самом деле base_url поставил site1.site.ru, чтобы если зайдешь с админки site.ru, чтобы при клике «Перейти на сайт»… попадать не на site.ru а на site1.site.ru

                              Но куча глюков вылезла, например права урезаны только до Content Manager и если нажать на иконку «страничка» — создать ресурс — почему-то работает в контексте web… и пишет ошибку доступа… (пытался добавить настройку — default_context — site1.site.ru, неудачно (( )

                              После этого понял, что по-любому нужно открывать админку по адресу — site1.site.ru/manager
                              А так фиг знает, может версии слишком новые или еще какая-нибудь ерунда… тыкаешься во всё подряд и никак не заработает…

                              Профиль открыл для сообщений
                                Сергей
                                Сергей Старожил
                                31 декабря 2015, 21:36
                                Всё получилось. Нужно на хостинге/сервере направить все нужные домены на одну папку… а не создавать для каждого сайта папку в отдельности.
                                Спасибо!
                        Андрей
                        Андрей Старожил
                        22 января 2016, 22:30
                        Я создал один контекст для образца, со всеми индивидуальными настройками которые мне нужны для каждого домена и потом просто копировал его, чтобы каждый раз не прописывать отдельные настройки для каждого контекста. Кроме того в этом образцовом контексте созданы ресурсы 404, sitemap и т.д., они тоже копируются при копировании контекста — это удобно.
                        Скажите, а если сейчас есть контекст web — как контекст основного сайта — его можно просто скопировать создав новый контекст или нужно все материалы переносить (создавать заново) в новом контексте?
                          Иван Чуваев
                          Иван Чуваев Проверенный
                          23 января 2016, 10:44
                          Скопировать контекст web можно, ресурсы тоже копируются в новый контекст.
                          Копируем контекст в дереве ресурсов:


                          Далее:


                          Он скопирует все ресурсы в контектсе.
                            Андрей
                            Андрей Старожил
                            23 января 2016, 10:51
                            Спасибо большое!
                              Андрей
                              Андрей Старожил
                              24 января 2016, 11:32
                              И еще возник вопрос — при создании мультисайта для каждого домена (сайта) нужна же своя база данных и свои файлы или сто-то общее из этого. Подскажите пожалуйста по подробнее именно по структуре (файлы, БД).
                                Иван Чуваев
                                Иван Чуваев Проверенный
                                24 января 2016, 11:58
                                База у меня одна на всех.
                                Для модераторов каждого отдельного сайта настроены доступы к источникам файлов.
                                  Андрей
                                  Андрей Старожил
                                  24 января 2016, 12:50
                                  А сайты получаются однотипной тематики или в принципе это разные сайты просто заведены в одну админку? Просто немного по БД не вкуриваю — или там без разницы — от нескольких разных сайтов хранить информацию или от одного — все делится по контекстам?
                            Андрей
                            Андрей Старожил
                            24 января 2016, 20:40
                            Сделал мультисайт на поддоменах. Основной сайт лежит по адресу site.ru, второй сайт по адресу site1.site.ru. Создал второй контекст путем копирования первого (web), настроил у него необходимые параметры. Перенес в папку site.site.ru три файла: index.php, .htaccess, config.core.php
                            Но в результате получил 2 проблемы:
                            1. Не все стили подгружаются, потому как они стучаться по адресу например site.site.ru/css? а физически лежат по адресу site.ru/css Это можно конечно решить путем прописывания абсолютных путей, но это не решение ввиду того, что почти во всех устанавливаемых компонентах будет такая беда. И править вечно пути нет желания — хочется все упросить дом максимума.
                            2. Не получается зайти в админку — оно и понятно — в папке site.site.ru ее нет.

                            Подскажите мне по структуре файлов — не совсем понял, как нужно создать структуру. Говорят все в одну папку закинуть, какие файлы нужно переносить, подскажите плиз.
                              Воеводский Михаил
                              Воеводский Михаил Проверенный
                              24 января 2016, 21:24
                              Не нужно ничего никуда переносить. Используй плагин переключения контекстов bezumkin.ru/sections/tips_and_tricks/2439/
                                Андрей
                                Андрей Старожил
                                24 января 2016, 21:43
                                А в таком случае у меня папка site.site.ru пустая. В админке есть плагин на событие OnHandleRequest.
                                При переходе по адресу site.site.ru выдает 403 ошибку.
                                  Воеводский Михаил
                                  Воеводский Михаил Проверенный
                                  24 января 2016, 21:44
                                  Тебе вообще не нужна папка site.site.ru. Все домены должны вести на основной каталог сайта.
                                    Андрей
                                    Андрей Старожил
                                    24 января 2016, 21:46
                                    Так вот я это и пытаюсь сделать, но не пойму где я не прав
                                      Воеводский Михаил
                                      Воеводский Михаил Проверенный
                                      24 января 2016, 21:47
                                      Настройку доменов необходимо производить в панели управления хостингом.
                                        Андрей
                                        Андрей Старожил
                                        24 января 2016, 21:52
                                        Ладно. Ответа я не дождался. Всегда все полунамеками пишется, вместо того, чтобы один раз написать по-человечески ответ на вопрос. все наверное с рулем в руках родились…
                                          Воеводский Михаил
                                          Воеводский Михаил Проверенный
                                          24 января 2016, 21:55
                                          В моих ответов полунамеков нет. Как правильно, вопросы задают для получения направления. Я направление вполне ясно обозначил.

                                          Если что-то осталось непонятно, формулируй вопросы точнее и полнее. Я не телепат, чтобы догадываться, что же на самом деле требуется и в чем сложность.
                                            Андрей
                                            Андрей Старожил
                                            24 января 2016, 22:02
                                            Есть основной домен site.ru
                                            Есть поддомен site1.site.ru
                                            папка поддомена у меня пустая, как я понял туда переносить никакие файлы не надо. Но при переходе по адресу поддомена вылетает 403 ошибка. Плагин для переключения контекстов есть. второй контекст называется site1.
                                            base_url /
                                             ---
                                            http_host
                                            site1.site.ru
                                            — 
                                            site_start
                                            26
                                            —
                                            site_url
                                            http://site1.site.ru/
                                            Вы говорите, что нужно настроить так, чтобы site1.site.ru ссылался на папку site.ru? И делается это на хостинге. А как — подскажите, какие настройки нужно трогать?
                                              Воеводский Михаил
                                              Воеводский Михаил Проверенный
                                              24 января 2016, 22:15
                                              Страница с 403 ошибкой — серверная? На ней есть упоминание nginx или apache? Если да, направляй домен на основной каталог сайта — я писал об этом выше.
                                                Андрей
                                                Андрей Старожил
                                                24 января 2016, 22:39
                                                Это нужно положить в site1.site.ru .htaccess и в нем 301 редирект? Но тогда в адресной строке будет адрес site.ru
                                                Воеводский Михаил
                                                Воеводский Михаил Проверенный
                                                24 января 2016, 22:40
                                                Нет. Непосредственно поддомен должен быть направлен на каталог основного сайта. Если не понимаешь, как изменить настройки в панели управления хостингом, обратись в поддержку хостинга.
                                                Андрей
                                                Андрей Старожил
                                                26 января 2016, 19:56
                                                Обратился я к хостингу — там до сих пор не могут решить вопрос. На хостинге ISP Manager. Подскажите, как сделать так, чтобы поддомен направлялся на папку основного домена?
                                                На данный момент они сделали так — при обращении к site1.site.ru он переадресовывается на site.ru/site1/ и в строке браузера этот адрес стоит — что не совсем так, как хотелось бы. Хотелось бы чтобы адрес в строке браузера оставался site1.site.ru
                                                Воеводский Михаил
                                                Воеводский Михаил Проверенный
                                                27 января 2016, 01:30
                                                По ISP ничего не вспомню.
                                                Пиши доступ на почту, подумаем дальше.
                                                but1head
                                                but1head Проверенный
                                                27 января 2016, 03:16
                                                Пути на isp настройте, или в менджили в конфиге. Просто вручную нужно выставть папку var/www/user/www/site.ru, обычно там такие пути. Ну или через профиль напишите
                                                Андрей
                                                Андрей Старожил
                                                28 января 2016, 10:42
                                                Выставил путь к папке для поддомена, но в итоге получается просто релирект на нее. То есть вбиваю в админке site1.site.ru а переходит он на site.ru/site1/ Хостинг говорит, что где-то помимо него есть редирект, но где?
                                                brioni
                                                brioni Проверенный
                                                02 февраля 2016, 14:56
                                                Удалось победить мультисайтовость?
                                                Если да, то сколько времени занял процесс со всей шелухой и настройками?
                                                Андрей
                                                Андрей Старожил
                                                02 февраля 2016, 18:20
                                                Пока нет. Не победил. Но проблема у меня в настройках хостинга. Так что с нормальным хостингом все пройдет быстро и гладко. Все займет несколько минут.
                                                brioni
                                                brioni Проверенный
                                                02 февраля 2016, 18:37
                                                Например Beget, подойдет?

                                                P.S. Ай как не хочется уйти в безконечный марафон…
                                                Андрей
                                                Андрей Старожил
                                                02 февраля 2016, 18:42
                                                Да, с Бегетом проблем быть не должно.
                                                brioni
                                                brioni Проверенный
                                                03 февраля 2016, 17:27
                                                С Бегетом пока фара, однако ниже дали конкретный ответ на вопрос о «Как заставить домен ссылаться в одну папку». Возможно тебе поможет:
                                                /etc/apache2/apache2.conf
                                                для каждого домена добавлена запись:
                                                <VirtualHost ip адрес моего сервера:81 >
                                                        ServerName домен_каждого_отдельного_сайта.ru
                                                	DocumentRoot /var/www/мойосновнойдомен.ru/data/www/мойосновнойдомен.ru
                                                </VirtualHost>
                                                Но подходит это только для виртуального хостинга. Написал в ТП Бегет с примером кода — жду ответа, как проделать тоже самое но обычном хостинге.
                                                Воеводский Михаил
                                                Воеводский Михаил Проверенный
                                                03 февраля 2016, 20:11
                                                Для виртуального хостинга это вообще не поможет, ибо редактировать основной конфиг веб-сервера никто никогда не позволит.
                                                Андрей
                                                Андрей Старожил
                                                04 февраля 2016, 15:11
                                                Вроде бы поборол я свою проблему. С помощью хостинга — там нашелся таки толковый специалист, который сразу понял что нужно сделать.
                                                Но теперь проблема такого плана.
                                                На сайте не отображаются картинки товаров minshop2
                                                Возможно, нужно прописать как то пути в настройках контекста для minishop 2?
                                                Кто подскажет в чем дело?
                                                brioni
                                                brioni Проверенный
                                                04 февраля 2016, 17:51
                                                Расскажи как заставил ссылаться новые домены в одну папку через хостера?
                                                Был у тебя авто-редидект с нового домена на основной при открытии страниц нового домена?
                                                Если да, тот как отключить такую переадресацию?
                                                Андрей
                                                Андрей Старожил
                                                04 февраля 2016, 18:25
                                                У меня панель ISP Manager.
                                                Для основного домена есть настройка автоподдомены — ее нужно было отключить.
                                                Далее я создал папку внутри основного домена. Вернее, я сделал одну папку, а внутри нее уже папку по имени поддомена. Чтобы было потом легче ориентироваться, для какого домена где лежат файлы.
                                                Далее я в настройках основного домена указал псевдоним вида *.site.ru
                                                Самое интересное что поддомен я при этом вообще не создавал. И по этому моменту у меня еще есть вопросы к хостеру.
                                                Далее я прописал в DNS-настройках A запись * = IP сервера

                                                P.S. Переадрессация была у меня сначала с поддомена на папку внутри основного сайта. Хостер сказал что она настроена была в htaccess
                                                Могу уточнить что именно он изменил там.
                                                brioni
                                                brioni Проверенный
                                                04 февраля 2016, 18:34
                                                Да, узнай, пожалуйста про переадресацию в htaccess.
                                                И про это:
                                                Для основного домена есть настройка автоподдомены — ее нужно было отключить.
                                                можно подробнее.
                                                Андрей
                                                Андрей Старожил
                                                04 февраля 2016, 18:54
                                                Для основного домена есть настройка автоподдомены — ее нужно было отключить.
                                                В ISP есть 2 вида настроек автоподдоменов — в папке основного сайта и в отдельной папке.
                                                У меня сначала стояла настройка — в папке основного сайта. А хостер сказал вообще отключить автоподдомены.
                                                brioni
                                                brioni Проверенный
                                                04 февраля 2016, 19:03
                                                Ясно.
                                                Походу у меня вообще другая пляска.
                                                Странно, что при очевидных плюсах и выгодах мультисата на Modx, созданная ветка обсуждений такая сухая и равнодушная…
                                                Андрей
                                                Андрей Старожил
                                                04 февраля 2016, 19:42
                                                Странно, что при очевидных плюсах и выгодах мультисата на Modx, созданная ветка обсуждений такая сухая и равнодушная…
                                                Может только у нас такие заморочки? ))) У всех поди работает все с первого раза))
                            brioni
                            brioni Проверенный
                            03 февраля 2016, 14:50
                            Сори, если ответы очевидны, но эти детали требуют уточнения:
                            Переадресация идет, если имя домена совпадает с именем контекста.
                            То есть у нового контекста задаем: ключ — site.ru; имя — site.ru Включая ".ru"?
                            Сайты на виртуальном сервере, все домены ссылаются в одну папку
                            Это тоже самое, что в разделе «Управление доменами» хостинга Бегет выбрать «Направить домен на существующую директорию»?
                              Иван Чуваев
                              Иван Чуваев Проверенный
                              03 февраля 2016, 16:11
                              у меня просто в файле конфига апача
                              /etc/apache2/apache2.conf
                              для каждого домена добавлена запись:
                              <VirtualHost ip адрес моего сервера:81 >
                                      ServerName домен_каждого_отдельного_сайта.ru
                              	DocumentRoot /var/www/мойосновнойдомен.ru/data/www/мойосновнойдомен.ru
                              </VirtualHost>
                              при этом DocumentRoot каждого отдельного сайта как раз ссылается на папку основного домена.

                              Переадресация идет, если имя домена совпадает с именем контекста.
                              — здесь я наврал, имя домена должно совпадать с параметром http_host в настройках контекста


                              т.е. плагин bezumkin.ru/sections/tips_and_tricks/2439/ сравнивает имя домена с настройкой контекста http_host
                                brioni
                                brioni Проверенный
                                03 февраля 2016, 16:40
                                Спасибо! Тоже обратил внимание на отсутствие связи с именем контекста в плагине Василия.

                                А вот момент с «все домены ссылаются в одну папку» остается открытым. Установив плагин bezumkin.ru/sections/tips_and_tricks/2439/ и выполнив «Направить домен на существующую директорию» в Бегет получаю:
                                При открытии ресурса из нового контекста — сначала открывается URL нового домена (на доли секунды), а затем открывается URL основного домена с alias от нового.
                                Похоже на редирект 301 от хостинга, но в серверных делах я тугой. Может кто с форума поможет разобраться?
                                  Иван Чуваев
                                  Иван Чуваев Проверенный
                                  03 февраля 2016, 17:12
                                  исправил текст в статье
                              brioni
                              brioni Проверенный
                              04 февраля 2016, 14:06
                              Тех поддержа Бегет сообщила, что если в разделе «Управление доменами» выбрать «Направить домен на существующую директорию» то в конфиг Apache получается следующее:
                              <VirtualHost *:80>
                                DocumentRoot /home/y/sssr/основной-домен.ru/public_html
                                ServerName новый-домен.ru
                                ServerAlias www.новый-домен.ru
                                SetEnvIf X-Forwarded-Proto https HTTPS=on
                                TimeOut 300
                                ScriptAlias /cgi-bin/ /home/y/sssr/основной-домен.ru/public_html/cgi-bin/
                                <Directory /home/y/sssr/основной-домен.ru>
                                  Options All -Indexes
                                  AllowOverride All
                                </Directory>
                              </VirtualHost>
                              То есть выполняется требование №1 автора поста
                              все домены ссылаются в одну папку,
                              Однако, при открытии страницы из нового контекста происходит редирект на основной-домен.ru
                              Бегет говорит, что Переадресация на основной домен настроена в конфигурационном файле ./core/config/config.inc.php:
                              if (!defined('MODX_HTTP_HOST')) {
                                  if(defined('PHP_SAPI') && (PHP_SAPI == "cli" || PHP_SAPI == "embed")) {
                                      $http_host='основной-домен.ru';
                                      define('MODX_HTTP_HOST', $http_host);
                                  } else {
                                      $http_host= array_key_exists('HTTP_HOST', $_SERVER) ? $_SERVER['HTTP_HOST'] : 'основной-домен.ru';
                                      if ($_SERVER['SERVER_PORT'] != 80) {
                                          $http_host= str_replace(':' . $_SERVER['SERVER_PORT'], '', $http_host); // remove port from HTTP_HOST
                                      }
                                      $http_host .= ($_SERVER['SERVER_PORT'] == 80 || $isSecureRequest) ? '' : ':' . $_SERVER['SERVER_PORT'];
                                      define('MODX_HTTP_HOST', $http_host);
                                  }
                              }
                              Почему такая Переадресация вообще происходит и как её отключить?

                              З.Ы. Также заметил, что открытие сайта нового контекста и последующая Переадресация на основной-домен просходит как при включенном, так и при отключенном плагине: bezumkin.ru/sections/tips_and_tricks/2439/
                                brioni
                                brioni Проверенный
                                05 февраля 2016, 00:02
                                Помогла случайность: выход их админки основного сайта и очитска кэша в браузере (Chrome)
                                brioni
                                brioni Проверенный
                                04 февраля 2016, 19:10
                                Странно, что при очевидных плюсах и выгодах мультисайта на Modx, созданная ветка обсуждений такая сухая и равнодушная.

                                Пожалуйста, отзовитесь владельцы мультисайтов на «обычных» хостингах типа Бегет и поделитесь пошаговым опытом.
                                Особенно интересуют настройки хостинга для успешной работы мультисайта!

                                З.Ы. — данная тема уже первая в поисковиках по запросу «мультисайт Modx», а значит у программистов есть отличный шанс доказать свой профессионализм и найти новых заказчиков…
                                  Андрей
                                  Андрей Старожил
                                  04 февраля 2016, 19:46
                                  А я задался таким вопросом — работать то все работает, но папки сайта ак таковой нет (я про поддомен). Даже самого поддомена не создано в хостинге. Задал сей вопрос в хостинг — теперь опять решаем всем миром))
                                  brioni
                                  brioni Проверенный
                                  12 февраля 2016, 18:47
                                  Запустил мультисайт по инструкции автора.
                                  Удалось обойтись без создания папок в корне для каждого сайта — файлы отлично подгружаются из общей папки assets и не требуется вырезать часть URL.
                                  Также избежал создания отдельных чанков для доп сайтов, кроме footer где стоит индивидуальный счетчик. Например, логотип сайта в header легко подгружается из общей кучи путем:
                                  <img src="assets/template/images/logo [[++site_name]].png" alt="" />
                                  . То есть создаем сколько угодно логотипов соблюдая название logo [[++site_name]].png и создавать отдельный чанк не нужно.
                                  getTickets и pdoMenu отлично понимают контекст, хотя в некоторых случаях и пришлось добавить параметр &context=``
                                  В итоге копирую «шаблонный» контекст и на него вешаю новый домен разделы и документы использую все чанки и шаблоны от основного сайта.

                                  Однако остался нерешенный момент с файлом robots.txt, а именно строкой Host:
                                  Пока её тупо удалил — посмотрим на реакцию поисковиков…

                                  P.S. — Спасибо автору поста за идею — люблю все оптимизировать. Например, хостинг Бегет теперь обходится дешевле, т. к. тарифы привязаны к количеству сайтов, а количество доменов не ограничено. Думаю ход мысли вы уловили :)
                                    Василий Наумкин
                                    Василий Наумкин Администратор
                                    12 февраля 2016, 19:28
                                    Уловили, ага.

                                    Именно поэтому на modhost.pro количество доменов ограничено изначально.
                                      Игорь
                                      Игорь Старожил
                                      10 февраля 2017, 04:45
                                      Однако остался нерешенный момент с файлом robots.txt, а именно строкой Host:

                                      В контексте создаем и публикуем ресурс (например, robots.txt) с пустым шаблоном: тип ресурса — документ, тип содержимого — text, псевдоним — robots. В содержимое пишем:
                                      User-agent: *
                                      Allow: /
                                      Host: [[++http_host]]
                                      Sitemap: [[++site_url]]sitemap.xml
                                        brioni
                                        brioni Проверенный
                                        10 февраля 2017, 13:12
                                        Благодарочка
                                          Дмитрий Куликов
                                          Дмитрий Куликов Проверенный
                                          12 февраля 2018, 01:01
                                          У меня такое решение не работает и выдает ошибку 404
                                            Дмитрий
                                            Дмитрий Проверенный
                                            12 февраля 2018, 12:59
                                            можно пользоваться компонентом RobotsBuilder. Вполне себе на мультисайтах хорошо работает.
                                        Станислав
                                        Станислав Старожил
                                        10 апреля 2016, 23:15
                                        Привет.
                                        Столкнулся с задачей.
                                        Что писать http_host, site_url когда домен вида «русскийсайт.ру», «поддомен.русскийсайт.ру»
                                        ???
                                          Владимир
                                          Владимир Старожил
                                          10 апреля 2016, 23:21
                                          Как обычно:
                                          Домен: русскийсайт.рф
                                          Домен: XN--80APDBB9AHADMC.XN--P1AI

                                          Эрадж Шамс
                                          Эрадж Шамс Старожил
                                          03 октября 2016, 08:34
                                          Здравствуйте.
                                          Не подскажите правила для .htaccess для головного сайта сайт.ru и его поддомена поддомен.сайт.ru, чтобы оба открывались без www? .htaccess у них общий.
                                          Сейчас стоит
                                          RewriteCond %{HTTP_HOST} .
                                          RewriteCond %{HTTP_HOST} !^сайт\.ru [NC]
                                          RewriteRule (.*) https://сайт.ru/$1 [R=301,L]
                                          и когда захожу на поддомен.сайт.ru, то он переадресовывает на сайт.ru.
                                          Правило
                                          # Редирект site1.ru -> www.site1.ru
                                          RewriteCond %{HTTP_HOST}    ^site1.ru\.ru [NC]
                                          RewriteRule ^/?(.*)         http://www.site1.ru/$1 [R=301,L]
                                           
                                          # Редирект всех остальных www -> non-www, кроме site1.ru
                                          RewriteCond %{HTTP_HOST}    !^www\.site1\.ru [NC]
                                          RewriteCond %{HTTP_HOST}    ^www\.(.*)$ [NC]
                                          RewriteRule ^(.*)$          http://%1/$1 [R=301,L]
                                          не работает ((
                                          готов отблагодарить денюжкой
                                            An Si
                                            An Si Проверенный
                                            03 октября 2016, 14:22
                                            Заменяем
                                            RewriteCond %{HTTP_HOST} .
                                            RewriteCond %{HTTP_HOST} !^сайт\.ru [NC]
                                            RewriteRule (.*) https://сайт.ru/$1 [R=301,L]
                                            на
                                            RewriteCond %{HTTP_HOST} .
                                            RewriteCond %{HTTP_HOST} ^www\.сайт\.ru [NC]
                                            RewriteRule (.*) https://сайт.ru/$1 [R=301,L]
                                            Для поддомена такое правило не требуется. Вряд ли по адресу www.поддомен.сайт.ru попадёте на поддомен.сайт.ru. Будет какая-нибудь ошибка типа сервер не найден. Склейка в этом случае не требуется.
                                              Эрадж Шамс
                                              Эрадж Шамс Старожил
                                              03 октября 2016, 19:37
                                              Спасибо большое за ответ. К сожалению переадресация все равно происходит. Пытался закрывать такие настройки
                                              # The Friendly URLs part
                                              RewriteCond %{REQUEST_FILENAME} !-f
                                              RewriteCond %{REQUEST_FILENAME} !-d
                                              RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
                                              но все безтолку.
                                              Когда закрываю вообще все настройки, то вроде все работает, правда сейчас почему-то на дочерних страницах выходит 404 ошибка. Не силен в htaccess, поэтому ищу человека, который поможет разобраться.
                                            Михаил
                                            Михаил Старожил
                                            01 февраля 2017, 08:45
                                            Помогите пожалуйста. Уже вторые сутки бьюсь. Создал по инструкции Василия, вроде все норм. открывается site.ru и test.site.ru Но контент не меняется, показывает везде какой на site.ru. Скопировал контекст с сохранением структуры и урлами и т.д. .htaccess прописал редиректы как в примере автора. В чем проблема?
                                              Михаил
                                              Михаил Старожил
                                              01 февраля 2017, 08:52
                                              создал сниппет с $_SERVER['HTTP_HOST'], вставил его в шаблон на странице test.site.ru показывает хост site.ru
                                                Михаил
                                                Михаил Старожил
                                                01 февраля 2017, 09:31
                                                Решил проблему
                                              Aleksandr
                                              Aleksandr Старожил
                                              09 февраля 2017, 12:33
                                              Добрый день,

                                              Подскажите как правила Apache2 переделать под nginx
                                              RewriteCond %{HTTP_HOST}    ^www\.sub.domen-1\.ru [NC]
                                              RewriteCond %{REQUEST_FILENAME} !-f
                                              RewriteCond %{REQUEST_FILENAME} !-d
                                              RewriteRule ^(.+)\.(ico|png|gif|jpg|jpeg|pdf|css|js)$ /site/sub.domen-1.ru/$0 [L,NC]

                                              Попробовал вот так, не работает
                                              if ($host = "www.sub.domen-1.ru"){ rewrite ^/(.+)\.(ico|png|gif|jpg|jpeg|pdf|css|js)$ /site/sub.domen-1/$1 break;}
                                                Aleksandr
                                                Aleksandr Старожил
                                                09 февраля 2017, 13:02
                                                if ($host = "www.sub.domen-1.ru"){ rewrite ^/(.+)\.(ico|png|gif|jpg|jpeg|pdf|css|js)$ /site/sub.domen-1.ru/$1 break;}
                                                Murashkin
                                                Murashkin Старожил
                                                24 апреля 2017, 17:32
                                                Здравствуйте. Планируется сайт на поддоменах для разных российских городов, и у каждого поддомена еще 2 языка (рус,en). Как такое можно реализовать, используя контексты? Отдельно эти две задачи реализовывал на разных сайтах. Но 2-в-1 не приходилось, и описания подобного нигде не нашел.
                                                  Murashkin
                                                  Murashkin Старожил
                                                  02 июня 2017, 15:20
                                                  Никто не сталкивался с таким?
                                                  У меня получается 5 регионов на поддоменах типа site.ru, kazan.site.ru, spb.site.ru, nn.site.ru, ekb.site.ru. Это планируется на контекстах реализовать по инструкции Безумкина.
                                                  И у каждого такого сайта 2 языка будет. На контекстах уже не получится, насколько я понимаю, т.к. их функции заняты. Что использовать в данном случае посоветуете?
                                                    Владимир
                                                    Владимир Старожил
                                                    02 июня 2017, 15:37
                                                      Murashkin
                                                      Murashkin Старожил
                                                      02 июня 2017, 16:19
                                                      Выглядит неплохо. Но совсем свежая разработка, посмотреть бы примеры готовые. Наткнулся также на модуль Lingua и какой-то migxMultiLang. Но Lingua, как понял из документации, не подходит, т.к. нельзя для одной страницы на разных языках разные темплейты использовать. Про второй пока вобще мало инфы нашел.
                                                        Владимир
                                                        Владимир Старожил
                                                        02 июня 2017, 16:32
                                                        темплейты для разных языков- смотрите в сторону fenom и в случае с Lingua и с Локализатором, хотя скорее не совсем разные темплейты, а один темплейт и разные блоки феномом переключать в зависимости от языка
                                                  BUSERGAl
                                                  BUSERGAl Старожил
                                                  27 апреля 2017, 23:47
                                                  Вопрос по урлам, не получается укоротить часть урл., выдает ошибку 500

                                                  file.modx.pro/files/1/6/e/16e4652a6c7eb72e4f71ee443fbb53be.jpg
                                                  file.modx.pro/files/8/f/c/8fc57695113aadff0da069775c615fbb.jpg
                                                  file.modx.pro/files/e/1/3/e13cd28dffc7e19edaafdc0d4373a30b.jpg
                                                  file.modx.pro/files/7/e/0/7e084603aedb4096a59958253ca04f13.jpg

                                                  при отключении плагина все работает корректно…
                                                    kaix8
                                                    kaix8 Старожил
                                                    20 июля 2017, 12:31
                                                    Подскажите, а как быть с https соединением?
                                                    Сейчас есть домен domen.ru — он доступен по https соединению.
                                                    Есть poddomen.domen.ru — он сейчас доступен только по http.
                                                    При заходе на poddomen.domen.ru его редиректит на domen.ru
                                                    в .htaccess указано
                                                    RewriteCond %{HTTP_HOST} .
                                                    RewriteCond %{HTTP_HOST} !^domen\.ru [NC]
                                                    RewriteRule (.*) https://domen.ru/$1 [R=301,L]
                                                    
                                                    RewriteCond %{SERVER_PORT} !^443$ 
                                                    RewriteRule ^(.*)$ https://domen.ru/$1 [R=301,L]
                                                    
                                                    RewriteCond %{REQUEST_FILENAME} !-f
                                                    RewriteCond %{REQUEST_FILENAME} !-d
                                                    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
                                                    Что бы сделать для поддомена https, нужно создать его в отдельной директории. Но тогда не работает мультисайтовость.

                                                    Подскажите, как сделать что бы не редиректило с poddomen.domen.ru на domen.ru?
                                                    Или как настроить мультисайтовость, в случае создания поддомена в отдельной директории?
                                                      Павел
                                                      Павел Старожил
                                                      25 августа 2017, 04:45
                                                      не нашел как спрятать шаблоны не относящиеся к текущему контексту.
                                                      Кто нибудь нашёл как убрать шаблоны не относящиеся к текущему контексту?
                                                      А то получаеться, если много разных клиентов — (контекст), то показывает очень много шаблонов!
                                                        Павел
                                                        Павел Старожил
                                                        25 августа 2017, 04:55
                                                        Или хотя бы как меняеться дефолтный шаблон для конкретной группы пользователей?
                                                        Если менялись бы они, тогда можно было как то убрать вообще выбор Шаблонов в редакторе Ресурса, на скрине я показал, что имею ввиду:
                                                          Илья Уткин
                                                          Илья Уткин Администратор
                                                          25 августа 2017, 06:40
                                                          Можно у контекста создать настройку default_template — в ней указать id шаблона, который нужно использовать у дочерних ресурсов.
                                                            Павел
                                                            Павел Старожил
                                                            25 августа 2017, 06:56
                                                            Спасибо попробовал, всё равно все шаблоны выводятся
                                                          Павел
                                                          Павел Старожил
                                                          25 августа 2017, 05:09
                                                          Случайно удалил скрин сори, вот:
                                                            Димыч
                                                            Димыч Старожил
                                                            04 января 2019, 14:26
                                                            Как настроить поддомены в ISP manager:
                                                            просто прописываете нужные поддомены в псевдонимах основного домена. Автоподдомены — отключены. Никакие папки создавать не нужно.
                                                            Домены второго уровня скорее всего также добавляются (еще не пробовал).
                                                              РОМАН
                                                              РОМАН Старожил
                                                              24 марта 2019, 13:56
                                                              Приветсвую! Делаю все настройки по инструкции, но контенты не переключаются в зависимости от доменного имени, отправляет на главную страницу основного сайта. Если менять id стартовой у главного сайта в насторойках контента, переадресация идет на нужный id. В чем может быть проблема?
                                                                Александр Коваленко
                                                                26 марта 2022, 22:02
                                                                Всем добра!
                                                                Прочитал почти все комментарии но не нашел вопроса с похожим запросом.
                                                                У меня есть много однотипных сайтов site-region1.ru, site-region2.ru, site-region3.ru и тд.
                                                                Для некоторых нужна мультиязычность (site-region3.ru русская версия, site-region3.ru/en/ — английская)
                                                                Каждый регион имеет свой контекст. И если есть языковая версия, то она выносится в новый контекст.
                                                                Использовал код для переключения контекстов отсюда — bezumkin.ru/sections/tips_and_tricks/2439/
                                                                Но использовал для доменов и поддоменов, который использует http_host для проверки.

                                                                Вот)))
                                                                Вопрос в том, как соединить эти 2 метода проверки, чтобы проверить http_host, а потом base_url?
                                                                Спасибо большое за любую помощь!
                                                                  Николай Савин
                                                                  Николай Савин Администратор
                                                                  27 марта 2022, 12:45
                                                                  Вам принципиально определять язык через сегмент адреса?
                                                                  Было бы существенно проще, если бы язык шел поддоменом. en.site-region3.ru/
                                                                  В текущем случае вы конечно осилите переключение языка основываясь на host + /lang/
                                                                  Но останутся нерешенными проблемы внутри JS. Все ajax запросы будут улетать на базовый хост, и ответы будут приходить на базовом языке.
                                                                    Александр Коваленко
                                                                    27 марта 2022, 13:29
                                                                    Да, это основное требования для SEO. Чтобы языковые версии оставались внутри одного домена или поддомена.
                                                                    Поэтому ищу способ решения задачи в такой форме. Не совсем понял про JS, какие трудности могут возникнуть?
                                                                      Николай Савин
                                                                      Николай Савин Администратор
                                                                      27 марта 2022, 14:09
                                                                      Я могу ошибаться. Тогда коллеги меня поправят.

                                                                      Возьмем к примеру компонент mSearch2 и его автодополнения в поисковой строке.
                                                                      Компонент отправляет запросы к серверу, беря за основу текущий хост. Который всегда без сегментов адреса.
                                                                      Сервер используя хост, получает язык контекста и отдает ответ на языке чистого хоста.

                                                                      Таким образом находясь на адресе site-region3.ru/en/ сервер будет запрашивать контекст основываясь только на хосте site-region3.ru и язык ответа для поисковых запросов будет русский (ну или какой там будет основным)

                                                                      И таких компонентов, которые берут за основу только хост — много. Их можно дорабатывать конечно. Просто возни больше.
                                                                    Константин Ильин
                                                                    27 марта 2022, 22:00
                                                                    Если я правильно понял о поиске языковой версии в урл, то вот
                                                                    <?
                                                                    // Массив допустимых язоковые версий, можно сделать настройку в модх и через getOption() получить, но это лишний запрос к БД
                                                                    $allowLanguages = ['en','es'];
                                                                    
                                                                    // Разбор урла
                                                                    $queryArray = parse_url($_SERVER['HTTP_REFERER']);
                                                                    
                                                                    
                                                                    // Разбор пути запроса 
                                                                    $urlArray = explode('/',  $queryArray['path']);
                                                                    
                                                                    // Если первый сегмент пути есть в массиве допустимых языков, соответственно урл содержит языковую версию
                                                                    if(in_array($urlArray[1], $allowLanguages)){
                                                                        
                                                                        // Тут ищем контекст с языковой версией и делаем переключение на него или что-то другое
                                                                    
                                                                    }
                                                                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                    104