[cityFields] Поддержка полных доменов, подкаталогов и MODX 3

Всем привет. Наконец-то проделана значимая работа над компонентом cityFields и добавлен функционал, о котором мне бы хотелось сегодня вам рассказать.



Добавлена поддержка использования полных доменов и подкаталогов в качестве ключей городов. То есть сайт может работать с несколькими доменами и каждый домен будет переключать на свой город. А также города могут быть доступны по ссылкам вида
site.ru/city
При этом можно использовать два режима одновременно. Вы можете выделить домен под отдельный регион и внутри него организовать разделение городов региона по подкаталогам.

Как это работает можно посмотреть на демо-сайте, а ниже скриншот как это должно быть настроено в админке.


Разработана версия компонента под MODX 3. Но так как поддержка MODX 2 закончится не скоро, то теперь в магазине компонентов modstore.pro доступны две версии компонента: версии 1.х.х для MODX 2 и версии 2.х.х для MODX 3. Покупать компонент отдельно для каждой версии не нужно, в зависимости от вашей версии MODX установится нужная версия компонента.

Также переписаны чанки, стили CSS и скрипты JavaScript для того, чтобы избавиться от привязки к Bootstrap и jQuery. В версии 1.3.x компонента ещё остаются старые файлы стилей и JS-код для поддержки старых чанков и логики, но начиная с версии 2.х.х эти файлы уже удалены из компонента.

Ну и последнее — наконец-то написал документацию по использованию компонента, которую буду дополнять с появлением нового функционала или новых кейсов использования компонента.
Сергей Фещуков
03 марта 2023, 11:00
modx.pro
532
+17
Поблагодарить автора Отправить деньги

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

