[citySelect] - выбор города

Обновление компонента по выбору города.
Геолокация пользователя с помощью DaData
Подсказки города во время набора организованны с помощью kladr-api.



Настройки пакета
После установки пакета необходимо прописать токены для DaData и kladr-api.


default_settlement — Местоположение по умолчанию, применимо когда положение не определилось по ip

Для совместимости с другими пакетами где используется пакет GeoLocation добавлена настройка
cityselect_emulation_geolocation, при активной настройке пакет будет выставлять в сессии данные за
GeoLocation

Сниппет citySelect.Settlement
Служит для вывода текущей локации пользователя.
[[!citySelect.Settlement]]
параметры:
tpl — Чанк оформления
frontCss — Файл с css стилями для подключения на фронтенд.
frontJs — Файл с javascript для подключения на фронтенде.
bootstrapModalJsCss — Подключить файлы bootstrap-modal.
bootstrapPopoverJsCss — Подключить файлы bootstrap-popover.
selectizeJsCss — Подключить файлы selectize.
bootstrapModalJs — Файл с bootstrap-modal.js для подключения на фронтенде.
bootstrapModalCss — Файл с bootstrap-modal.css для подключения на фронтенде.
bootstrapPopoverJs — Файл с bootstrap-popover.js для подключения на фронтенде.
bootstrapPopoverCss — Файл с bootstrap-popover.css для подключения на фронтенде.
selectizeJs — Файл с selectize.js для подключения на фронтенде.
selectizeCss — Файл с selectize.css для подключения на фронтенде.

Данные локации
Данные локации доступны в переменной $.settlement, посмотреть доступные переменные можно как
{$.settlement|print}
Array
(
    [id] => 3300000400000
    [name] => Ковров
    [zip] => 
    [type] => город
    [typeShort] => г
    [okato] => 17425000000
    [contentType] => city
    [fullName] => Владимирская Область, Город Ковров
    [country] => Россия
    [city] => Ковров
    [kladr_id] => 3300000400000
    [city_kladr_id] => 3300000400000
    [city_with_type] => г Ковров
    [city_type] => г
    [city_type_full] => город
    [region_with_type] => Владимирская Область
    [$order] => 2
)

ps. Всем спасибо за внимание.
Компонент будет доступен как и прежде на бесплатной основе.

Работает только с городами России.

Демка тут s6200.h3.modhost.pro/cityselect.html
Володя
Володя
21 июня 2017, 08:58
modx.pro
12 141
Поблагодарить автора Отправить деньги

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

Василий Столейков
22 июня 2017, 05:23
Демка нерабочая?
    Володя
    22 июня 2017, 07:16
    Рабочая
      Василий Столейков
      22 июня 2017, 10:16
      joxi.ru/YmEkxPbh0zj1GA — может я не туда смотрю?
      За обновление спасибо!
        Володя
        22 июня 2017, 10:20
        напиши в личку или скайп, подебажу тебя.
        Скорее всего ситуация что твой ip никак не определился, либо там еще отбрасываются боты чтобы не создавали лишней нагрузки и ты каким то образом попал в их число.
          Василий Столейков
          22 июня 2017, 10:22
          Да, Я — БОТ!!! Умный бот. )))))))
          Напишу в скайп.
            Володя
            22 июня 2017, 11:05
            добавил настройку default_settlement в ней можно задать местоположение по умолчанию.
            Например если оно не определилось по ip как в твоем случае.
Николай Каленников
05 июля 2017, 14:13
Баг небольшой обнаружился — плагин citySelect, 24 строка для PHP до версии 5.5 не разрешает присвоение значения внутри empty ()
if (empty($citySelect->getSettlement()) AND $data = $citySelect->getUserAddressByIp()) {
            $citySelect->setSettlement($data);
        }
        break;
