[cityFields] Определение города по домену


Новая версия компонента cityFields приносит самый ожидаемый функционал — определение города по домену. И в данной статье я опишу процесс настройки этой возможности.

Начнём с того, что создадим свой список городов на странице компонента, если вы этого ещё не сделали. Ключ — это наш будущий поддомен для города.

Теперь создадим соответствующие поддомены на вашем хостинге и подключим их к сайту по тому же пути, что и основной сайт. Если вы пользуетесь SSL-сертификатом, необходимо будет перевыпустить его, добавив в него новые поддомены.

Включаем возможность определения города по домену в настройках компонента.

Если вы изменяли стандартный код чанка cfCities.row, JS-файла или обновлялись до новой версии, необходимо добавить ссылки для переключения города. Стандартный код чанка cfCities.row теперь выглядит так:
<option value="[[+id]]" id="[[+key]]"[[+link:notempty=` data-href="[[+link]]"`]][[+selected]]>[[+name]]</option>
[[+link]] содержит ссылку на текущую страницу с учётом города.

Теперь проверьте вашу работу. Если у вас возникли какие-либо вопросы или проблемы, пишите тикеты в поддержку на modstore.pro, а также можете оставлять комментарии к данной записи. Как работает переключение городов на деле можно увидеть на демо сайте.

И стоит отдельно отметить и другие изменения у компонента:
  • Сниппет cfField можно использовать как модицифатор
    {'key' | cffield} или {'key' | cffield : 'msk'}
  • В плейсхолдеры записывается информация о текущем городе и записывается независимо от того, включена ли опция записи плейсхолдеров или нет.
    [[+cf.current_city]] - наименование текущего города;
    [[+cf.current_city.id]] - ID текущего города;
    [[+cf.current_city.key]] - ключ текущего города;
    [[+cf.current_city.url]] - ссылка на сайт с учётом текущего города.
  • Добавлены фильтры для данных в админке
  • Добавлен combobox со списком плейсхолдеров при добавлении/редактировании данных;
  • Добавлена проверка на дубли данных (уникальная связка плейсхолдер-значение) и городов (уникальный ключ и уникальное наименование);
  • Поправлены стили на странице редактировании товара miniShop2 2.4;
  • Поправлена связь с компонентом msOptionsPrice2;
  • Обновлена база данных городов sxGeo.
Компонент, как всегда, можно купить и скачать в нашем любимом магазине компонентов modstore.pro.
06 march 2017, 08:53    Сергей Фещуков   
3    445 +5

