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

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

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

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

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






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




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

$_SESSION['domain']



UPD от 24.10.2017

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




Скачать:
modstrore.pro
GitHub
Михаил
Михаил
22 октября 2017, 04:16
modx.pro
4 822

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

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

      В моем просто поддомен и к нему опции.
        Андрей
        25 октября 2017, 12:01
        Получается CityFields более широким функционалом обладает? Ваш же компонент полностью может быть заменен тем?
          Михаил
          25 октября 2017, 15:04
          Возможно. Я не проверял тот компонент
            Илья Уткин
            25 октября 2017, 19:03
            CityFields платный, а этот бесплатный. Если навороченный функционал не нужен — это хорошая замена.
        Волков Николай
        31 октября 2017, 05:36
        Прости меня, Господи… Но зачем значения хранить в Сессии? Мне уже плохо от одной только мысли, что в сессии будет храниться код для счетчиков, вроде Метрики… Чем не устраивает кэш? Благо, под субдомены обычно используются контексты, в их кэш и заносилось бы…
          Михаил
          31 октября 2017, 06:41
          А чем для вас плохо хранить данные в сессии? И смысл создавать контексты, если меняются только адреса да телефоны?
            Волков Николай
            31 октября 2017, 06:53
            Как минимум то, что в сессиях хранятся обычно уникальные для посетителя значения, а не для его города + в случае счетчиков и т.п. скриптов, то, что по сути они готовый кусок HTML, который надо обернуть в
              Михаил
              31 октября 2017, 07:37
              А кто придумал это обычно? Сессии для хранения временных данных, что тут как раз и уместно. Но ваше предложение какое? Давайте я добавлю как правильно
                Руслан Алеев
                31 октября 2017, 18:23
                Здравствуйте, Михаил, подскажите ответы:
                1) " Неограниченного количества опций к каждому поддомену" — опции, это TV или настройки, как их в шаблоне вызвать?
                2) «Перенаправление всех запросов на основной домен» — можно пример для apache? Не подхватываются автоматом, может не так написал.
                  Михаил
                  01 ноября 2017, 08:13
                  В шаблоне к примеру можно
                  $_SESSION['domain']['options']
                  Феном:
                  $.session.domain.options
                  По Apache к сожалению не подскажу, не работаю с ним (
                    Руслан Алеев
                    01 ноября 2017, 11:17
                    Хорошо, спасибо
                      Андрей
                      22 января 2018, 09:19
                      Скажите, а как можно вывести в плейсхолдере опции на страницах?
                        Михаил
                        22 января 2018, 09:23
                        Вы имеете ввиду вида:
                        [[+key]]
                        ?
                          Андрей
                          22 января 2018, 09:24
                          ага)
                            Михаил
                            22 января 2018, 10:07
                            Можно, как вариант прогнать в цикле $_SESSION['domain']['options'] и установить ключи в $modx->setPlaceholder();
                              Андрей
                              22 января 2018, 10:15
                              Да, этот вариант я рассматривал, но не охота возиться))
                              Сделал на Fenom типа так:
                              {var $key = $.session.domain.options.0.value}
                              И в нужном месте
                              {$key}
          Волков Николай
          31 октября 2017, 05:45
          Небольшая поправка: я тут вспомнил, что у меня есть сайты, где 1314 субдоменов (по одному на город в РФ + работа с адресом каждого субдомена из админки) :-) Там я не использовал контексты и это бы не прокатило :-) Но случай все равно частный, т.к. единичным случаям до сих пор неизвестно, что в SEO такое не прокатит, а скорее наоборот:-)
            Андрей
            23 января 2018, 22:02
            Подскажите. а можно ли вывести опцию какой-любо страницы, на другой странице? У меня есть у товаров некий параметр, разный в зависимости от поддомена. Но мне эти параметры нужно вывести на главной странице.
              Михаил
              24 января 2018, 09:36
              Конечно можно. Создайте сниппет:
              {'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]]
            Евгений Александрович
            02 февраля 2018, 10:01
            Добрый день. После установки в логе посыпались ошибки
            [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
            )
            Андрей
            08 февраля 2018, 14:40
            Добрый день. Скажите, пожалуйста, в чем может быть проблема? У меня при изменении значений опций поддоменов они не заносятся в БД.
            Условно есть значение опции для поддомена А = 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
              Да, пока так. В новой версии обязательно исправлю. Я просто забыл про такое редактирование
                Андрей
                08 февраля 2018, 15:25
                Спасибо!
                  Михаил
                  08 февраля 2018, 16:41
                  Напишите пожалуйста сюда. Что бы я не забыл.
                    Андрей
                    21 февраля 2018, 13:02
                    Михаил, добрый день. Подскажите, как скоро планируется поправить мою просьбу? Заранее спасибо))
                      Михаил
                      21 февраля 2018, 13:08
                      Еще не дошел до него. Но первый в списке среди улучшений дополнений
                        Андрей
                        24 февраля 2018, 18:50
                        А можно вас попросить сделать это поскорее, а то для меня жизненно важный функционал)) Не сочтите за наглось))
                          Михаил
                          24 февраля 2018, 19:30
                          Ну раз жизненно важный, то добавил. Обновляйтесь.
                            Андрей
                            24 февраля 2018, 19:34
                            Класс, спасибо!
                            Но у меня при изменении пишет — Домен с таким именем уже существует. Походу, где-то проверочка закралась на название домена)
                              Михаил
                              24 февраля 2018, 19:37
                              Кэш почистите. По идее добавил изменение только значение опции из грида, там с доменом никак не пересекается
                                Андрей
                                24 февраля 2018, 19:42
                                ну кеш я первым делом снес — не помогло. Могу дать доступ к сайту, если нужно.
                                Михаил
                                24 февраля 2018, 19:43
                                Да, давайте. info@modx.kz
            Евгений Лазарев
            15 февраля 2019, 15:28
            Скачал. Подключил. Но на самом начале что-то не то. Подскажите пожалуйста. Например в опция добавляю номер телефона для поддмена. Если слитно писать — сохранит. А если пробел или буква или тире — то фиг вам. Просто напросто сохраняется все что есть до этого символа.
              Михаил
              15 февраля 2019, 16:54





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