выдает ошибку Can't use method return value in write context
Pavel
13 июля 2017, 16:17
я не совсем понял, в чем отличие от GeoLocation? тоже вроде ваш сниппет был..?
    Володя
    13 июля 2017, 19:30
    да полно отличий…
      Павел Степанов
      07 сентября 2017, 21:01
      Честно говоря совершенно непонятно как пользоваться, и какие принципиальные отличия от GeoLocation выводит он город, ок, а что дальше?
      Пока я понял что этот плагин просто выводит локацию и подсказывает название города через saas api, что потом с этим можно делать? Он комбинируется с GeoLocation? Есть ли плейсхолдеры? Можно ли задать список возможных городов?
      Хорошо было бы добавить пример использования.
        Володя
        08 сентября 2017, 09:01
        Пока я понял что этот плагин просто выводит локацию и подсказывает название города через saas api, что потом с этим можно делать? Он комбинируется с GeoLocation? Есть ли плейсхолдеры? Можно ли задать список возможных городов?

        Павел по моему мнению все необходимую информацию я дал в описании.
        какие принципиальные отличия от GeoLocation выводит он город, ок, а что дальше?
        вы можете попробовать и то и другое и сделать свои выводы.
        Хорошо было бы добавить пример использования
        Применяйте где угодно… Добавляйте примеры и тд и тп…
        Почему вы считаете что я должен тратить на это свое время? Я лучше проведу его с семьей…
    Андрей
    20 сентября 2017, 14:37
    А как сделать выбор города без перезагрузки страницы?
      Володя
      20 сентября 2017, 14:48
      Изменить дефолтный скрипт и убрать перезагрузку страница при выборе локации.
      location.reload();
        Андрей
        20 сентября 2017, 15:31
        Ага, спасибо! Буду пробовать, пока получилось, что страница не перезагружается (что и требовалось), но и город не меняется… И мой плейсхолдер
        $modx->setPlaceholder('mycity',$settlement['name']);
        из сниппета citySelect.Settlement также не отрабатывает. Ответ приходит на POST, все хорошо, просто на странице не обновляется… будем разбираться. Спасибо за наводку!
          Володя
          20 сентября 2017, 15:42
          Буду пробовать, пока получилось, что страница не перезагружается (что и требовалось), но и город не меняется…
          данные есть в ответе процессора на смену локации. Пишите обработчик и меняйте данные как вам удобно.
            Андрей
            20 сентября 2017, 16:00
            Еще маленький вопросик: я на верном пути?
            // location.reload()
               var city_data = this.data;
               jQuery.ajax({
               type: 'post',
               url: "obr.php",
               data: city_data,
              success: function (data) {
                }
                                    });
            Или я не правильно делаю? Я планирую в obr.php поймать Json (уже проверил туда все уходит нормально) и выбрать нужную мне инфу. Затем уже в succes расставить все по странице ну и т.д.
            Просто сам ход мыслей, или я велосипед изобретаю и все это «правильно» выглядит иначе?
              Володя
              20 сентября 2017, 16:03
              там где убрали location.reload(); уже есть данные, в них локация. Если вам нужно эти данные как то обработать и потом еще куда то подставить то да наверно такой вариант пойдет.
                Андрей
                20 сентября 2017, 17:49
                Спасибо! Все сделал без перезагрузки, но появилась другая проблема. Если я повторно пытаюсь выбрать город, то окошко выбора не правильно отображается, отсутствуют:
                <div class="arrow"></div>
                <div class="popover-title">
                <div class="popover-content">
                <div class="popover-footer">
                В консоле ошибку выдает
                ReferenceError: event is not defined
      Кирилл Киселев
      21 октября 2017, 18:49
      Не получается выбрать город, ошибки валит. В чём проблема?
        Володя
        21 октября 2017, 19:04
        отсутствуют скрипты bootstrap-modal
        в вызове сниппета укажите
        &bootstrapModalJsCss=`1`
          Кирилл Киселев
          21 октября 2017, 21:14
          Спасибо, работает. А стили в демо-версии Вы свои прописали? Или по-умолчанию он такой есть? Пытался через настройки сниппета, но так же не выглядит как в демо.
        Кирилл Киселев
        09 ноября 2017, 18:34
        Написано, что работает только с городами России, а в итоге ещё и другие страны подтягивает.
        Виталий
        22 декабря 2017, 11:38
        Вопрос про работу с Кладр-апи, токен дается только для платных функций, будут ли работать подсказки в CitySelect если не вводить токен кладр-апи?
          Володя
          25 декабря 2017, 11:54
          токен дается только для платных функций
          ранее токен выдавался и на бесплатной версии. Обновите пакет. Можно использовать без указания токена.
          Заметно увеличилась задержка при подсказке города на бесплатной версии, если не жалко 2 тр/год попробуйте перейти на платную версию kladr-api.ru/business
            Виталий
            26 декабря 2017, 08:51
            Спасибо, уже понял что жуткие тормоза из-за серверов кладра
          maralavrenteva
          20 января 2018, 13:05
          Подскажите, пожалуйста, как настроить, чтоб только города были? typeCode и type куда только не вставляла… не получилось
            Володя
            20 января 2018, 13:16
            Добрый день.
            Попробуйте задать oneString в ноль, для этого укажите в чанке Settlement
            data-cityselect-params='{ "limit":50,"oneString":0 }'
              maralavrenteva
              20 января 2018, 13:30
              спасибо Вас огромное! получилось )
            MODXyou
            18 марта 2019, 14:10
            Добрый день!

            У меня почему-то также не работает выбор города.
            Нажимаю на город, и ни чего не происходит :(
            В прикреплении ошибка в консоли браузера,
            Подскажите как это исправить?

            Спасибо
              Володя
              18 марта 2019, 18:39
              подключить скрипт модалок
              &bootstrapModalJsCss=`1`
                MODXyou
                19 марта 2019, 15:28
                Спасибо. Все работает.
                Подскажите еще пожалуйста, на сколько сильно данное дополнение нагружает сайт во вротенде?
              MODXyou
              25 марта 2019, 18:19
              Добрый день!

              Подскажите пожалуйста, как полностью отключить подгрузку стилей и JS в вашем дополнении?
              Необходимо чтобы выводилось на сайте только название города

              Спасибо
                Евгений
                19 апреля 2019, 12:59
                Спасибо! Отличный плагин. Очень помог для сощдания поддоменов.
                Но… есть проблема (у меня) с выбором города в консоли вываливается ошибка:
                cityselect.js:32 Uncaught TypeError: $(...).modal is not a function
                at HTMLAnchorElement.(cityselect.js:32)
                at HTMLAnchorElement.dispatch (jquery-3.3.1.min.js:2)
                at HTMLAnchorElement.y.handle (jquery-3.3.1.min.js:2)
                (anonymous) @ cityselect.js:32
                dispatch @ jquery-3.3.1.min.js:2
                y.handle @ jquery-3.3.1.min.js:2

                Подскажите как исправить!
                Заранее благодарен!
                m1cr1te
                01 мая 2019, 20:36
                Подскажите пожалуйста нубу.
                  Вячеслав
                  20 февраля 2020, 16:38
                  Доброго времени суток.
                  Приобрел Тариф «Старт» на kladr-api, но подсказки на сайте все так же оставляют желать лучшего, вопрос к плагину? (в настройках плагина соответственно поменял url и token
                    Володя
                    21 февраля 2020, 12:11
                    Добрый день.
                    Приобрел Тариф «Старт» на kladr-api, но подсказки на сайте все так же оставляют желать лучшего
                    Думаю тогда стоит задать вопрос к kladr-api.
                      Вячеслав
                      21 февраля 2020, 20:42
                      Так 2 письма ушло и в ответ тишина, думал может кто опытом поделится, вдруг уже были подобные ситуации.
                      Dmitry St.
                      29 мая 2020, 09:26
                      Получилось ли решить проблему с подсказками Kladr-api?
                      Планирую также покупать тариф Старт, поскольку подсказки толком не работают даже близко как в примере на kladr.
                      Можете скинуть ссылку на сайт, где работают подсказки в данном модуле?
                        Dmitry St.
                        29 мая 2020, 12:07
                        Пришёл ответ от Kladr-api — пишут что на бесплатной версии всё должно работать, но не работает, если я правильно понял…

                        Здравствуйте,
                        
                        к сожалению мы не можем проконсультировать по работе модулей разработанных другими компаниями.
                        Свяжитесь с разработчиком модуля.
                        
                        Подсказки работают в бесплатной версии (при этом выводится строка с копирайтом, а также мы не гарантируем быструю и стабильную работу бесплатных серверов)
                        
                        --
                        Техническая поддержка
                        ФИАС в облаке
                      Анатолий
                      18 мая 2020, 17:46
                      Сломал голову уже)
                      При клике по городу селектор выбора выпадает в самом низу сайта.
                      Никак не пойму куда копать и что происходит, буду благодарен за наводку)
                      opt.blok-post.ru
                        Dmitry St.
                        19 июня 2020, 10:01
                        Добрый день, перестал работать модуль — не находит города от слова «совсем».
                        находит только Москву))

                        пишу Тюмень, или Сургут — не находит даже на вашем сайте-примере
                        s6200.h3.modhost.pro/cityselect.html

                        Kladr-api запросы корректно обрабатывает даже без токена — похоже ошибка на стороне модуля.
                        kladr-api.ru/api.php?query=алап&contentType=city

                        подскажите куда копать? очень нужен ваш модуль, но необходимо допилить подсказки, — готов оплатить вашу работу по этому вопросу (за разумный ценик).
                          maralavrenteva
                          07 июля 2020, 13:56
                          у меня то же самое, раньше работал, теперь перестал… и обновить его не получается, его вообще нету в репозиории, не находится через уставнощик админки… Вы смогли решить проблему?
                            Андрей
                            07 июля 2020, 19:58
                            Вот он в репозитории — CitySelect. На демо сайте тоже города нормально ищет, правда с небольшой задержкой.
                              maralavrenteva
                              07 июля 2020, 21:32
                              я имела в виду, что через админку он не находится prnt.sc/tdlaoz
                                Андрей
                                07 июля 2020, 21:51
                                Так нужно репозиторий поменять, вы смотрите в официальном, а надо в modstore.

                                В пакетах на кнопке Загрузить пакеты — Выберите поставщика — Modstore. Если он не установлен, то можно из официального взять пакет sdStore, он автоматически установит нового поставщика.
                                  maralavrenteva
                                  07 июля 2020, 22:05
                                  так Modstore есть у меня prnt.sc/tdlw2h
                                    Андрей
                                    07 июля 2020, 22:10
                                    Тогда его просто нужно выбрать — prnt.sc/tdlzuu и будет так — prnt.sc/tdlz20
                                      maralavrenteva
                                      08 июля 2020, 13:23
                                      Спасибо за поддержку, у меня там, оказывается, старый домен был привязан к репозиторию, поэтому и не обновлялось ) обновление, правда не помогло. Но я нашла, почему перестал работать модуль — у меня сервер kladr-api был через http привязан, поменяла на https — заработало
                          Ivan
                          27 октября 2020, 11:38
                          Чем подсказки dadata Вам не угодили…
                          Этот kladr-api не работает нифига…
                          Сергій
                          25 декабря 2020, 16:56
                          @Володя доброго дня. Не подскажите как можно указать города Украины?
                          Можно как то через json указать определенный список городов.
                          Спасибо за помощь.
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                            58