Comments (18)

  1. Rus 06 march 2017, 10:21 # 0
    Очень волнуют эти вопросы:
    1. Возможна ли реализация городов в подкатегориях (site.ru/moskva/...)
    2. Нужно ли создавать контексты для каждого города (если да, то добавление нового ресурса создается автоматически)?
    1. Сергей Фещуков 06 march 2017, 10:27 # 0
      1. На текущий момент реализованы только города в поддоменах. В подкатегориях будет добавлено в ближайших версиях после того, как будут исправлены баги с реализацией городов в поддоменах, если они появятся. Так как города в подкатегориях будут основываться на этом же механизме.
      2. Прелесть этого компонента в том, что нет необходимости создавать под каждый город контексты. Если вам необходимо внутри содержимого ресурса использовать разные фрагменты текста для разных городов, необходимо использовать данные и выводить их с помощью сниппета/модификатора cfField или плейсхолдером (если опция включена).
      1. Rus 06 march 2017, 10:34 # 0
        1. Возможно ли за доплату в индивидуальном порядке реализовать этот функционал?

        2. Отлично, что не нужно создавать контексты. В этой связи возникают еще пару вопросов:
        а) подставляются ли переменные в метаданных (title, description);
        б) как создается карта сайта? Будут ли в сайтмапе ссылки на все страницы каждого города? Хотя, этот вопрос больше относится к городам в подкатегории.
        1. Сергей Фещуков 06 march 2017, 10:41 # 0
          1. Этот функционал всё равно будет добавляться в компонент, так что только для вас его не получится добавить. За плату можно только простимулировать меня быстрее заняться этим вопросом. :)

          2а. Автоматически не подставляется. Как у вас реализован вывод title и description?
          2б. Карта сайта будет создаваться со ссылками по умолчанию, без учёта городов. Стандартная настройка site_url не подменяется.
          1. Rus 06 march 2017, 11:05 # 0
            тайтлы пока еще никак не реализованы. Узнал о существовании MODX неделю назад. Но мне нужно, чтобы переменные подставлялись и в метаданные. Также важна карта сайта.

            Большое спасибо за быстрые ответы. К сожалению, с данным функционалом ваш компонент не смогу применить.
    2. Максим 17 march 2017, 15:08 # 0
      Добрый день у меня на сайте уже созданы контексты, данное дополнение с ними работать будет?
      2. Можно ли реализовать какой то сброс всех тв полей для каждого контекста?
      К примеру у каждого города есть метро и районы если у менеджера в ТВ Автодополении будет районы всех городов то это крайне не удобно.
      Так же на сайте реализованы теги, которые подобраны для определенного города и они высвечиваются во всех контекстах. Думаю суть проблемы понятна.
      1. Сергей Фещуков 18 march 2017, 10:35 # 0
        Добрый день.
        1. Компонент не работает с контекстами. Оно создано специально для того, чтобы не создавать контексты для разных городов. Дописать этот функционал возможно, в принципе, или переписать под ваши нужды его.
        2. Придётся переписать тип ТВ или создать новый, чтобы поддерживал компонент. В общем, без правки такой функции не будет, но вообще реализовать можно.
        3. Опять же вопрос к автодополнениям, поддержку городов придётся дописывать.
        1. АндрейЧ 18 march 2017, 14:41 # 0
          Сергей, пожалуйста когда-нибудь дайте возможность, в настройках города — отметить точку(и) на яндекс карте.
      2. АндрейЧ 18 march 2017, 14:54 # 0
        Сергей, я просто вывел ваш снипет, добавил пару городов в настройках, поддомены добавил.

        И все, — города переключаются, но почему URL не меняется.
        Всегда Site.ru а не msk.site.ru или spb.site.ru

        Что я забыл?
        1. Сергей Фещуков 18 march 2017, 16:14 # 0
          А в настройках компонента включили определение города по домену?
          1. АндрейЧ 20 march 2017, 18:59 # 0
            Зря не посмотрел системные настройки / CityFields… Спасибо., четкий компонент.
            1. АндрейЧ 20 march 2017, 21:59 # 0
              1. Проблема. У меня url генерируется без точки, т.е. Gorodsite.ru вместо Gorod.site.ru
              Так происходит только с одним городом, поддомен которого был выключен и CityFields эту ссылку как то запомнил хитро. Никак не могу избавиться.

              Пробывал удалять и ставить заново, но ссылка генерируется все равно — «Gorodsite.ru»
              А нормальные, включенный с самого начала поддомен, открывается как положено, с точкой.

              2. Просьба расширить функционал в новой версии CityFields

              Опцией в настройках при выборе которой, если город не определился — то открываеся site.ru
              а жители городов например Москва, попадали в соотв. поддомены типа moskva.site.ru

              И еще хочется опцию в настройках, с которой при заходе на site.ru, сайт спрашивает:
              Ваш город: Пермь? Далее посетитель нажимает «Пермь» — и срабатывает редирект perm.site.ru
              1. Сергей Фещуков 21 march 2017, 13:04 # 0
                1. Попробуйте заново скачать компонент из магазина и переустановить его. Такой косяк был, но я его поправил.
                2. Хорошо, я реализую такой функционал в ближайшем обновлении.
                1. АндрейЧ 21 march 2017, 20:56 # 0
                  Спасибо, помогло. Это хостинг у меня какие-то папки создал…

                  Благодарю, буду очень ждать обновление.

                  Вопрос. CityFields сам географию по айпишнику определяет, и редиректит с site.ru на gorod.site.ru Верно?

                  Просто авто-редирект перестал работать после того как я решал прошлую проблему…
                  «Город в домене» в системных настройках включено.
                  Деинсталировать, Удалять, заново ставить попробывал.
                  С хостинга может быть удалить какую-нить папку?

                  ps После полного удаления в настройках «Управление городами и данными» поля заполнять не требуется, т.е. заполненные города остаются.
          2. Николай 22 march 2017, 23:10 # +1
            здравствуйте, а можно ли использовать компонент в системных настройках minishop2 для указания email менеджеров, что при отправки с разных городов письма отправлялись на разные ящики?
            1. Сергей Фещуков 23 march 2017, 13:51 # 0
              Добрый день. К сожалению, такого не реализовано. Первый раз сталкиваюсь с такой необходимостью. Надо будет подумать как это грамотно реализовать.
              1. Николай 24 march 2017, 08:09 # 0
                может можно в системную переменную как то передать значение?
                1. Николай 27 march 2017, 21:25 # 0
                  проблема остается актуальной… может появились идеи реализации?
              You need to login to create comments.