[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
1 487
+17
Поблагодарить автора Отправить деньги

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

Иван Бочкарев
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?

            И второй вопрос, не знаю почему, но цена для других городов не работает. Не на странице товара, не в каталоге.
              Артур
              25 апреля 2023, 23:26
              0
              каким образом решили чтобы url к примеру блога, кейса остаётся статичным?
                Сергей
                25 апреля 2023, 23:29
                0
                Как видите, автор на этот вопрос не ответил, я к сожалению решения не искал.
              Алексей
              13 марта 2023, 16:18
              0
              Добрый день!
              У меня вопрос такого плана. Мне надо сделать определение не для города, а для области (не Санкт-Петербург, а Ленинградская область). То есть в Ленинградской области одна информация, а в остальной России другая. Я смогу это реализовать с помощью компонента? Спасибо!
                Дима Касаткин
                13 марта 2023, 17:49
                0
                Приветствую! Компонент основан на sxGeo, там определение области есть → смотри демо на оф. сайте: sypexgeo.net (подписана как Регион прямо поверх карты). Возможно придётся после установки компонента подправить настройки точности, из коробки там Город, и настройками в админке на Область переключить нельзя.
                Сергей Фещуков
                13 марта 2023, 19:27
                +1
                Добрый день. В целом, можно вместо города написать область и всё будет работать, кроме определения города (в вашем случае области) по IP-адресу. Добавление регионов планируется в ближайшем мажорном обновлении.
                  Алексей
                  14 марта 2023, 10:41
                  0
                  Спасибо! Буду ждать обновление.
                    Алексей
                    12 апреля 2023, 16:33
                    0
                    Сергей, добрый день. Подскажите, регионы в компонент еще не добавили?
                      Сергей Фещуков
                      12 апреля 2023, 19:26
                      0
                      Ещё нет. Планируется в версиях 1.4.x-pl и 2.1.x-pl для MODX2 и MODX3 соответственно
                        Алексей
                        13 апреля 2023, 09:55
                        0
                        Спасибо! Очень жду!!! :)
                  Артур
                  25 апреля 2023, 20:44
                  0
                  все работает, только вопрос как изменить ссылку на главную (идет на страницу по умолчанию) если использован pdomenu? а ссылку на контакты наоборот сделать неизменной как сейчас главная?
                    Сергей Фещуков
                    26 апреля 2023, 07:12
                    0
                    Добрый день.

                    как изменить ссылку на главную (идет на страницу по умолчанию) если использован pdomenu?
                    Если используются домены, то просто в теге base вывести [[!+cf.current_city.url]].
                    Если вы используете подпапки, то тут сложнее. А главная у вас как выводится? Через &displayStart параметр и &tplStart шаблон?

                    а ссылку на контакты наоборот сделать неизменной как сейчас главная?
                    К сожалению, такого функционала в компоненте нет. Страница всё-равно будет доступна в любом городе, даже если в меню вывести только ссылку на главную.
                    Максим
                    11 августа 2023, 15:59
                    1
                    0
                    Приветствую! Подскажите, пожалуйста, возможно ли подружить CityFields с msOptionPrice2.
                    У меня в каталоге матрасы различных размеров — модификации.

                    Пример:
                    Размер 80х190 см… 4500 руб
                    Размер 80х200 см… 4700 руб
                    Размер 90х190 см… 5900 руб
                    Размер 90х200 см… 6200 руб
                    и тд.

                    Есть два города. Возможно ли сделать так, чтобы при выборе города №2 ко всем ценам в модификациях добавлялась сумма, к примеру, +700 руб.?
                      Сергей
                      13 сентября 2023, 15:22
                      0
                      Добрый день!
                      При включении компонента на modx 3. Перестает работать ошибка 404 на страницах. Отдает 500 при отсутствие страницы. php 8.1.x
                        Scorp Satex
                        13 сентября 2023, 17:32
                        0
                        Та же проблема на modx 2.8.5, PHP 7.4.
                        Сергей
                        28 сентября 2023, 13:11
                        0
                        Спасибо за доработку компонента, все заработало на modx 3, правда появился новый косяк, двойной // после доменного имени, при чем он редиректит, если в меню перейти на страницу site.ru/catalog/ то он перенесет на site.ru//catalog/
                          Сергей Фещуков
                          28 сентября 2023, 13:14
                          0
                          Добрый день. Действительно, такой косяк имелся. Но в версии 2.0.4 был исправлен. Попробуйте обновить компонент или переустановить его (удалив пакет со своего сайта полностью, чтобы пакет был заново скачан с репозитория), если после обновления ошибка не пропадает.
                            Сергей
                            28 сентября 2023, 13:19
                            0
                            Полное удаление и установка заново решило эту проблему! Спасибо!
                          Maksim
                          07 марта 2024, 13:19
                          0
                          По модулю cityFields
                          При вызове сниппета fenom — стили модалки не подгружаются.
                          сниппет так вызывается {$_modx->runSnippet('!cfCities')}

                          выглядит результат вот так
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                            28