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

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


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

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

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






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




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

$_SESSION['domain']



UPD от 24.10.2017

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




Скачать:
modstrore.pro
GitHub
Михаил
22 октября 2017, 04:16
20
1 341
+20

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

Азамат
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