Иван Бочкарев
03 марта 2023, 11:06
0
Спасибо! Ждал!
    Артур Шевченко
    03 марта 2023, 11:26
    0
    Не ждал, но всё равно спасибо!)))
      Дмитрий Касаткин
      04 марта 2023, 23:14
      +4
      Классные обновления! Просто УРА! Спасибо!

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

      1. Отказ от необходимости использовать тэг base, потому что с ним не работаtn якорная #навигация (JS-костыли не в счёт) и вообще этот тэг одно сплошное недоразумение и костыль.
      Как сделать: при формировании ссылок можно &prepareSnippet использовать для дописки имени папки-города к uri. Да, потребуется исправить вызовы pdoMenu, pdoResources и так далее, либо добавить в стандартные наборы параметров и вызовы тогда можно не трогать, но в любом случае это крутая возможность, на проектах где жуткого base нет, получается просто must-have! Но чтобы дописать имя папки, надо его знать, не уверен стоит ли парсить ключ, может просто запросить отдельным полем при создании домена...)

      2. Возможность одновременной линковки и поддомена и папки к городу(ой не спрашивайте меня зачем это, SEO-шники чего только не придумают) Чтобы открывалось и по spb.site.com/contacts и по site.com/spb/contacts одновременно
      Как сделать: чтобы не менялся cityid, наверное проще всего добавить имя папки ещё одной колонкой в таблицу городов. Тогда, если фича нужна — указываешь имя папки и адрес домена в ключ.
      Кажется, в анонсированной версии 1.3.1-pl можно 2 раза создать город, назвать СПБ например оба и указать в поле Ключ 1 раз поддомен, а 2й раз папку, но будет сложность с выводом списка городов и гео-редиректом… Если тема интересна, @Сергей Фещуков напиши мне в телеграм или в ЛС, есть почти готовый концепт-релиз (на основе старой версии cityfields конечно)

      P.S. Несказанно рад обновлению! Я наверное самый большой фанат пакета (пруфы в tg-чатике), рекомендую его всем! Сорри что коммент выглядит как какое-то ТЗ, но я по-другому не смог сформулировать ¯\_(ツ)_/¯
        Сергей
        12 марта 2023, 01:24
        0
        Спасибо за обновление, оно действительно очень полезное, но есть одно но, документация совершенно не дает ни какого представления о контекстах. Надо ли создавать контексты для каждого города, если это вложенный город (или надо создать папку в основном контексте с нужным url как у города). У меня проблема следующего характера. Я создал папку в основном контексте с двумя городами arkhangelsk и ekaterinburg. Если захожу в раздел и меняю город то путь становиться site.ru/ekaterinburg/arkhangelsk/123.html Или не надо создавать физический раздел и добавлять все изменения на странице через данные?

        Проблема в том что или я не верно использую компонент или я не верно его настраиваю.
          Сергей Фещуков
          12 марта 2023, 05:09
          0
          В документации как раз описано как настраивать компонент, в том числе при использовании подпапок. И в ней нет ни слова о контекстах, потому что компонент с ними вообще не работает. Так же не говорится о том, что необходимо физически создавать папки/ разделы, потому что этого делать не надо.
            Сергей
            12 марта 2023, 11:00
            0
            Спасибо за ответ. Тогда я не совсем понимаю в чем тогда смысл? Фактически мы плодим не существующие url
            Например, у нас есть несколько городов:
            Екатеринбург
            Москва
            Архангельск

            У сайта есть структура:
            Главная
            Каталог услуг
            Услуга
            Блог
            Статья

            Для каждого города создается куча url, физически они будут отличаться, только информацией, добавленной в компоненте (телефон, адрес и для каждой страницы придется создавать кучу настроек, чтобы был разный контент на странице).
            site.ru/arkhangelsk
            site.ru/ekaterinburg
            site.ru (Москва на пример по умолчанию)

            *Если я меняю город, меняется url текущей станицы (если даже её не существует), но при переходе на другую страницу встает город по умолчанию, так-как в pdomenu url не меняются.
            *Еще странность, у меня по умолчанию стоит Москва, хотя я в другом городе и он его не определяет.
            С точки зрения было бы правильно.
            1. Менялись бы url у меню при выборе города, главная страница выглядела бы так
            a. site.ru/arkhangelsk
            b. site.ru/ekaterinburg
            c. site.ru (Москва на пример по умолчанию)
            2. Для городов что созданы страницы, он бы показывал при этом url адреса были бы только существующие.
            3. А для раздела, где не указан город url оставался бы без изменения.
            Например, есть блог, и он не зависит от города и не плодилось бы кучу url не существующих, а вот услугу желательно, чтобы структура была верной.

            Вот пару примеров действующих сайтов
            aaccent.ru/ekb/sozdanie-sajtov/ (если прейти в кейсы, то привязки к городу нет)
            b2b-creative.ru/ekaterinburg/site/ (если прейти в кейсы, то привязки к городу нет)
            Наверное, это было бы верно, если для города нет страницы, то её и не должно быть, а так мы только запутаем поисковых роботов.
            Какая это вижу, в компоненте указываем id главной страницы для города и он берет всю информацию от туда. Если раздела нет в городе, например блога или кейсов или контактов, то она остается в адресом по умолчанию и берется из основного раздела.
          Сергей
          12 марта 2023, 11:04
          0
          У вас кстати работает, если я выбираю Екатеринбург, то адреса все становятся с ekb, у меня не меняется.
          И еще дополню, если есть личный кабинет, он же не будет для каждого города свой.
            Сергей
            12 марта 2023, 11:38
            +1
            Извиняюсь, забыл про <base href="[[!+cf.current_city.url]]" />
            Сергей
            12 марта 2023, 13:21
            0
            Извиняюсь за кучу вопросов.
            Как идея можно подгружать разделы типа блог, кейсы из другого контекста. В таком случае к ним же не будет добавлен город в url?

            И второй вопрос, не знаю почему, но цена для других городов не работает. Не на странице товара, не в каталоге.
              Алексей
              13 марта 2023, 16:18
              0
              Добрый день!
              У меня вопрос такого плана. Мне надо сделать определение не для города, а для области (не Санкт-Петербург, а Ленинградская область). То есть в Ленинградской области одна информация, а в остальной России другая. Я смогу это реализовать с помощью компонента? Спасибо!
                Дмитрий Касаткин
                13 марта 2023, 17:49
                0
                Приветствую! Компонент основан на sxGeo, там определение области есть → смотри демо на оф. сайте: sypexgeo.net (подписана как Регион прямо поверх карты). Возможно придётся после установки компонента подправить настройки точности, из коробки там Город, и настройками в админке на Область переключить нельзя.
                Сергей Фещуков
                13 марта 2023, 19:27
                +1
                Добрый день. В целом, можно вместо города написать область и всё будет работать, кроме определения города (в вашем случае области) по IP-адресу. Добавление регионов планируется в ближайшем мажорном обновлении.
                  Алексей
                  14 марта 2023, 10:41
                  0
                  Спасибо! Буду ждать обновление.
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                14