К содержанию

[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 504
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 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 как в твоем случае.
              Василий Столейков
              Василий Столейков Проверенный
              22 июня 2017, 11:06
              Ок, спасибо!
                Володя
                Володя Эксперт
                22 июня 2017, 11:07
                пожалуйста, и тебе спасибо!
    Николай Каленников
    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
      Володя
      Володя Эксперт
      05 июля 2017, 14:34
      спасибо, поправил.
      Pavel
      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
              maralavrenteva Старожил
              20 января 2018, 13:05
              Подскажите, пожалуйста, как настроить, чтоб только города были? typeCode и type куда только не вставляла… не получилось
                Володя
                Володя Эксперт
                20 января 2018, 13:16
                Добрый день.
                Попробуйте задать oneString в ноль, для этого укажите в чанке Settlement
                data-cityselect-params='{ "limit":50,"oneString":0 }'
                  maralavrenteva
                  maralavrenteva Старожил
                  20 января 2018, 13:30
                  спасибо Вас огромное! получилось )
                MODXyou
                MODXyou Старожил
                18 марта 2019, 14:10
                Добрый день!

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

                Спасибо
                  Володя
                  Володя Эксперт
                  18 марта 2019, 18:39
                  подключить скрипт модалок
                  &bootstrapModalJsCss=`1`
                    MODXyou
                    MODXyou Старожил
                    19 марта 2019, 15:28
                    Спасибо. Все работает.
                    Подскажите еще пожалуйста, на сколько сильно данное дополнение нагружает сайт во вротенде?
                  MODXyou
                  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
                    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.
                          Dmitry St. Старожил
                          29 мая 2020, 09:26
                          Получилось ли решить проблему с подсказками Kladr-api?
                          Планирую также покупать тариф Старт, поскольку подсказки толком не работают даже близко как в примере на kladr.
                          Можете скинуть ссылку на сайт, где работают подсказки в данном модуле?
                            Dmitry St.
                            Dmitry St. Старожил
                            29 мая 2020, 12:07
                            Пришёл ответ от Kladr-api — пишут что на бесплатной версии всё должно работать, но не работает, если я правильно понял…

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

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

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

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

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