[cityFields] Поддержка полных доменов, подкаталогов и MODX 3
Всем привет. Наконец-то проделана значимая работа над компонентом cityFields и добавлен функционал, о котором мне бы хотелось сегодня вам рассказать.
![](https://file.modx.pro/files/a/3/f/a3f58aecef516b7c1e3a87949c837d0d.png)
Добавлена поддержка использования полных доменов и подкаталогов в качестве ключей городов. То есть сайт может работать с несколькими доменами и каждый домен будет переключать на свой город. А также города могут быть доступны по ссылкам вида
Как это работает можно посмотреть на демо-сайте, а ниже скриншот как это должно быть настроено в админке.
![](https://file.modx.pro/files/d/d/1/dd126fc279f9ae9885bcc41f68b4fff7.png)
Разработана версия компонента под MODX 3. Но так как поддержка MODX 2 закончится не скоро, то теперь в магазине компонентов modstore.pro доступны две версии компонента: версии 1.х.х для MODX 2 и версии 2.х.х для MODX 3. Покупать компонент отдельно для каждой версии не нужно, в зависимости от вашей версии MODX установится нужная версия компонента.
Также переписаны чанки, стили CSS и скрипты JavaScript для того, чтобы избавиться от привязки к Bootstrap и jQuery. В версии 1.3.x компонента ещё остаются старые файлы стилей и JS-код для поддержки старых чанков и логики, но начиная с версии 2.х.х эти файлы уже удалены из компонента.
Ну и последнее — наконец-то написал документацию по использованию компонента, которую буду дополнять с появлением нового функционала или новых кейсов использования компонента.
![](https://file.modx.pro/files/a/3/f/a3f58aecef516b7c1e3a87949c837d0d.png)
Добавлена поддержка использования полных доменов и подкаталогов в качестве ключей городов. То есть сайт может работать с несколькими доменами и каждый домен будет переключать на свой город. А также города могут быть доступны по ссылкам вида
site.ru/city
При этом можно использовать два режима одновременно. Вы можете выделить домен под отдельный регион и внутри него организовать разделение городов региона по подкаталогам.Как это работает можно посмотреть на демо-сайте, а ниже скриншот как это должно быть настроено в админке.
![](https://file.modx.pro/files/d/d/1/dd126fc279f9ae9885bcc41f68b4fff7.png)
Разработана версия компонента под MODX 3. Но так как поддержка MODX 2 закончится не скоро, то теперь в магазине компонентов modstore.pro доступны две версии компонента: версии 1.х.х для MODX 2 и версии 2.х.х для MODX 3. Покупать компонент отдельно для каждой версии не нужно, в зависимости от вашей версии MODX установится нужная версия компонента.
Также переписаны чанки, стили CSS и скрипты JavaScript для того, чтобы избавиться от привязки к Bootstrap и jQuery. В версии 1.3.x компонента ещё остаются старые файлы стилей и JS-код для поддержки старых чанков и логики, но начиная с версии 2.х.х эти файлы уже удалены из компонента.
Ну и последнее — наконец-то написал документацию по использованию компонента, которую буду дополнять с появлением нового функционала или новых кейсов использования компонента.
Поблагодарить автора
Отправить деньги
Комментарии: 29
Спасибо! Ждал!
Не ждал, но всё равно спасибо!)))
Классные обновления! Просто УРА! Спасибо!
Раз в релизе упомянут будущий новый функционал, очень хотелось бы в план развития подсказать следующие моменты (и сразу подсказать возможности реализации):
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-чатике), рекомендую его всем! Сорри что коммент выглядит как какое-то ТЗ, но я по-другому не смог сформулировать ¯\_(ツ)_/¯
Раз в релизе упомянут будущий новый функционал, очень хотелось бы в план развития подсказать следующие моменты (и сразу подсказать возможности реализации):
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-чатике), рекомендую его всем! Сорри что коммент выглядит как какое-то ТЗ, но я по-другому не смог сформулировать ¯\_(ツ)_/¯
Спасибо за обновление, оно действительно очень полезное, но есть одно но, документация совершенно не дает ни какого представления о контекстах. Надо ли создавать контексты для каждого города, если это вложенный город (или надо создать папку в основном контексте с нужным url как у города). У меня проблема следующего характера. Я создал папку в основном контексте с двумя городами arkhangelsk и ekaterinburg. Если захожу в раздел и меняю город то путь становиться site.ru/ekaterinburg/arkhangelsk/123.html Или не надо создавать физический раздел и добавлять все изменения на странице через данные?
Проблема в том что или я не верно использую компонент или я не верно его настраиваю.
Проблема в том что или я не верно использую компонент или я не верно его настраиваю.
В документации как раз описано как настраивать компонент, в том числе при использовании подпапок. И в ней нет ни слова о контекстах, потому что компонент с ними вообще не работает. Так же не говорится о том, что необходимо физически создавать папки/ разделы, потому что этого делать не надо.
Спасибо за ответ. Тогда я не совсем понимаю в чем тогда смысл? Фактически мы плодим не существующие 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 главной страницы для города и он берет всю информацию от туда. Если раздела нет в городе, например блога или кейсов или контактов, то она остается в адресом по умолчанию и берется из основного раздела.
Например, у нас есть несколько городов:
Екатеринбург
Москва
Архангельск
У сайта есть структура:
Главная
Каталог услуг
Услуга
Блог
Статья
Для каждого города создается куча 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 главной страницы для города и он берет всю информацию от туда. Если раздела нет в городе, например блога или кейсов или контактов, то она остается в адресом по умолчанию и берется из основного раздела.
У вас кстати работает, если я выбираю Екатеринбург, то адреса все становятся с ekb, у меня не меняется.
И еще дополню, если есть личный кабинет, он же не будет для каждого города свой.
И еще дополню, если есть личный кабинет, он же не будет для каждого города свой.
Извиняюсь, забыл про <base href="[[!+cf.current_city.url]]" />
Извиняюсь за кучу вопросов.
Как идея можно подгружать разделы типа блог, кейсы из другого контекста. В таком случае к ним же не будет добавлен город в url?
И второй вопрос, не знаю почему, но цена для других городов не работает. Не на странице товара, не в каталоге.
Как идея можно подгружать разделы типа блог, кейсы из другого контекста. В таком случае к ним же не будет добавлен город в url?
И второй вопрос, не знаю почему, но цена для других городов не работает. Не на странице товара, не в каталоге.
каким образом решили чтобы url к примеру блога, кейса остаётся статичным?
Как видите, автор на этот вопрос не ответил, я к сожалению решения не искал.
Добрый день!
У меня вопрос такого плана. Мне надо сделать определение не для города, а для области (не Санкт-Петербург, а Ленинградская область). То есть в Ленинградской области одна информация, а в остальной России другая. Я смогу это реализовать с помощью компонента? Спасибо!
У меня вопрос такого плана. Мне надо сделать определение не для города, а для области (не Санкт-Петербург, а Ленинградская область). То есть в Ленинградской области одна информация, а в остальной России другая. Я смогу это реализовать с помощью компонента? Спасибо!
Приветствую! Компонент основан на sxGeo, там определение области есть → смотри демо на оф. сайте: sypexgeo.net (подписана как Регион прямо поверх карты). Возможно придётся после установки компонента подправить настройки точности, из коробки там Город, и настройками в админке на Область переключить нельзя.
Спасибо!
Добрый день. В целом, можно вместо города написать область и всё будет работать, кроме определения города (в вашем случае области) по IP-адресу. Добавление регионов планируется в ближайшем мажорном обновлении.
Спасибо! Буду ждать обновление.
Сергей, добрый день. Подскажите, регионы в компонент еще не добавили?
Ещё нет. Планируется в версиях 1.4.x-pl и 2.1.x-pl для MODX2 и MODX3 соответственно
Спасибо! Очень жду!!! :)
все работает, только вопрос как изменить ссылку на главную (идет на страницу по умолчанию) если использован pdomenu? а ссылку на контакты наоборот сделать неизменной как сейчас главная?
Добрый день.
Если вы используете подпапки, то тут сложнее. А главная у вас как выводится? Через &displayStart параметр и &tplStart шаблон?
как изменить ссылку на главную (идет на страницу по умолчанию) если использован pdomenu?Если используются домены, то просто в теге base вывести [[!+cf.current_city.url]].
Если вы используете подпапки, то тут сложнее. А главная у вас как выводится? Через &displayStart параметр и &tplStart шаблон?
а ссылку на контакты наоборот сделать неизменной как сейчас главная?К сожалению, такого функционала в компоненте нет. Страница всё-равно будет доступна в любом городе, даже если в меню вывести только ссылку на главную.
Приветствую! Подскажите, пожалуйста, возможно ли подружить CityFields с msOptionPrice2.
У меня в каталоге матрасы различных размеров — модификации.
Пример:
Размер 80х190 см… 4500 руб
Размер 80х200 см… 4700 руб
Размер 90х190 см… 5900 руб
Размер 90х200 см… 6200 руб
и тд.
Есть два города. Возможно ли сделать так, чтобы при выборе города №2 ко всем ценам в модификациях добавлялась сумма, к примеру, +700 руб.?
У меня в каталоге матрасы различных размеров — модификации.
Пример:
Размер 80х190 см… 4500 руб
Размер 80х200 см… 4700 руб
Размер 90х190 см… 5900 руб
Размер 90х200 см… 6200 руб
и тд.
Есть два города. Возможно ли сделать так, чтобы при выборе города №2 ко всем ценам в модификациях добавлялась сумма, к примеру, +700 руб.?
Добрый день!
При включении компонента на modx 3. Перестает работать ошибка 404 на страницах. Отдает 500 при отсутствие страницы. php 8.1.x
При включении компонента на modx 3. Перестает работать ошибка 404 на страницах. Отдает 500 при отсутствие страницы. php 8.1.x
Та же проблема на modx 2.8.5, PHP 7.4.
Спасибо за доработку компонента, все заработало на modx 3, правда появился новый косяк, двойной // после доменного имени, при чем он редиректит, если в меню перейти на страницу site.ru/catalog/ то он перенесет на site.ru//catalog/
Добрый день. Действительно, такой косяк имелся. Но в версии 2.0.4 был исправлен. Попробуйте обновить компонент или переустановить его (удалив пакет со своего сайта полностью, чтобы пакет был заново скачан с репозитория), если после обновления ошибка не пропадает.
Полное удаление и установка заново решило эту проблему! Спасибо!
По модулю cityFields
При вызове сниппета fenom — стили модалки не подгружаются.
сниппет так вызывается {$_modx->runSnippet('!cfCities')}
выглядит результат вот так
При вызове сниппета fenom — стили модалки не подгружаются.
сниппет так вызывается {$_modx->runSnippet('!cfCities')}
выглядит результат вот так
![](https://supersvar.ru/shot1.png)
Всем привет. В документации сказано что меняются только цены в зависимости от города, но только в товарах минишопа если я верно понял. У меня возникла задача:
1. Только у определенных страниц подставлять город, то есть страницы: Главная/Контакты/Блог и тд. не зависимо от города должны будут открываться по своим адресам, а вот раздел Вакансии и вложенные в него страницы с подстановкой города, возможно ли такое?
2. Возможно ли у обычных страниц (не товары минишопа) менять информацию в зависимости от города?
1. Только у определенных страниц подставлять город, то есть страницы: Главная/Контакты/Блог и тд. не зависимо от города должны будут открываться по своим адресам, а вот раздел Вакансии и вложенные в него страницы с подстановкой города, возможно ли такое?
2. Возможно ли у обычных страниц (не товары минишопа) менять информацию в зависимости от города?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.