[changeDomain] - определение поддоменов

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


В принципе компонент простой для многих, и это все можно было бы написать и не заворачивать в дополнение, но я попробовал.

В настройках nginx или apache надо сделать перенаправление всех запросов на основной домен. Компонент подхватывает домены на лету.

Создать поддомен:






Ну и возможность создавать дополнительные поля для каждого поддомена:




Если при заходе на сайт, поддомен определился и он есть, то данные записываются в сессию

$_SESSION['domain']



UPD от 24.10.2017

Добавил поле keywords:




Скачать:
modstrore.pro
GitHub
Михаил
22 октября 2017, 04:16
modx.pro
19
4 184
+20
Поблагодарить автора Отправить деньги

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

Азамат
24 октября 2017, 10:31
0
Аналог друпального Domain Access? Круто :)
Плюсанул, в закладки, звездочку на гитхабе :)
    Андрей
    25 октября 2017, 11:21
    0
    Подскажите, чем отличается от компонента CityFileds?
      Михаил
      25 октября 2017, 11:32
      0
      Добавление городов в список.
      Определение города по домену.
      Определение города по IP-адресу.
      Добавление уникальной информации для каждого города.
      Управление ценами товаров miniShop2 для каждого города.

      В моем просто поддомен и к нему опции.
        Андрей
        25 октября 2017, 12:01
        0
        Получается CityFields более широким функционалом обладает? Ваш же компонент полностью может быть заменен тем?
          Михаил
          25 октября 2017, 15:04
          0
          Возможно. Я не проверял тот компонент
            Илья Уткин
            25 октября 2017, 19:03
            +3
            CityFields платный, а этот бесплатный. Если навороченный функционал не нужен — это хорошая замена.
        Волков Николай
        31 октября 2017, 05:36
        0
        Прости меня, Господи… Но зачем значения хранить в Сессии? Мне уже плохо от одной только мысли, что в сессии будет храниться код для счетчиков, вроде Метрики… Чем не устраивает кэш? Благо, под субдомены обычно используются контексты, в их кэш и заносилось бы…
          Михаил
          31 октября 2017, 06:41
          0
          А чем для вас плохо хранить данные в сессии? И смысл создавать контексты, если меняются только адреса да телефоны?
            Волков Николай
            31 октября 2017, 06:53
            0
            Как минимум то, что в сессиях хранятся обычно уникальные для посетителя значения, а не для его города + в случае счетчиков и т.п. скриптов, то, что по сути они готовый кусок HTML, который надо обернуть в
              Михаил
              31 октября 2017, 07:37
              0
              А кто придумал это обычно? Сессии для хранения временных данных, что тут как раз и уместно. Но ваше предложение какое? Давайте я добавлю как правильно
                Руслан Алеев
                31 октября 2017, 18:23
                0
                Здравствуйте, Михаил, подскажите ответы:
                1) " Неограниченного количества опций к каждому поддомену" — опции, это TV или настройки, как их в шаблоне вызвать?
                2) «Перенаправление всех запросов на основной домен» — можно пример для apache? Не подхватываются автоматом, может не так написал.
                  Михаил
                  01 ноября 2017, 08:13
                  +1
                  В шаблоне к примеру можно
                  $_SESSION['domain']['options']
                  Феном:
                  $.session.domain.options
                  По Apache к сожалению не подскажу, не работаю с ним (
                    Руслан Алеев
                    01 ноября 2017, 11:17
                    0
                    Хорошо, спасибо
                      Андрей
                      22 января 2018, 09:19
                      0
                      Скажите, а как можно вывести в плейсхолдере опции на страницах?
                        Михаил
                        22 января 2018, 09:23
                        0
                        Вы имеете ввиду вида:
                        [[+key]]
                        ?
                          Андрей
                          22 января 2018, 09:24
                          0
                          ага)
                            Михаил
                            22 января 2018, 10:07
                            0
                            Можно, как вариант прогнать в цикле $_SESSION['domain']['options'] и установить ключи в $modx->setPlaceholder();
                              Андрей
                              22 января 2018, 10:15
                              0
                              Да, этот вариант я рассматривал, но не охота возиться))
                              Сделал на Fenom типа так:
                              {var $key = $.session.domain.options.0.value}
                              И в нужном месте
                              {$key}
          Волков Николай
          31 октября 2017, 05:45
          +1
          Небольшая поправка: я тут вспомнил, что у меня есть сайты, где 1314 субдоменов (по одному на город в РФ + работа с адресом каждого субдомена из админки) :-) Там я не использовал контексты и это бы не прокатило :-) Но случай все равно частный, т.к. единичным случаям до сих пор неизвестно, что в SEO такое не прокатит, а скорее наоборот:-)
            Андрей
            23 января 2018, 22:02
            0
            Подскажите. а можно ли вывести опцию какой-любо страницы, на другой странице? У меня есть у товаров некий параметр, разный в зависимости от поддомена. Но мне эти параметры нужно вывести на главной странице.
              Михаил
              24 января 2018, 09:36
              0
              Конечно можно. Создайте сниппет:
              {'getDomainOptions'|snippet:[
                  'resource' => 4 //тут необходимый ресурс
              ]}
              С кодом:
              <?php
              $session = $_SESSION['domain']['values'];
              $q = $modx->newQuery('changeDomainOptions');
              $q->where(array('domain_id' => $session['id'], 'resource_id' => $resource));
              
              $outputs = $modx->getCollection('changeDomainOptions', $q);
              $chunk = '';
              foreach($outputs as $output){
                  $chunk .= $modx->getChunk('chunkname', $output->toArray());
              }
              
              return $chunk;
              и чанк:
              [[+name]]-[[+key]]-[[+value]]
                Андрей
                24 января 2018, 12:30
                0
                Ага, спасибо!
              Евгений Александрович
              02 февраля 2018, 10:01
              0
              Добрый день. После установки в логе посыпались ошибки
              [2018-02-02 09:15:42] (FATAL @ /home/m/site-modx/public_html/core/components/changedomain/model/changedomain/changedomain.class.php : 68) 1836
              [2018-02-02 09:15:42] (FATAL @ /home/m/site-modx/public_html/core/components/changedomain/model/changedomain/changedomain.class.php : 123) 1
              [2018-02-02 09:15:42] (ERROR @ /home/m/site-modx/public_html/core/model/modx/modx.class.php : 1612) [OnLoadWebDocument]Array
              (
                  [status] => error
                  [response] => site.ru
              )
                Михаил
                02 февраля 2018, 10:05
                0
                Какая версия?
              Андрей
              08 февраля 2018, 14:40
              0
              Добрый день. Скажите, пожалуйста, в чем может быть проблема? У меня при изменении значений опций поддоменов они не заносятся в БД.
              Условно есть значение опции для поддомена А = 15000, меняю на 100, все равно остается 15000.
              Вот для наглядности видос: www.dropbox.com/s/syauhbmq8jqyv9k/%D0%A1%D0%BC%D0%B5%D0%BD%D0%B0%20%D0%BE%D0%BF%D1%86%D0%B8%D0%B9.mp4?dl=0
                Михаил
                08 февраля 2018, 15:22
                0
                Да, пока так. В новой версии обязательно исправлю. Я просто забыл про такое редактирование
                  Андрей
                  08 февраля 2018, 15:25
                  0
                  Спасибо!
                    Михаил
                    08 февраля 2018, 16:41
                    0
                    Напишите пожалуйста сюда. Что бы я не забыл.
                      Андрей
                      21 февраля 2018, 13:02
                      0
                      Михаил, добрый день. Подскажите, как скоро планируется поправить мою просьбу? Заранее спасибо))
                        Михаил
                        21 февраля 2018, 13:08
                        0
                        Еще не дошел до него. Но первый в списке среди улучшений дополнений
                          Андрей
                          24 февраля 2018, 18:50
                          0
                          А можно вас попросить сделать это поскорее, а то для меня жизненно важный функционал)) Не сочтите за наглось))
                            Михаил
                            24 февраля 2018, 19:30
                            0
                            Ну раз жизненно важный, то добавил. Обновляйтесь.
                              Андрей
                              24 февраля 2018, 19:34
                              0
                              Класс, спасибо!
                              Но у меня при изменении пишет — Домен с таким именем уже существует. Походу, где-то проверочка закралась на название домена)
                                Михаил
                                24 февраля 2018, 19:37
                                0
                                Кэш почистите. По идее добавил изменение только значение опции из грида, там с доменом никак не пересекается
                                  Андрей
                                  24 февраля 2018, 19:42
                                  0
                                  ну кеш я первым делом снес — не помогло. Могу дать доступ к сайту, если нужно.
                                  Михаил
                                  24 февраля 2018, 19:43
                                  0
                                  Да, давайте. info@modx.kz
              Евгений Лазарев
              15 февраля 2019, 15:28
              0
              Скачал. Подключил. Но на самом начале что-то не то. Подскажите пожалуйста. Например в опция добавляю номер телефона для поддмена. Если слитно писать — сохранит. А если пробел или буква или тире — то фиг вам. Просто напросто сохраняется все что есть до этого символа.
                Михаил
                15 февраля 2019, 16:54
                0





                Проверил, все норм
                  Евгений Лазарев
                  15 февраля 2019, 16:59
                  0
                  Странно. Я на двух сайтах проверял. Не подскажете в чем может быть проблема?
                  Дошел до файла mgr/item/options/updatefromgrid.class.php
                  $data там норм. Но видимо вот эта строчка $this->setProperties($data); выполняется у меня не верно.
                  php 72, версия modx 2.6.5
                    Михаил
                    15 февраля 2019, 17:08
                    0
                    доступ киньте, я посмотрю
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                42