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

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

Василий Столейков
22 июня 2017, 05:23
0
Демка нерабочая?
    Володя
    22 июня 2017, 07:16
    0
    Рабочая
      Василий Столейков
      22 июня 2017, 10:16
      0
      joxi.ru/YmEkxPbh0zj1GA — может я не туда смотрю?
      За обновление спасибо!
        Володя
        22 июня 2017, 10:20
        0
        напиши в личку или скайп, подебажу тебя.
        Скорее всего ситуация что твой ip никак не определился, либо там еще отбрасываются боты чтобы не создавали лишней нагрузки и ты каким то образом попал в их число.
          Василий Столейков
          22 июня 2017, 10:22
          0
          Да, Я — БОТ!!! Умный бот. )))))))
          Напишу в скайп.
            Володя
            22 июня 2017, 11:05
            +1
            добавил настройку default_settlement в ней можно задать местоположение по умолчанию.
            Например если оно не определилось по ip как в твоем случае.
Николай Каленников
05 июля 2017, 14:13
0
Баг небольшой обнаружился — плагин 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
    0
    спасибо, поправил.
    Pavel
    13 июля 2017, 16:17
    0
    я не совсем понял, в чем отличие от GeoLocation? тоже вроде ваш сниппет был..?
      Володя
      13 июля 2017, 19:30
      0
      да полно отличий…
        Павел Степанов
        07 сентября 2017, 21:01
        0
        Честно говоря совершенно непонятно как пользоваться, и какие принципиальные отличия от GeoLocation выводит он город, ок, а что дальше?
        Пока я понял что этот плагин просто выводит локацию и подсказывает название города через saas api, что потом с этим можно делать? Он комбинируется с GeoLocation? Есть ли плейсхолдеры? Можно ли задать список возможных городов?
        Хорошо было бы добавить пример использования.
          Володя
          08 сентября 2017, 09:01
          0
          Пока я понял что этот плагин просто выводит локацию и подсказывает название города через saas api, что потом с этим можно делать? Он комбинируется с GeoLocation? Есть ли плейсхолдеры? Можно ли задать список возможных городов?

          Павел по моему мнению все необходимую информацию я дал в описании.
          какие принципиальные отличия от GeoLocation выводит он город, ок, а что дальше?
          вы можете попробовать и то и другое и сделать свои выводы.
          Хорошо было бы добавить пример использования
          Применяйте где угодно… Добавляйте примеры и тд и тп…
          Почему вы считаете что я должен тратить на это свое время? Я лучше проведу его с семьей…
      Андрей
      20 сентября 2017, 14:37
      0
      А как сделать выбор города без перезагрузки страницы?
        Володя
        20 сентября 2017, 14:48
        +1
        Изменить дефолтный скрипт и убрать перезагрузку страница при выборе локации.
        location.reload();
          Андрей
          20 сентября 2017, 15:31
          0
          Ага, спасибо! Буду пробовать, пока получилось, что страница не перезагружается (что и требовалось), но и город не меняется… И мой плейсхолдер
          $modx->setPlaceholder('mycity',$settlement['name']);
          из сниппета citySelect.Settlement также не отрабатывает. Ответ приходит на POST, все хорошо, просто на странице не обновляется… будем разбираться. Спасибо за наводку!
            Володя
            20 сентября 2017, 15:42
            +1
            Буду пробовать, пока получилось, что страница не перезагружается (что и требовалось), но и город не меняется…
            данные есть в ответе процессора на смену локации. Пишите обработчик и меняйте данные как вам удобно.
              Андрей
              20 сентября 2017, 16:00
              0
              Еще маленький вопросик: я на верном пути?
              // 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
                +1
                там где убрали location.reload(); уже есть данные, в них локация. Если вам нужно эти данные как то обработать и потом еще куда то подставить то да наверно такой вариант пойдет.
                  Андрей
                  20 сентября 2017, 17:49
                  0
                  Спасибо! Все сделал без перезагрузки, но появилась другая проблема. Если я повторно пытаюсь выбрать город, то окошко выбора не правильно отображается, отсутствуют:
                  <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
        0
        Не получается выбрать город, ошибки валит. В чём проблема?
          Володя
          21 октября 2017, 19:04
          +1
          отсутствуют скрипты bootstrap-modal
          в вызове сниппета укажите
          &bootstrapModalJsCss=`1`
            Кирилл Киселев
            21 октября 2017, 21:14
            0
            Спасибо, работает. А стили в демо-версии Вы свои прописали? Или по-умолчанию он такой есть? Пытался через настройки сниппета, но так же не выглядит как в демо.
          Кирилл Киселев
          09 ноября 2017, 18:34
          0
          Написано, что работает только с городами России, а в итоге ещё и другие страны подтягивает.
          Виталий
          22 декабря 2017, 11:38
          0
          Вопрос про работу с Кладр-апи, токен дается только для платных функций, будут ли работать подсказки в CitySelect если не вводить токен кладр-апи?
            Володя
            25 декабря 2017, 11:54
            +1
            токен дается только для платных функций
            ранее токен выдавался и на бесплатной версии. Обновите пакет. Можно использовать без указания токена.
            Заметно увеличилась задержка при подсказке города на бесплатной версии, если не жалко 2 тр/год попробуйте перейти на платную версию kladr-api.ru/business
              Виталий
              26 декабря 2017, 08:51
              0
              Спасибо, уже понял что жуткие тормоза из-за серверов кладра
            maralavrenteva
            20 января 2018, 13:05
            0
            Подскажите, пожалуйста, как настроить, чтоб только города были? typeCode и type куда только не вставляла… не получилось
              Володя
              20 января 2018, 13:16
              +1
              Добрый день.
              Попробуйте задать oneString в ноль, для этого укажите в чанке Settlement
              data-cityselect-params='{ "limit":50,"oneString":0 }'
                maralavrenteva
                20 января 2018, 13:30
                0
                спасибо Вас огромное! получилось )
              MODXyou
              18 марта 2019, 14:10
              0
              Добрый день!

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

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

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

                Спасибо
                  Евгений
                  19 апреля 2019, 12:59
                  0
                  Спасибо! Отличный плагин. Очень помог для сощдания поддоменов.
                  Но… есть проблема (у меня) с выбором города в консоли вываливается ошибка:
                  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
                  0
                  Подскажите пожалуйста нубу.
                    Вячеслав
                    20 февраля 2020, 16:38
                    0
                    Доброго времени суток.
                    Приобрел Тариф «Старт» на kladr-api, но подсказки на сайте все так же оставляют желать лучшего, вопрос к плагину? (в настройках плагина соответственно поменял url и token
                      Володя
                      21 февраля 2020, 12:11
                      0
                      Добрый день.
                      Приобрел Тариф «Старт» на kladr-api, но подсказки на сайте все так же оставляют желать лучшего
                      Думаю тогда стоит задать вопрос к kladr-api.
                        Вячеслав
                        21 февраля 2020, 20:42
                        0
                        Так 2 письма ушло и в ответ тишина, думал может кто опытом поделится, вдруг уже были подобные ситуации.
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      44