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


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


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

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

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




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



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

$_SESSION['domain']


UPD от 24.10.2017

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



Скачать:
modstrore.pro
GitHub
22 октября 2017, 07:16    Михаил   G+  
19    1003 +20


Комментарии ()

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

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