[GeoLocation] - геолокации пользователя

[GeoLocation] — компонент реализует функционал геолокации. Используется библиотека SxGeo.

Определение страны, региона, города.
пример можно посмотреть тут — location.vgrish.ru/index.php?id=7


загрузка стран
Необходимо зайти на вкладку страны и выполнить загрузку. Затем активировать необходимые.


загрузка регионов
Необходимо зайти на вкладку регионы и выполнить загрузку. Затем активировать необходимые.


загрузка городов
Необходимо зайти на вкладку города и выполнить загрузку. Затем активировать необходимые.

данные
Каждой локации можно добавить данные, телефон, email, адрес


доступные плейсходеры
После установки пакета будут доступны следующие плейсходеры
[gl.check] => 1
    [gl.real.city.id] => 543460
    [gl.real.city.lat] => 56.35722
    [gl.real.city.lon] => 41.31917
    [gl.real.city.name_ru] => Ковров
    [gl.real.city.name_en] => Kovrov
    [gl.real.region.id] => 826294
    [gl.real.region.name_ru] => Владимирская область
    [gl.real.region.name_en] => Vladimirskaya Oblast'
    [gl.real.region.iso] => RU-VLA
    [gl.real.country.id] => 185
    [gl.real.country.iso] => RU
    [gl.real.country.lat] => 60
    [gl.real.country.lon] => 100
    [gl.real.country.name_ru] => Россия
    [gl.real.country.name_en] => Russia
    [gl.real.data.class] => glCity
    [gl.real.data.phone] => 8999999999
    [gl.real.data.email] => email@mail.ru
    [gl.real.data.address] => 
    [gl.current.data.class] => glCity
    [gl.current.data.phone] => 84923222222
    [gl.current.data.email] => kovrov@mail.ru
    [gl.current.data.address] => ковров
    [gl.current.city.id] => 543460
    [gl.current.city.lat] => 56.35722
    [gl.current.city.lon] => 41.31917
    [gl.current.city.name_ru] => Ковров
    [gl.current.city.name_en] => Kovrov
    [gl.current.region.id] => 826294
    [gl.current.region.name_ru] => Владимирская область
    [gl.current.region.name_en] => Vladimirskaya Oblast'
    [gl.current.region.iso] => RU-VLA
    [gl.current.country.id] => 185
    [gl.current.country.iso] => RU
    [gl.current.country.lat] => 60.00
    [gl.current.country.lon] => 100.00
    [gl.current.country.name_ru] => Россия
    [gl.current.country.name_en] => Russia
    [gl.set] => 1
с префиксом real — плейсходеры информирующие о реальном местоположении пользователя.
с префиксом current — плейсходеры информирующие о выбранном местоположении пользователя.

Необходимые данные вы можете использовать для своих нужд. Показывать конкретному посетителю нужный телефон/ email для связи, направлять письма от посетителей на нужный email и тд.

сниппет gl.location
Выводит объекты геолокации.
  • class — Имя класса для выборки. По умолчанию, «glCity».
  • limit — Ограничение количества результатов выборки. Можно использовать «0».
  • offset — Пропуск результатов от начала.
  • sortby — Любое поле для сортировки.
  • sortdir — Направление сортировки: по убыванию или возрастанию.
  • where — Массив дополнительных параметров выборки, закодированный в JSON.
  • sortBy — Поле сортировки.
  • sortDir — Направление сортировки.
  • tpl — Имя чанка для оформления.
сниппет gl.modal
Выводит модальное окно с выбором геолокации.
  • class — Имя класса для выборки. По умолчанию, «glCity».
  • modalShow — Показать модальное окно.
  • jqueryJs — Файл с jquery.js для подключения на фронтенде.
  • frontendCss — Файл с css стилями для подключения на фронтенде.
  • frontendJs — Файл с javascript для подключения на фронтенде.
порядок вызова
— вывести элемент для вызова модального окна. Дефолтный скрипт срабатывает при клике на элементе с классом gl-current-select
пример
<p>
    Ваш город:
    <span class="gl-current-select">[[!+gl.current.city.name_ru]]</span>
</p>
— вызвать сниппет gl.modal
пример
[[!gl.modal?
	&class=`glCity`
]]

пример можно посмотреть тут — location.vgrish.ru/index.php?id=7
Код на github, создавайте isuue
Компонент бесплатный, буду рад donation
Володя
10 декабря 2015, 10:36
6
12 147
+12

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

Василий Наумкин
10 декабря 2015, 14:03
+4
Зачем называть дополнение 2 буквами?

Чтобы потом как можно сложнее было гуглить ответы на вопросы по нему? Почему не назвать пакет GeoLocation или даже sxGEO? Например, это топик уже нельзя найти по запросу gl.

Сразу представляется диалог:
— Установи gl!
— Чего?
— Ну, gl, то есть GeoLocation
— А чего бы сразу так и не сказать?

Как скоро мы придём к пакету XX такими темпами?
    Володя
    10 декабря 2015, 14:16
    +6
    Фиг знает с чего меня дернуло все сокращать…
    Сейчас переименую.
      Василий Наумкин
      10 декабря 2015, 14:19
      +2
      Спасибо!
        Володя
        10 декабря 2015, 14:55
        +2
        переименовал, спасибо!
      Андрей
      10 декабря 2015, 14:54
      0
      Отличное решение. А подскажите, как собрать транспортный пакет из файлов на github? Иликак установить с github?
        Володя
        10 декабря 2015, 14:58
        +3
        мои дополнения доступны в репозитории, там же можно и скачать.
        Имя — RStore.pro
        Url сервиса — http://rstore.pro/extras/
        или подождите немного, и компонент будет доступен в modstore.pro
          Андрей
          10 декабря 2015, 15:05
          0
          Когда можно ждать в modstore.pro?
Сергей Шлоков
10 декабря 2015, 16:39
-2
Необычный прием — сниппетом выводить модальное окно. :)
    Володя
    11 декабря 2015, 11:06
    0
    что в этом необычного?
      Сергей Шлоков
      11 декабря 2015, 11:20
      0
      Володь, просто мне показалось (после прочтения заметки), что ты каким-то образом нашел способ вызывать модальное окно через сниппет. Хотел прибрать этот способ в свой багаж знаний. Но глянул код и понял, что я все неправильно понял. :) Сорри за тафталогию.
Виктор
24 декабря 2015, 10:38
0
Пытаюсь разобраться как выставить коэффициент для цен в прайс-листе для разных городов. Подскажите пожалуйста как как в сниппете задать переменную определяющую реальное [gl.real.city.id]
и выбранное положение пользователя [gl.current.city.id]?
что то вроде
$id = "{$city['city']['id']}";
    Володя
    24 декабря 2015, 11:17
    0
    все данные лежат в сессии
    $_SESSION['gl']
Михаил
31 января 2016, 22:23
0
Здравствуйте! При первом появлении модального окна с выбором геолокации «Ваш город — По умолчанию?»
А как сделать так чтобы вместо «По умолчанию» был реальный?
    Володя
    31 января 2016, 22:32
    +2
    думаю заменить на плейсходер с реальным городом — gl.real.city.name_ru
      Михаил
      31 января 2016, 23:14
      0
      Действительно=)Спасибо.
        Михаил
        02 февраля 2016, 14:21
        0
        Все таки не очень понимаю логику работы компонента.

        Я подставляю в tpl.gl.modal вместо «Ваш город — [[+gl.current.city.name_ru]]» => «Ваш город — [[+gl.real.city.name_ru]]»

        Посетитель видит свой город и нажимает «ДА». Но в итоге в [[+gl.current.city.name_ru]] остается «По умолчанию».

        Зачем нужна геолокация «По умолчанию»? Вы не подскажите как мне при первом посещений записать в current значения real?

        Помогите разобраться, пожалуйста.
      kyrtgod
      17 февраля 2016, 11:09
      0
      Присоединяюсь к вопросу Михаила, замена плейсхолдеров в чанках ничего не изменила, как выводилось «По умолчанию» так и выводится.

      В описании сказано «Определение страны, региона, города.» — это значит он автоматом по IP должен это делать. Он не делает, как бороться?
        Володя
        17 февраля 2016, 11:28
        0
        надо посмотреть в чем дело. Пока нет времени, но посмотрю обязательно.
        Володя
        17 февраля 2016, 22:14
        0
        пробуйте обновится, изменения касаются дефолтного чанка tpl.gl.modal
        теперь он выглядит так — github.com/vgrish/gl/blob/master/core/components/gl/elements/chunks/chunk.modal.tpl
        по умолчанию выводится — по умолчанию, ежели в активном списке локаций есть местонахождение пользователя то выводится сразу оно, по клику да подставляется его значение.
          Михаил
          18 апреля 2016, 18:15
          0
          Обновился, но изменений не заметил. По умолчанию выводится — по умолчанию.

          Да и сломалось само окно для ввода города. Скриншот joxi.ru/ZrJYMpjF1g971A
            Михаил
            18 апреля 2016, 19:38
            0
            Может попробовать снести компонет и установить заново? Но тогда наверное пропадут все созданные в админке геолокации с прописанными свойствами?
              Володя
              18 апреля 2016, 21:02
              0
              попробуй переустановить, пропасть ниче не должно.
                pr-light
                26 октября 2017, 00:23
                0
                вот у меня стоит обновленная версия, точнее только поставил самую последнюю, какая была… все-равно задаюсь тем же вопросом (
      Pavel
      27 декабря 2016, 17:30
      0
      Зачем? Если я замею потом город, то он все равно будет показывать мой реальный город? Где логика?)

      При первом входе снниппет должен показывать Реальный город, а не по умолчанию, а при смене этого города показывать тот город который я выбрал…

      Сейчас работает так — я заходу, пишет ваш город «по умолчанию..» я хочу его сменить, нажимаю, меня спрашивают — ваш город по умолчанию?) я говорю ДА… и никаких изменений… т.е он не определяет мой город?)
      Хотя плейсхолдер real нормально показывает мой город. Что то ту не так…

      Как сделать, чтоб при первом заходе показывало REAL, и при нажатии на кнопку ДА записывало этот город в CURRENT? Сэйчас это не работает… =\

      P.S. Еще можно сделать, если по каким-то причинам город определить не удалось, указывать в настройках дефолтный город.
        pr-light
        24 октября 2017, 15:31
        0
        присоединяюсь к вопросу.
        Павел, вы смогли победить?, я сижу уже и с минут 20 туплю над этим всем добром…
Виктор
03 февраля 2016, 23:36
0
Здравствуйте!
Подскажите как исправить?
При попытке загрузить страну, город выдает ошибку:

Код: 200 OK

Fatal error: Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDO instances' in .../public_html/core/model/modx/modconnectorresponse.class.php:175 Stack trace: #0 [internal function]: PDO->__sleep() #1.../public_html/core/model/modx/modconnectorresponse.class.php(175): session_write_close() #2 .../public_html/core/model/modx/modconnectorrequest.class.php(82): modConnectorResponse->outputContent(Array) #3 .../public_html/core/model/modx/modconnectorrequest.class.php(69): modConnectorRequest->prepareResponse(Array) #4 .../public_html/assets/components/gl/connector.php(29): modConnectorRequest->handleRequest(Array) #5 {main} thrown in .../public_html/core/model/modx/modconnectorresponse.class.php on line 175
    Виктор
    04 февраля 2016, 18:43
    0
    Вопрос снят. Не выключил Register_Globals в php.ini
Михаил
10 февраля 2016, 15:06
0
Добрый день! Мне необходимо отправлять письмо об изменении статуса заказа в minishop2 на [gl.current.data.email]. Не подскажите как это реализовать? Нашел функцию changeOrderStatus в minishop2.class.php. Но не знаю как получить [gl.current.data.email] чтобы подсунуть его в sendEmail.
    Володя
    10 февраля 2016, 15:40
    0
    Добрый вечер.
    Или написать плагин на changeOrderStatus или же расширить класс заказа minishop2 и в нем менять почту.
      Михаил
      10 февраля 2016, 15:42
      0
      А как мне получить [gl.current.data.email] в классе заказа minishop2?
        Володя
        10 февраля 2016, 15:45
        0
        в сессии посмотрите
        $_SESSION['gl']
          Михаил
          12 февраля 2016, 16:37
          0
          Спасибо! [gl.current.data.email] лежит тут $_SESSION['gl']['opts']['current']['data']['email']
kyrtgod
17 февраля 2016, 11:11
0
Некоторые названия на транслите, это с SxGeo такое подтягивается?
    Володя
    17 февраля 2016, 11:25
    0
    данные да с SxGeo
Hiddenski
12 марта 2016, 18:00
0
Для тех у кого с ошибками работает модуль и вы не знаете как починить:

Проверьте свой .htaccess на строчку «AddDefaultCharset UTF8». Если она у вас присутствует — удаляйте смело.
Рустам С
19 марта 2016, 15:15
0
а данные потом где сохраняются о его городе, у пользователя в стандартном поле город? и есть ли связь с UserProfile2?
    Володя
    19 марта 2016, 16:21
    0
    данные у пользователя в сессии… что дальше с ними делать решать вам.
alex
19 марта 2016, 19:11
0
Добрый день, подскажите пожалуйста в чем может быть проблема.

При переносе сайта на хостинг jino.ru — перестал определяться реальный город пользователя.
Т.е. реальное местоположение всегда равно значению `По умолчанию`

echo 'pre'; print_r($_SESSION['gl']); echo '<pre>';
массив с данными ниже
joxi.ru/KAg8aaBfgkv1Nr
Андрей
27 марта 2016, 12:18
0
В версии 1.2.1 нет иконок в админке. Кеш чистил, пакет переустанавливал.

http://joxi.ru/ZrJd1qXF1zebX2
    Володя
    27 марта 2016, 12:26
    0
    s4901.h5.modhost.pro/manager/
    s4901
    i5vD7Tin5xVn
    посмотрите тут — они есть

    Возможно у вас старая версия MODX…
      Андрей
      27 марта 2016, 12:39
      0
      Деинсталировал и удалил все версии пакетов, поставил заново последнюю версию, иконки появились.

      И еще вопрос из интереса: почему используется colorbox? Я просто у себя на всех проектах использую fancybox для всплывающих окон с формами и изображениям, мне кажется он удобнее. Ваш скрипт довольно легко переделать под него.
        Володя
        27 марта 2016, 13:20
        0
        Деинсталировал и удалил все версии пакетов, поставил заново последнюю версию, иконки появились.
        Отлично!

        И еще вопрос из интереса: почему используется colorbox?
        Было такое требование от заказчика. Потом добавился еще UIlkit…

        Я просто у себя на всех проектах использую fancybox для всплывающих окон с формами и изображениям, мне кажется он удобнее
        Вы можете с легкостью переписать код под фанси и прислать pr. Думаю все будут довольны.

        Спасибо!
tsergey
18 апреля 2016, 18:40
0
Здравствуйте,
Возникла такая проблема: как только я устанавливаю данной дополнение, сайт перестает отображаться (отображается пустая белая страница). Удаляю дополнение и все приходит в норму. С чем может быть связано такое поведение?
Ilya Ev
27 апреля 2016, 15:51
0
Добрый день, Подскажите. Работает модуль на сайте все отлично.

Встала задача хранить часть страниц в отдельном контексте, написан плагин для события pageNotFound, для показа этих страниц.

Так вот если открываются страницы из этого отдельного контекста все плейсхолдеры не выдают значений, т.е. при вызове [[!+gl.current.data.phone]] пусто. Если открыть страницу из контекста web все ок, плейсхолдеры работают.

Шаблон у страниц из контекста web и отдельного один и тот же, соответственно вызовы на странице одинаковые.

вызов:
[[!gl.modal?
	&class=`glCity` 
	&frontendCss=`0`
]]
На этих страницах работает и вроде даже можно сменить регион, но плейсхолдеры ничего не выдают.

Что можно придумать?
    Володя
    27 апреля 2016, 19:06
    0
    как выглядит ваш плагин:?
      Ilya Ev
      27 апреля 2016, 19:45
      0
      Вот так

      <?php
      if ($modx->event->name != 'OnPageNotFound') {return false;}
              $request_uri = $_SERVER['REQUEST_URI'];
              $request_uri = substr($request_uri,0,1)=='/' ? substr($request_uri,1) : $request_uri;
      
      $clean=explode('?', $request_uri);
      
      $tmp = explode('/', $clean[0]);
      $alias=end($tmp);
      if($alias==''){$alias=prev($tmp);}
      
      $alias = str_replace('.html', '', $alias);
      $alias = str_replace('.txt', '', $alias);
      
      $qq = array(
                  'alias' => $alias
                  ,'deleted' => 0
                  ,'published' => 1
                  ,'context_key' => 'info'
              );
      
      $section = $modx->getObject('modResource', $qq);
      if (!isset($section)) {return;}
      $section_id = $section->get('id');
      $modx->switchContext('info');
      $modx->sendForward($section_id);
      
      // Иначе ничего не делаем и юзер получает 404 или его перехватывает другой плагин.
        Володя
        27 апреля 2016, 19:59
        0
        плагин по вашему примеру, проверить ввести любой id > 45
        location.vgrish.ru/index.php?id=46
        вроде все пашет?
          Ilya Ev
          27 апреля 2016, 20:08
          0
          хм, чтож ему у меня не нравиться). У вас тоже этот документ в другом контексте? Задавали особые параметры контексту с документом или в вызов сниппета?
            Володя
            27 апреля 2016, 20:11
            0
              Ilya Ev
              27 апреля 2016, 20:15
              0
              Спасибо, буду пробовать найти проблему.
                Ilya Ev
                27 апреля 2016, 20:59
                0
                Странная история, если ресурс в другом контексте открывается напрямую без плагина на PageNotFound все плейсхолдеры работают, если через ошибку не найден и плагин не работает(…

                А можно как-то по другому вызвать плейсхолдеры чтоб значение получить не
                [[+]]
Александр
13 мая 2016, 14:37
0
Подскажите, как сделать редирект на другую страницу при выборе города?
    Володя
    13 мая 2016, 18:06
    0
    назначить ресурс в админке

    при выборе города с ресурсом должен произойти редирект на этот ресурс.
      Александр
      13 мая 2016, 19:18
      0
      Спасибо )
      Илья
      25 мая 2016, 13:57
      0
      А как сделать редирект без выбора города, учитывая real?
      Михаил
      19 июля 2016, 09:00
      0
      А можно наоборот убрать редирект при выборе города? У каждого города в админке назначен ресурс с контактами по этому городу. Но мне не нужно чтобы при смене города пользователя перекидывало на страницу с контактами.
      Viktor
      27 марта 2017, 14:26
      0
      Странно, у меня не работает редирект. Выбрал страницу в другом контексте (и поддомене) — не редиректит. Хотя и выбирал страницу в web контексте, тоже не работает.
        Sergey
        27 апреля 2017, 00:22
        0
        удалось решить? та же проблема
          Viktor
          27 апреля 2017, 05:08
          0
          неа
            Alexander Ostroushko
            28 мая 2018, 10:59
            0
            Удалось решить проблему?
              Viktor
              06 июня 2018, 13:45
              0
              в версии 1.2.7 файла assets/components/gl/js/web/default.js, который идет в пакете из modstore заменил
              if (response.object.current && response.object.current.data && response.object.current.data.resource_url) {
              	document.location.href = response.object.current.data.resource_url;
              }
              if (glConfig.pageReload) {
              	location.reload();
              }
              на
              if(response.object.current && response.object.current.data && response.object.current.data.resource_url) {
              	document.location.href = response.object.current.data.resource_url;
              } else {
              	location.reload();
              }
              из файла версии 1.1.9 на гитхабе

              вроде все работает

              Володя, это ничего не поломает?
Алексей К
18 мая 2016, 23:10
0
Привет. Подскажите пожалуйста, как получить через fenom плейсхолдер [[!+gl.current.city.name_ru]] например?
{!$gl.real.city.name_ru} — даёт 1.
{$gl.real.city.name_ru} — ничего не даёт.
Илья
25 мая 2016, 13:27
0
У меня возникла проблема, во Владимиркой области очень мало городов, есть ли возможность добавить отсутствующие? и как?
    Володя
    25 мая 2016, 14:24
    0
    пока к сожалению нет…
      Илья
      25 мая 2016, 15:18
      0
      Жаль, на заметку нашел интересный скрипт github.com/rossvs/ipgeobase.php

      А если совместить dadata, было бы круто ;)
      Алексей Шумаев
      26 мая 2017, 13:36
      0
      Да, кстати, городов очень мало, в моём случае нельзя использовать (
      Вообще странно, т.к. я использовал в нескольких проектах sxGeo (с базой SxGeoCity.dat) и не замечал такой проблемы…
        Алексей Шумаев
        27 мая 2017, 23:44
        0
        Проверил: всё норм. Городов, которых нет (которые я проверил) — нет в БД IP вообще, их адреса записаны на областные центы.
Степан Прищепенко
27 мая 2016, 17:14
0
Володя, привет. Поставил компонент, но пока не сообразил как его использовать, не определяет местоположение — пока разбираюсь, заметил что используются системный параметры, например gl_ischeck_site_status, gl_core_path, default_real_class итд, и я нигде их не вижу, возможно конечно что они определяются каким-либо плагином ибо в системный настройках их нет. Я поискал в билдере и тоже их не нашел, не будет ли это влиять на правильную работу компонента? И в классе gl есть
public function __call($n, array$p)
    {
        echo __METHOD__ . ' says: ' . $n;
    }
не помешает?
    Степан Прищепенко
    27 мая 2016, 18:03
    0
    проблема была в том что папка кеша не обновлялась и плагин gl не запускался., но вопросы остаются в силе.
      Володя
      27 мая 2016, 18:36
      0
      проблема была в том что папка кеша не обновлялась и плагин gl не запускался.
      вот тут подробнее можно, какой кэш и какой плагин
        Степан Прищепенко
        28 мая 2016, 00:18
        0
        по какой-то космической причине (грешу на права или кеширование на самом сервере), папка cache категорически не хотела обновлять includes пока ручками не почистил, в результате плагин с именем gl туда вообще не попадал и не срабатывал, как результат плейсхолдеры не создавались и сниппеты ничего не выводили.
    Володя
    27 мая 2016, 18:36
    0
    например gl_ischeck_site_status, gl_core_path, default_real_class итд
    они заданы по умолчанию, в случае чего их всегда можно переопределить.
    Я поискал в билдере и тоже их не нашел, не будет ли это влиять на правильную работу компонента
    нет.
    И в классе gl есть
    public function __call($n, array$p)
    {
    echo __METHOD__. ' says: '. $n;
    } не помешает?
    нет, сработает если будет обращение к несуществующему в данном классе методу.
      Степан Прищепенко
      28 мая 2016, 00:21
      0
      а мне понравилась идея разделения файлов и классов по именам событий, весьма прикольно выглядит, для маленького проекта смысла в этом может и не много, но для большого думаю будет удобно, спасибо за код!
Степан Прищепенко
01 июня 2016, 11:05
0
Использую версию 1.2.1-beta меня не устроила логика, что при открытии города, данных по которому нет, не подставляются значения по умолчанию, чтобы это реализовать можно сделать так, в файл core/components/gl/model/gl/systems/glonhandlerequest.class.php в последнее условие добавить:
elseif(!$this->gl->opts['current']['data'] && $tmp = $this->gl->getDefaultData()){
            $this->gl->opts['current']['data'] = $tmp['data'];
            unset ($tmp);
        }
. Тогда плейсхолдеры с префиксом gl.current.data получат данные из объекта помеченного как «по умолчанию».

Также в компоненте предусмотренны 3 доп. поля с именами add1, add2, add3, которые можно использовать в плейсхоледерах gl.current.data. Чтобы их добавить нужно создать сист. настройку с именем
gl_fields_window_data (тип текстовое поле или текст область) и присвойте ей «id,default,class,resource,identifier,image,phone,email,address,active,name_alt,add1,add2,add3». При редактировании такой записи галочки не будут установленны, но данные все равно сохраняются в БД. Также, без изменения кода, вывести данные в общую таблицу нельзя. Думаю это были остатки или зачатки чего то, так что не стоит использовать не обдуманно, ибо в след версии этих полей может не быть вовсе, или измениться их принцип храниения/вывода.
    Степан Прищепенко
    01 июня 2016, 12:10
    0
    нашел еще поля phone_add и email_add, вот они могут попасть в общую таблицу, свойство gl_fields_grid_data значение «id,class,identifier,phone,phone_add,email,email_add»
    Володя
    02 июня 2016, 14:48
    0
    пожалуйста github.com/vgrish/gl/compare
Павел
02 июня 2016, 14:10
0
Подскажите пожалуйста, как можно проще сделать динамическую подгрузку данных. Что имеется ввиду:

Есть поле ввода страны. Идет поиск по стране, затем в следующий селект загружаются города аяксом, для выбранной страны итд. Вопрос, по какому адресу отправлять аякс запрос, чтобы мне вернулся массив с данными (страны, регионы, города), которые в админке я активировал? Спасибо!
    Володя
    02 июня 2016, 14:47
    0
    http://site.ru/assets/components/gl/action.php
    limit:0
    active:1
    default:0
    action:getlist
    class:glCity
    query:fsdfsd
Павел
02 июня 2016, 18:29
0
Спасибо большое!
Павел
06 июня 2016, 11:03
0
Добрый день, подскажите пожалуйста, как сделать вывод реального города пользователя с возможностью выбрать другой город?
Пример сайта с таки функционалом: lotki. ru
У меня сейчас так:
<div class="gl-current-select">[[!+gl.real.city.name_ru]]</div>
[[!+gl.real.data.address]]
[[!+gl.real.data.phone]]
[[!+gl.real.data.email]]

[[!gl.modal?
    &tpl=`tpl.gl.modal_2`
	&frontendJs=`[[+assetsUrl]]js/web/_default.js`
	&modalShow=`0`
]]
KSin
06 июня 2016, 13:30
0
Подскажите пожалуйста, как привязать к каждому городу отдельный поддомен? Скажем, для Истры — istra.site.ru, для Подольска — podolsk.site.ru
В поле Ресурс можно только страницу указать. А как быть с поддоменами — не понятно :/
    KSin
    07 июня 2016, 13:30
    0
    Решение нашел. Вдруг кому-то понадобится.
    В общем, компонент GeoLocation вполне подходит и для сайта с городами-поддоменами. Владимир подсказал, что можно создать ресурс-ссылку на поддомен. А в данных города указать в качестве ресурса этот ресурс-ссылку.
    Но тогда происходила не приятная особенность — посетитель, первый раз зашедший на сайт получал всплывашку с уточнением города (Ваш город — Москва?), например выбирал свой и его перебрасывало на поддомен, где вновь появлялась такая же всплывашка. Более того, в шапке было написано «Ваш город: По умолчанию» не смотря на то, что посетитель уже 1 раз указал свой город, находится на поддомене и тд. Почему так происходит вы наверно знаете.
    Решение нашел такое. В системных настройках MODx:
    Домен для сессионных куки (session_cookie_domain) — прописываем свой основной домен. Теперь модальное окно не будет появляться каждый раз, «а сайт будет помнить» выбор пользователя.
    Также, в /> пришлось поставить воскл знак /> — чтобы базовый адрес сайта не кэшировался и в меню, например, ссылки не вели с поддомена на домен второго уровня.
    Ну и все плейсходеры компонента я выводил в шаблон с! — чтобы телефоны, email и тд тоже не кэшировались.

    Так как я не программер и с MODx знаком не очень — нашел только такое решение. Думаю, что у программеров более изящные решения :)
      Александр
      14 июня 2016, 09:38
      0
      что-то наверное я туплю, но мне тоже понадобилось реализовать такой же выбор города как у вас с поддоменами, но ни как не могу найти этот ресурс в выборе города:
      у меня в городах такого поля нету, ну может я вообще не туда смотрю, подскажите пожалуйста)
      Hiddenski
      03 августа 2016, 15:59
      0
      Домен для сессионных куки (session_cookie_domain) — прописываем свой основной домен. Теперь модальное окно не будет появляться каждый раз, «а сайт будет помнить» выбор пользователя.
      Не прокатывает что-то :/
maks
19 июня 2016, 20:01
0
Добрый вечер!

Есть ли возможность вывести подгруженные регионы в tv-параметре «список(множественный выбор)»? Что нужно прописать в возможных значениях?
Алексей
05 июля 2016, 08:55
0
Доброго дня! Подскажите пожалуйста, возможно ли использовать данный модуль на EVO? Если нет, то есть ли возможность портировать его на данную систему, и в какую сумму это выльется? Спасибо.
    Володя
    05 июля 2016, 11:59
    0
    Добрый день.
    Модуль под revo, с evo не работаю.
      Алексей
      05 июля 2016, 12:40
      0
      Владимир, Спасибо за уделенное время. Возможно Вы знаете человека/людей, которые бы взялись за данную работу? Поскольку я совсем новичок в МОДэкс, и не обзавелся подобными знакомствами=)
        Воеводский Михаил
        05 июля 2016, 13:06
        0
        Если новичок, стоит ли смотреть на Evo? Лучше сразу на Revo учиться.
          Алексей
          05 июля 2016, 14:31
          0
          Дело в том, что у заказчика уже есть сайт, и не один. И все на evo.
            Воеводский Михаил
            05 июля 2016, 14:32
            0
            Могу только посочувствовать. Придется пилить решение самостоятельно.
              Алексей
              05 июля 2016, 14:41
              0
              А если не самому, сколько это может стоить? =)
                Воеводский Михаил
                05 июля 2016, 15:25
                0
                Не подскажу, ибо тоже не работаю с Evo. Если рассматриваешь вариант переезда на Revo, то пиши на почту.
                  Алексей
                  05 июля 2016, 16:01
                  0
                  vargantreal@gmail.com, буду очень признателен за помощь
                    Андрей
                    05 июля 2016, 17:04
                    0
                    Обратитесь на modx.im или modx.ru, возможно там вам помогут.
eflit
20 июля 2016, 17:31
0
Здравствуйте подскажите такая проблема установил компонент все установилось без ошибок но при открытии в админке Компоненты-Геолокации пустая страница в чем может быть проблема
Андрей
21 июля 2016, 12:51
0
Как сделать что бы вместо По умолчанию выводился другой город? Зачем вообще по умолчанию нужен, у меня реальный город Самара, в списке городов Самара есть и активна, и все равно выводит По умолчанию.
    Андрей
    21 июля 2016, 13:57
    0
    В общем сделал так:

    Там где название города
    [[!+gl.selected.city.name_ru:is=`По умолчанию`:then=`Самара`:else=`[[!+gl.selected.city.name_ru]]

    Там где задается вопрос про ваш город
    [[!+selected.city.name_ru:is=`По умолчанию`:then=`Самара`:else=`[[!+selected.city.name_ru]]`]]

    В сниппет где выводится дефолтный город и откуда он назначается в случает согласия подставляем тоже
    [[!gl.location?
      &limit=`1`
      &class=`[[+class]]`
      &where=`{"name_ru:=": "[[!+selected.city.name_ru:is=`По умолчанию`:then=`Самара`:else=`[[!+selected.city.name_ru]]`]]", "AND:active:=": "1"}`
      &sortby=`FIELD([[+class]].name_ru, "[[!+selected.city.name_ru:is=`По умолчанию`:then=`Самара`:else=`[[!+selected.city.name_ru]]`]]")`
    ]]

    То условие которое стоит по умолчанию в where не работает, по крайней мере у меня, и непонятно зачем тут sortby, если всего 1 результат выводится.
Stan Ezersky
31 июля 2016, 13:08
0
Ошибки при создании таблиц в ДБ при установке последней версии

MODX 2.5.1
    Володя
    31 июля 2016, 20:31
    0
    протестировал на modhost.pro/
    все отлично работает joxi.ru/KAxgLX6f4xwxx2
      Stan Ezersky
      31 июля 2016, 20:44
      1
      0
      Значение wait_timeout в my.cnf изменил на 60, помогло
        Володя
        31 июля 2016, 20:47
        0
        наверно оттого что у меня там прежде инсталятор кучу всего скачивает и не успевает в wait_timeout.
          Stan Ezersky
          31 июля 2016, 21:00
          0
          Я из-за этого и полез в конфиги MySQL, значение 20 было, оказалось, его мало.
Владимир
01 августа 2016, 13:01
+1
Новый пакет GeoLocation (на сегодня) загружает на страницу js скрипты даже будучи неиспользуемым. До обновления этого не было. :(
    Володя
    01 августа 2016, 13:47
    0
    скрипты грузятся только при вызове сниппета gl.modal, проверяй где вызываешь.
      Владимир
      01 августа 2016, 13:51
      0
      Грузился на главной, новой, с новым шаблоном где гарантированно не было ни когда вызова gl.modal, а gl.modal был вызван в двух неиспользуемых шаблонах, причем закомментирован (вызван с минусом [[-gl.modal )
        Володя
        01 августа 2016, 13:55
        0
        Чудес то не бывает.
        Если можешь скинь доступ к админке — посмотрю в чем дело.
          Владимир
          01 августа 2016, 14:44
          0
          Чудес то не бывает.
          полностью согласен. Но я проверил, дополнительно стали подгружаться скрипты и отвалился Scrollbar на главной.
          В данный момент пакет полностью удалил, ибо сейчас в нем нет надобности. Если нужен доступ, не вопрос, но придется все ставить назад.
          Владимир
          01 августа 2016, 14:50
          0
          вот, ща дам доступ, повторил, все как и говорю, закомментированный вызов модального окна в совсем другом шаблоне ломает главную (шаблон главной ни как не связан с тем, где вызов)
          PS написал в Skype
          Владимир
          01 августа 2016, 15:58
          +1
          Пишу тут покаяние)) не знаю что было, но переустановка все «вылечила». Кривые руки ли мои.., короч все ОК.
Андрей Копп
01 августа 2016, 23:17
0
Как заставить работать компонент на динамических страницах созданных с помощью VirtualPage?
    Володя
    02 августа 2016, 00:50
    +1
    обновляйся, должно работать.
Павел
03 августа 2016, 21:22
0
Здравствуйте. В интернет магазине нужно определять не город, а код региона (например, для Владимирской области это 33). Можно ли это реализовать через ваш компонент? Если — да, то посоветуйте как.
    Hiddenski
    03 августа 2016, 21:26
    0
    Можно сделать доп.поле и для каждого нужного региона прописать свой
      Павел
      03 августа 2016, 21:30
      0
      А сейчас каждому региону соответствует какой-то номер? Если — да, то где его взять? Для каждого города код региона руками не хотелось бы прописывать.
        Hiddenski
        03 августа 2016, 21:33
        0
        Инфа берется с базы SxGeo. Что уже доступно смотрите в шапке по пункту доступные плейсходеры
    Володя
    03 августа 2016, 22:04
    0
    Все верно, кода региона в базе sxGeo нет. Есть объект data который крепится к локации, вы можете использовать уже существуюшее поле, либо добавить свое и проставить областям код региона.
Владимир
11 августа 2016, 10:36
0
Добрый день!
В новой версии не определяется город по умолчанию location.vgrish.ru/index.php?id=7
Старая версия (пример на сайте)
new.zooregion.ru/th/testovaya-stranicza.html
2026696 — gl.current.city.id
46.81293 — gl.current.city.lat
134.25012 — gl.current.city.lon
Новая версия
zooregion.ru/th/testovaya-stranicza.html
— gl.current.city.id
— gl.current.city.lat
— gl.current.city.lon
Пустые значения. Подскажите, пожалуйста, в чем проблема?

    Владимир
    11 августа 2016, 16:21
    0
    Спасибо ) сами разобрались.
Кирилл
29 августа 2016, 16:50
0
Добрый день. У меня проблема с данными. Не выводит установленный [[!+gl.real.data.email]] (или любое другое поле из data). Не пойму в чем проблема. Также пробовал менять email по умолчанию — тоже не меняется. Сам город и остальные параметры определяется корректно.
    Володя
    29 августа 2016, 17:09
    0
    он определяет, сохраняет в сессии и больше эти данные не меняет, если ты вносил изменения после, то почисти сессию и потом проверь.
      Кирилл
      29 августа 2016, 17:16
      0
      Спасибо! Всё получилось.
      Кирилл
      29 августа 2016, 22:13
      0
      Возникла еще одна проблема. С городами все было отлично, но когда поменял привязку на регион — стало выводить данные по умолчанию. Попробовал поменять данные по умолчанию на регион — все равно не пошло. [gl.real.data.class] — выводит glCity, может быть это важно. Сниппеты вашего плагина на странице не вызываются, использую только плейсхолдеры.
        Володя
        29 августа 2016, 22:18
        0
        создайте системную настройку gl_default_real_class и задайте ей значение glRegion, по умолчанию работает с glCity
          Кирилл
          29 августа 2016, 22:34
          0
          Благодарю!
Семен Морозов
02 сентября 2016, 17:26
0
Добрый день. Подключил много стран. И при вое города, например Москва, у меня выпадает длинный список из семи Москвы. Как вывести рядом с сними регион или страну. Москва — Россия, Москва — США?
    Володя
    02 сентября 2016, 17:34
    0
    в комбике? Скопируйте дефлтный скрипт и вот тут добавьте что вам нужно github.com/vgrish/gl/blob/master/assets/components/gl/js/web/default.js#L242
    данные что приходят посмотрите в консоли браузера.
      Семен Морозов
      02 сентября 2016, 17:56
      0
      Спасибо за ответ. Я понял что нужно вот тут поменять вывод

      getResult: function(el) {
                  if (!el.id) {
                      return '';
                  }
      
                  var name = !!!el.name_alt ? el.name_ru :el.name_alt;
      
                  return $('<div>' + name + '</div>');
              },
      Но не пойму как вывести регион и страну тут. Можете помочь?
        Володя
        02 сентября 2016, 20:40
        0
        да, сам понял что там этого нет)
        Сейчас посмотрю подробнее…
        Володя
        02 сентября 2016, 21:06
        0
        обновляйся, теперь все там есть…
          Семен Морозов
          03 сентября 2016, 08:56
          0
          Благодарю за такую оперативность!
          А какие изменения надо внести, чтобы появилось название региона и страны около города? Я не смог понять( Помогите пожалуйста)
            Володя
            03 сентября 2016, 13:33
            0
            например вот так
            getResult: function(el) {
                        if (!el.id) {
                            return '';
                        }
            
                        //var name = !!!el.name_alt ? el.name_ru :el.name_alt;
            
                        var name = [];
            		    ['country_name_ru', 'region_name_ru', 'name_ru'].filter(function(k) {
                            if (el[k]) {
            		            name.push(el[k]);
            		        }
                        });
                      
                        name = name.join(', ');
                        
                        return $('<div>' + name + '</div>');
                    },
xoxox
16 октября 2016, 15:15
0
Добрый день! Проблема такая же как и у eflit. Установил компонент все установилось без ошибок но при открытии в админке Компоненты-Геолокации пустая страница в чем может быть проблема? MODX Revolution 2.2.14-pl
    Володя
    16 октября 2016, 16:09
    +1
    MODX Revolution 2.2.14-pl
    работает только >= 2.3
      xoxox
      18 октября 2016, 18:01
      0
      Спасибо, обновился все заработало!
      Есть еще один вопрос, убрал вывод модального окна, в элементе для вызова модального окна вывожу реальное местоположение. Как при загрузке выбранному присвоить значение реального, чтобы сразу при загрузке выводились и адрес и телефон реального региона?
Иван
19 октября 2016, 14:40
0
Добрый день, подскажите, можно ли с помощью данного компонента реализовать следующее:
Есть список из двух городов.
Если пользователь заходит с одного из этих городов, его автоматически редиректит на поддомен этого города.
Если пользователь заходит с города, которого нет в списке, появляется модалка с возможностью выбрать один из двух городов.
    Володя
    19 октября 2016, 18:11
    +1
    написать плагин, при загрузке страницы смотрите реальный город, если у него в данных есть привязанный ресурс и домен не тот — то делаете редирект
Михаил
28 ноября 2016, 15:35
0
Всем привет! Мне нужно при заходе на сайт и в current записать значения real. Можно это как-то реализовать?
    Володя
    28 ноября 2016, 16:38
    0
    плагином или сниппетом задать значение в сессии
    $_SESSION['gl']['opts']['current'] = $_SESSION['gl']['opts']['real'];
      Михаил
      28 ноября 2016, 17:02
      0
      А на какое событие его привязать? Нужно чтобы при первом заходе срабатывало. А затем пользователь мог поменять город самостоятельно.
        Володя
        29 ноября 2016, 13:58
        0
        например на OnHandleRequest, только выставьте приоритет больше 0
          Михаил
          29 ноября 2016, 19:44
          0
          Спасибо. А что такое [gl.set] и [gl.check]?
Alexandr
30 ноября 2016, 18:10
0
Есть ли возможность отсортировать в gl-change-list все данные, которые у меня выводятся, по ID в порядке возрастания
Как уже только не пробовал, но ничего не получается.
kulikov98
08 декабря 2016, 19:48
0
Всем привет! Установил GeoLocation, при переходе на вкладку «Страны» сразу же выдает 500 ошибку. Страны, естественно, не загружаются. В чем может быть проблема?
    kulikov98
    08 декабря 2016, 20:00
    0
    Разобрался, дело было в версии PHP — стояла 5.3
alex
13 декабря 2016, 10:41
0
Добрый день, в базе городов нет городов Крыма.
Как их можно добавить?
    Володя
    13 декабря 2016, 10:48
    +1
    Используется библиотека sypexgeo.net/ru/download/
    все данные берутся оттуда.
      alex
      13 декабря 2016, 11:13
      0
      дело в том что при просмотре файла /www/assets/components/gl/vendor/sypexgeo/info/city.tsv в нем есть и Киев и Симферополь.

      В админке в приложения-геолокации на вкладке страны включены и Россия и Украина, но на вкладке города — нет ни Киева ни Симферополя.

      В чем может быть проблема?

        Hiddenski
        13 декабря 2016, 13:38
        0
        Проверьте: загружены ли у вас базы с городами и включены ли они?

        На одном из сайтов как раз таки Севастополь Симферополь есть joxi.ru/krD0KyVHn95Erp
          alex
          13 декабря 2016, 14:20
          0
          спасибо за помощь, помогло
Hiddenski
13 декабря 2016, 14:47
0
Если нужно вывести имя региона рядом с названием города в выпадающем списке (вот так joxi.ru/EA4Zw58CRkQOmb) то нужно сделать следующее:

1. Открываем файл по этому пути (у меня UiKit, и в моем случае путь такой):
assets/components/gl/js/web/uikitdefault.js

2. Ищем в самом конце «getResult», после «var name = !!!el.name_alt итд.» вставляем следующее:
var xname = el.region_name_ru;

3. Находям рядышком «return $('четатам');» и меняем всю строку на
return $('<div>' + name + ' (' + xname + ')' + '</div>');

4. Сохраняем, заходим на страницу с вызовом GeoLocation, перезагружаем страницу с ctrl+f5 (для чистки кеша) и проверяем.

Должна получиться такая конструкция:
joxi.ru/KAgXn3lCq0M4rl
Василий Столейков
08 февраля 2017, 13:12
1
0
Печально, но у SxGeo нету в базе МОЛДОВЫ, определяется местоположение как Румыния!!!
Только из-за этого приходится отказываться от такого дополнения… (((
Константин Ильин
11 февраля 2017, 14:36
0
Володя, подскажи пожалуйста а ты тестил на мобильных устройствах? Как он определяет.
Так же есть вопрос по поводу «кеша» т.е. про сессию. Например я был в Москве, уехал в Питер существует какой-то кеш?
    Володя
    11 февраля 2017, 14:56
    0
    Володя, подскажи пожалуйста а ты тестил на мобильных устройствах? Как он определяет.
    нет, не тестил
    Например я был в Москве, уехал в Питер существует какой-то кеш?
    сохраняется в сессию…
      Константин Ильин
      11 февраля 2017, 15:03
      0
      Вот щас тестили на мобильнике, зашли на сам сайт sypexgeo.net/

      Показывает Самару, хотя мы вообще в другой области, печально…
        Володя
        11 февраля 2017, 15:05
        +1
        да, у меня тоже с мобильного соседнюю область показывает…
        Владимир
        11 февраля 2017, 15:11
        0
        Это нормально. В Сочи МТС, например, говорит что он Ростов-на-дону, в Саратове (часто) показывает так же соседние регионы. Про Северный Кавказ вообще молчу, по мобильному там регион меняется через каждый метр в движении (по опыту утверждаю).
          Константин Ильин
          11 февраля 2017, 15:29
          +1
          Вот что пишет яндекс
          yandex.ru/support/common/browsers-settings/geo-mobile.html

          «Геолокация устройства определяется по Bluetooth, радиосигналу GPS, ближайшим точкам доступа Wi-Fi и номеру ячейки сотовой сети.»
          sypexgeo определяет по айпи, видать операторы выдаю айпи которые прописаны в другом городе.

          Не говоря про библиотеку sypexgeo, какой то выход есть, чтобы нормально определял?
            Володя
            12 февраля 2017, 13:53
            0
            Возможно таким образом будет корректнее dadata.ru/api/detect_address_by_ip/
              Володя
              12 февраля 2017, 14:09
              0
              а не… тоже самое все. Определяет по ip и результат один в один. Кароч не годится
            Сергей Кепкин
            02 октября 2017, 21:05
            0
            Костя!
            Смотрел по GA-аналитике, кол-во так называемых покупашек, которые что-то реально покупали и при этом город, определенный по SxGeo, не совпал с реальным, приблизилось за 4 месяца к катастрофической тройке человек)) Из общего количества покупателей в 3800 чел…
            Совпадение? Не думаю)))
            Проблему решил менеджер за 2,5 секунды, уточнив при подтверждении заказа адрес доставки. Ну и поле «Комментарии к заказу» всю жизнь было нелишнее.
            Нагружать кучей сервисов биолокации и шаманотерапии ради 0,078% покупателей? Увольте…
            Имхо проблема преждевременной оптимизации… Поменьше читайте яндекс на ночь)))
              Константин Ильин
              03 октября 2017, 01:04
              0
              В том проекте был смысл такой, что при определении региона показывать магазины в этом регионе, ну или городе. Это так сказать для юзабилити было. Но то решение с адресом тоже присутствовало на сайте. Просто Илон Маск не добрался до этой проблемы ;)
                Сергей Кепкин
                03 октября 2017, 02:06
                0
                не знаю))) в России имеется с десяток городов, где есть Покупатели и еще 800 городов, жители которых покупают 20, а то и 10% от всей массы заказов.
                т.е. правило Парето смело можно переименовать в правило Руссето:
                1% городов делает 90% выручки.
                можно и покупашек посчитать, но в данной теме привязка именно к городам…
Павел
20 февраля 2017, 17:50
0
Автор подскажи, плз. Вот такие ошибки в консоли. Компонент и MODX обновил до последней версии
default.js:17 Uncaught ReferenceError: glConfig is not defined
    at Object.initialize (default.js:17)
    at Object.initialize (default.js:56)
    at default.js:260
    Володя
    20 февраля 2017, 17:57
    0
    не инициализировали скрипт… Почему? Ктоже знает…
    Больше конкретики… вызов… пример и тд…
      Павел
      20 февраля 2017, 18:09
      0
      Вызываю так:
      Ваш город:
      <span class="gl-current-select">[[!+gl.current.city.name_ru:is=`По умолчанию`:then=`Щёлково`:else=`[[!+gl.current.city.name_ru]]`]]</span>
                  [[!gl.modal?
                  	&modalShow=`0`
                  	&class=`glCity`
                  	&tpl=`my.tpl.gl.modal`
                  ]]

      Чанк my.tpl.gl.modal:

      <div style="display: none;">
          <div class="gl-modal uk-modal">
              
              <div class="gl-default uk-modal-dialog">
                  <h5>Выберите Ваш город</h5>
      
                  <p class="desc">
                      Введите название вашего города
                  </p>
      
                  <div class="gl-change-input-block">
                      <select name="location" value="" style="width: 100%" class="select2 " multiple>
                      </select>
                      <span class="gl-select2-container"></span>
                  </div>
      
                  <ul class="gl-change-list">
                      [[!gl.location?
                      &class=`[[+class]]`
                      &where=`{"default":0}`
                      &limit=`0`
                      ]]
                  </ul>
              </div>
         
          </div>
      </div>
        Володя
        20 февраля 2017, 18:16
        0
        ну тут все нормально. А вживую есть где посмотреть?
          Павел
          20 февраля 2017, 18:18
          0
          Конечно ссылка
            Володя
            20 февраля 2017, 18:23
            0
            да, там действительно нет инициализации. Сложно сказать почему, если есть возможность скиньте доступ к админке, посмотрю. И вот это странно
            <meta charset="[(modx_charset)]">
            хотя в футере AjaxForm инициализирован…
              Павел
              20 февраля 2017, 18:26
              0
              Добавил в скайпе.
              Сайт раньше на EVO был… может при переносе не поправили
Семён Лебедев
06 марта 2017, 14:52
0
У меня на версии Modx 2.5.5 ни в одном сайте города не подгружаются и регионы только страны. С чем это связано? Даже на версии php 7 ни чего не подгружается. Переустанавливать пробовал.
    Володя
    06 марта 2017, 15:01
    +1
    У меня на версии Modx 2.5.5 ни в одном сайте города не подгружаются и регионы только страны. С чем это связано?

    куда не подгружаются? В админку? в модалку при запросе?
    У меня и там и там работает, ошибок не вижу.
      Семён Лебедев
      06 марта 2017, 17:48
      0
      Пункты загрузка регионов и загрузка городов.
      В ветке уже есть похожие комментарии.

      Страны подгружаются, а города и регионы нет.
        Володя
        06 марта 2017, 18:18
        0
        В ветке уже есть похожие комментарии.
        не вижу ничего подобного, оставляйте всегда ссылку — так будет сразу понятно про что вы имеете ввиду. Читать всю ветку комментов нет ни времени ни желания.
        Страны подгружаются, а города и регионы нет.
        В любом случае когда вы пытаетесь решить проблему стоит подробнее ее описывать. Можно приложить скрины и тд и тп.
        Иногда проблема настолько мелкая и решить ее быстро, но вот понять в чем она и где на… на это порой тратится столько времени.

        Можно скинуть в личку доступы к админ панели и я постараюсь выяснить в чем дело.
        Можно постараться повторить ситуацию на тестовом сайте modhost.pro/ и скинуть доступы к нему.
        Спасибо!
          Семён Лебедев
          03 апреля 2017, 18:11
          0
          Решил пробовать другой сниппет, но он периодически выдает ошибка и нагрузку на сервер.
          Поэтому возвращаюсь к вопросу.
          Я пробовал загрузить города и регионы на 5-ти и они ни на одном не загрузились.


          С чем это может быть связано?
          Если вы готовы посмотреть в админ панели я могу скинуть доступ по почте.
          Если что вот моя почта: simox@inbox.ru
          Буду премного благодарен )
          Андрей Черепанов
          07 июня 2017, 17:57
          0
          Здравствуйте!
          У меня такая же проблема, как и у Семёна Лебедева
          В админке загружается информация только о странах, а о регионах и городах — нет.
          Пробовал на разных сайтах modhost.pro.
          Вот тестовый сайт
          s9877.h8.modhost.pro/manager/
          s9877
          0TJyG59Hkh6E
          там тоже не работает
            Семён Лебедев
            07 июня 2017, 18:03
            0
            Нет я не получилось, пока временно на это забил, но если бы сниппет норм работал было бы здорово. Возможно мы что-то упускаем.
            У меня на всех сайтах ничего кроме стран не грузилось.
              Андрей Черепанов
              07 июня 2017, 18:10
              0
              а хостеры разные?

              upd,
              пробовал на webhost1.ru та же самая проблема
              Володя
              07 июня 2017, 18:13
              0
              города загружаются для регионов, регионы для стран…
              сначала активируете нужные страны и загружате регионы, затем активируете регионы и загружаете города.
              Помоему ничего сложного.
                Андрей Черепанов
                07 июня 2017, 18:20
                +1
                Потрясающе!
                Спасибо за просвещение!
                Закидываю донат!
                Семён Лебедев
                07 июня 2017, 18:59
                +1
                Спасибо, это ответа я и ждал попозже проверю )
                Семён Лебедев
                07 июня 2017, 21:08
                0
                Проверил, всё действительно оказалось проще ))
                adminixi
                22 июля 2018, 07:54
                0
                Добрый день.

                В админке страны Europe/Moscow — загружено, регионы Europe/Moscow — тоже, все активировано, но города не загружаются.
                MODX Revolution 2.6.5-pl
                В чем ошибка?
Юрий
16 марта 2017, 14:12
0
Подскажите, а как GeoLocation подружить с msPointsIssue?
    Володя
    16 марта 2017, 14:42
    1
    +1
    расчет цены продукта указать параметр pointId 1
    [[!AjaxSnippet?
          &snippet=`msPointsIssue.product.cost`
          &delivery=`68`
          &pointId=`1`
          &as_target=`.mspointsissue-product-cost`
    ]]
    корзина указать параметр pointLocation
    [[!msPointsIssue.Order?
    &elements=`msOrder`
    &tpl=`msAll.order`
    &pointLocation=`1`
    ]]
Николай
11 апреля 2017, 20:58
0
Здравствуйте, установил компонент, но все названия стран и регинов это знаки вопроса ????????, явно буквы заменились на знак вопроса, как исправить?
    Володя
    11 апреля 2017, 21:00
    0
    Добрый вечер. Явно проблемы с кодировкой бд.
      Николай
      11 апреля 2017, 21:19
      0
      вижу что созданные таблицы для модуля имеют кодировку latin1_swedish_ci
      как исправить проблему?
      хотя весь сайт: utf8_general_ci
Sergey
04 мая 2017, 18:09
0
Здравствуйте. Проблема. Не редиректит после выбора города.
Поставил чистый MODX, установил пакет и города.
Скажите пожалуйста в чем может быть проблема, куда «копать»?
Ivanov Alexandr
28 мая 2017, 22:01
0
Спасибо за нужное дополнение. Возникла проблема с тем что после выбораа города не хочет переадресовывать на страницу которую выбрал для города. Не могли бы вы помочь?
Константин
14 июня 2017, 02:43
0
При установке возникает следующая ошибка:
Trying to download sxgeocity. Please wait...
Error HY000 executing statement: Array ( [0] => HY000 [1] => 2006 [2] => MySQL server has gone away ) 
Error HY000 executing statement: INSERT INTO `modx_session` (`id`, `access`, `data`) VALUES ('cjtbnkq5dspj1gutiufgrr4ja1', 1497397299, 'modx.user.contextTokens|a:1:{s:3:\"mgr\";i:1;}modx.mgr.user.token|s:52:\"modx59406c85322492.08125157_159406ca6cb69f8.32650469\";modx.mgr.session.cookie.lifetime|i:0;modx.mgr.user.config|a:0:{}') Array ( [0] => HY000 [1] => 2006 [2] => MySQL server has gone away )
Подскажите в чём может быть беда?
    Константин
    14 июня 2017, 03:10
    0
    Это ошибку победил, теперь установка виснет на:
    Trying to download sxgeocity. Please wait...
      Володя
      14 июня 2017, 09:41
      0
      очевидно не установка не укладывается в таймауты
Konstantin
19 июня 2017, 16:23
0
Володя
Не думали о том, чтобы сократить количество js и css файлов, которые подключаются для работы компонента?
gl/css/web/default.css
gl/vendor/colorbox/example1/colorbox.css
gl/vendor/select2/dist/css/select2.min.css

gl/js/web/default.js
gl/vendor/colorbox/i18n/jquery.colorbox-ru.js
gl/vendor/colorbox/jquery.colorbox-min.js
gl/vendor/select2/dist/js/i18n/ru.js
gl/vendor/select2/dist/js/select2.min.js
Почти во всех дополнениях для оформления из коробки используется Bootstrap. Было бы очень удобно, если бы GeoLocation также использовал Bootstrap. Что думаете?
    Володя
    19 июня 2017, 16:52
    0
    Было бы очень удобно
    Аналогичное мнение, было бы очень удобно.
    Не всегда действующий функционал пишется как мне того хочется, а по желанию заказчика…

      Konstantin
      19 июня 2017, 17:01
      0
      Сколько будет стоить реализация?
        Володя
        19 июня 2017, 17:31
        0
        5 000 руб
          Konstantin
          19 июня 2017, 17:52
          0
          Согласен. Что нужно сделать? Куда платить?
Сергей
19 июня 2017, 18:55
0
Добрый день!
Поддержку прошлых ораторов, чисто теоретически можно сделать и через модификаторы, но почему если город есть в списке, то предлагает не его выбрать а тот, что по умолчанию? И автоматически не определяет его, хотя параметр
[gl.real.city.name_ru] работает как часы.
    Володя
    19 июня 2017, 19:11
    0
    Добрый вечер.
    Не могу сказать, попробуйте вызвать сниппет некешированным.
      Сергей
      19 июня 2017, 19:44
      0
      Он и так выводиться не кешированным
        Сергей
        20 июня 2017, 08:55
        0
        Что бы было понятно, как я проверяю, добавляю свой регион, в котором я нахожусь, по умолчанию другой регион. Захочу с компьютера, на котором не разу не посещал сайт и он меня спрашивает, ваше регион? и показывает не мой, а тот, что «по умолчанию». все сниппеты вызываются не кешированными. Может кто сталкивался и нашел решение проблемы?
    Евгений
    02 ноября 2017, 11:49
    0
    У меня почему-то определяет, что я в Астрахани. Хотя тот же 2ip определяет город корректно. У вас не было такой ситуации?
Ринат
26 июня 2017, 12:09
0
Добрый День! Подскажите, а возможно ли реализовать вывод товаров в зависимости от выбранного города и как это можно сделать. Для вывода товаров использую msProducts
    Володя
    26 июня 2017, 14:02
    +2
    Привет.
    а возможно ли реализовать вывод товаров в зависимости от выбранного города
    возможно…
    как это можно сделать
    самое простое забить у товара поле город и выводить товары фильтрую по данному полю.
      Ринат
      26 июня 2017, 14:39
      0
      Я наверно не совсем правильно поставил вопрос, я имею ввиду, можно ли как то привязывать товары к городам именно в GeoLocation? Вариант с дополнительным полем впринципе тоже подошел бы если к примеру в условии выборки сравнивать его значение со значением выбранного города, но если честно не знаю как это сделать, с чем именно сравнивать и не уверен что вообще так будет работать
        Володя
        26 июня 2017, 14:54
        +1
        можно ли как то привязывать товары к городам именно в GeoLocation
        нет, можно сделать написав плагин для подгрузки комбика к товару…
        либо писать название города просто в текстовое поле.

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

        Если у вас не хватает знаний это реализовать попробуйте разместить объявление о работе modx.pro/work/
rkt777
16 июля 2017, 02:34
0
Здравствуйте! Подскажите как добавить (и вообще возможно ли) дополнительное поле с телефоном. В большинстве случаев просто используются два типа номера — городской и мобильный. Попытался редактировать файлы gl.mysql.schema.xml, gl.class.php, data.map.inc.php и при изменении последнего все летит.
    Володя
    16 июля 2017, 11:15
    +1
    Добрый день.
    СУдя по таблице github.com/vgrish/gl/blob/master/core/components/gl/model/schema/gl.mysql.schema.xml#L99-L111
    я уже добавлял кучу полей, создайте настройку
    gl_fields_window_data и пропишите в ней
    id,default,class,resource,identifier,image,phone,phone_add,email,address,active,name_alt
    и у вас будет два поля с телефоном
      rkt777
      17 июля 2017, 03:24
      0
      Добрый день! Спасибо за направление: создал настройку — телефон появился, но каким плейсхолдером его вызывать я так и не понял. По комментариям выше создал аналогичную настройку с добавлением add1,add2,add3 и собственно номер теперь указывается через доп. поле, хотя ваш вариант более эстетичнее.
        Володя
        18 июля 2017, 09:42
        0
        но каким плейсхолдером его вызывать я так и не понял.

        аналогично другим плейсхолдерам. Тестировать лучше в анонимном режиме браузера. так как данные дергаются один раз и пишутся в сессию, затем берутся отттуда. Скорее всего с этим связана ваша проблема.
Denis
24 августа 2017, 02:10
0
Приветствую.
Как все же отключить или удалить это регион по умолчанию?
Чтобы при определение региона отображались его реальные данные, а не По умолчанию.
    Володя
    24 августа 2017, 14:40
    0
    Привет.
    Немного подумать. Например создать плагин на событие OnHandleRequest с приоритетом -1
    /* check context */
    if ($modx->context->key == 'mgr') {
        return;
    }
    /** @var gl $gl */
    if (!$gl = $modx->getService('gl', 'gl',
        $modx->getOption('gl_core_path', null, $modx->getOption('core_path') . 'components/gl/') . 'model/gl/')
    ) {
        return 'Could not load gl class!';
    }
    $gl->initialize($modx->context->key);
    if (empty($gl->opts['check'])) {
        $gl->opts['real'] = $gl->opts['current'] = $gl->getRealData();
        $gl->opts['check'] = true;
    }
Евгений швелев
14 сентября 2017, 15:18
0
Доброго времени! Почему не определяется реальный город при первом посещении страницы? А всегда показывает ваш город по умолчанию? Эта функция вообще работает?Пробовал на разных Modx. Как при первом запуске поместить реальный город в сплывающее окно, а при нажатии ДА записывать в current? Пробовал при помощи сессии поместить реальный город при загрузке страницы в current но в итоге реальный город появляется после того как несколько раз обновить страницу
Сергей Кепкин
02 октября 2017, 10:15
0
Подскажите, можно ли выбор города сделать без перезагрузки страницы? Кроме того, что переписывается ключ в сессии, что еще меняется при этом? Как это будет выглядеть на странице товара и на странице корзины?
    Володя
    02 октября 2017, 10:35
    +1
    Подскажите, можно ли выбор города сделать без перезагрузки страницы?
    вызвать сниппет gl.modal с параметром
    &pageReload=`0`
    Кроме того, что переписывается ключ в сессии, что еще меняется при этом?
    ничего.
    Как это будет выглядеть на странице товара и на странице корзины?
    как и на любой другой странице
      Сергей Кепкин
      02 октября 2017, 10:40
      0
      А тогда зачем сам релоад был задуман?
        Володя
        02 октября 2017, 10:51
        +1
        Перезагрузить страницу и показать данные соответствующие новой локации.
          Сергей Кепкин
          02 октября 2017, 13:33
          0
          Ок, а каким параметрам нужен новый ключ из сессии?? На странице товара понятно — город он и есть город, а в корзине? Хотелось бы на странице корзины обновлять стоимость доставки с учетом вновь выбранного города без перезагрузки самой страницы.
            Володя
            02 октября 2017, 14:55
            +1
            Хотелось бы на странице корзины обновлять стоимость доставки с учетом вновь выбранного города без перезагрузки самой страницы
            а это уже совсем другая история…
Sibic
02 октября 2017, 13:42
0
Подскажите каким образом можно ограничить реальную геопозицию? Мне нужно чтобы определялась геопозиция только пользователей крупных городов Москва Питер Новосибирск а остальным подставлялся г Москва.
    Володя
    02 октября 2017, 14:57
    0
    Плагин вроде этого modx.pro/components/7294-gl-geo-location/#comment-85971
    только с приоритетом > =1
    в нем смотрите локацию и если она не соответствует вашим требованиям заменяете на то что нужно
    Сергей Кепкин
    02 октября 2017, 21:10
    0
    Ну так вытащите id этих крупных городов в свой список и проверяйте, если не совпадает, то Москва. например для Питера это =498817, Новосиб = 1496747, Москва =524901
Sibic
02 октября 2017, 19:46
0
Владимир, можете подсказать как в нем смотреть локацию?
    Володя
    02 октября 2017, 20:46
    0
    Код в примере более чем очевиден. Я на данный момент не располагаю временем, есть раздел modx.pro/work/
    разместите предложение о нужной вам помощи там.
    Если вам прям горит — могу завтра помочь за 1 тр. Кидаете вот тут yasobe.ru/na/vgrish и пишите в личку.
    Спасибо за понимание.
      Евгений швелев
      04 октября 2017, 16:29
      0
      привет! а можете ответить на мой вопрос? функция определения города работает при первом посещении? или это только у меня не работает
        Сергей Кепкин
        04 октября 2017, 20:58
        0
        Вот ответ и не е** мозга!:
        <span class="gl-current-select">[[!+gl.current.city.name_ru:is=`По умолчанию`:then=`[[!+gl.real.city.name_ru]]`:else=`[[!+gl.current.city.name_ru]]`]]</span>
          Евгений швелев
          05 октября 2017, 12:42
          0
          Ну далее? как потом? если пользователь захочет сменить город? будет все время реальный показывать. Мне нужно записать реальный город в сессию current. И по логике как написано так и должно работать по у молчанию а у меня не работает
            Сергей Кепкин
            05 октября 2017, 14:19
            0
            Будет показывать то что выбрано! В сессию как раз и запишется то что выбрано, ты весь код рассмотрел или только то что видно? там ползунок… Этот код приводил выше разработчик. у меня все пашет.
            На край смотри чо в сессии!
              Евгений швелев
              05 октября 2017, 17:08
              0
              Самый умный что ли?)) Вот ветка комментариев где эта проблема изложена и она не у меня одного. вот еще комментарий по данному вопросу. Да действительно если выводить параметр real то будет определение города — это работает, но при смене города так и будет реальное место положение а не выбранное так как выбранное храниться в current. А теперь объясни как твой код решает данную проблему? если там условие на проверку по умолчанию а по умолчанию будет всегда так как не определяется город реальный при заходе на сайт а подставляется всегда по умолчанию. тут Володя подсказал что можно записать в сессию реальное место положение при первом посещении сайта и это работает, только опять же в моем случае это плагином не работало, какой бы я приоритет не ставил — только если загрузить страницу и следом обновить — только потом подставляется реальный город, если он есть в списке. Данный вопрос решил изменением в файле glonhandlerequest.class.php там получаю массив id городов и при условии если есть реальный город в списке, записываю в сессию и вывожу данные города. И вопрос я задал не тебе, я просто спросил работает ли данная функция или только у меня не все ладно
                Сергей Кепкин
                05 октября 2017, 17:43
                0
                Да как бы код не мой как бы, а как бы Володя его выше приводил как бы.
                А насчет самый умный — да, так и есть, в народе именно так и говорят про меня.
                И как бы ты спросил работает или нет — я ответил — да, у меня работает. А приведенный код для понятного показа того, что выбрано, а что не выбрано, сама сессия пишется исправно! Вопрос только в выводе из неё информации.
                Сергей Кепкин
                06 октября 2017, 12:36
                0
                а, дядь, смотри! вот еще что я применяю, в файл default.js из папки /assets/components/gl/js/web добавь внизу пару штрихов!!!)
                Было:
                $(document).on('gl_action', function (e, action, data, response) {
                	//console.log(action, data, response);
                });
                Стало:
                $(document).on('gl_action', function (e, action, data, response) {
                	var name_city_new = response['object']['current']['city']['name_ru'];
                	$('.gl-current-select').text(name_city_new);
                });
                  Евгений швелев
                  07 октября 2017, 22:28
                  0
                  при первом посещении в сессию current у меня записывается город по умолчанию, а не реальный который есть в списке и должен там быть. собственно данный скрипт если я правильно понимаю, будет записывать по умолчанию в элемент с классом .gl-current-select. а нужно чтоб был реальный город
                Александр
                07 октября 2017, 11:54
                0
                Поделитесь пожалуйста решением, а то у меня такая же беда, подхватывает только после обновления страницы
                  Евгений швелев
                  07 октября 2017, 22:14
                  0
                  найдите и откройте этот файл core/components/gl/model/gl/systems/glonhandlerequest.class.php начиная с 22 строки есть такой код
                  if (empty($this->gl->opts['check'])) {
                              $this->gl->opts['real'] = $this->gl->getRealData();
                              $this->gl->opts['current'] = $this->gl->getDefaultData();
                              $os = array('542415','524894','524925','498671','578853','2017623');
                              $reg = $_SESSION['gl']['opts']['real']['region']['id'];
                                   if (in_array($reg, $os)) {
                                   $_SESSION['gl']['opts']['current'] = $_SESSION['gl']['opts']['real'];
                                   }
                              $this->gl->opts['check'] = true;
                          }
                  я добавил следующее
                  $os = array('542415','524894','524925','498671','578853','2017623');
                              $reg = $_SESSION['gl']['opts']['real']['region']['id'];
                                   if (in_array($reg, $os)) {
                                   $_SESSION['gl']['opts']['current'] = $_SESSION['gl']['opts']['real'];
                                   }
                  цифры это ID городов или Регионов которые у вас есть в списке, записанные в переменную os дальше идет сравнение с реальным место положением ну если ID одинаковый в current записывается реальное место положение. P/S — я не программист и в PHP практически не разбираюсь
Михаил
30 октября 2017, 19:09
1
0
Мне необходимо добавить Симферополь в города. SxGeo считает что это Украина. Я включаю Украину на вкладке «Страны». Теперь мне нужно загрузить города. Но если это сделать то пропадут все данные по городам. А у меня там по каждому городу России заполнены данные. Может есть какой-то вариант добавить город без потери данных?
Виталий
14 ноября 2017, 21:28
0
Подскажите пожалуйста, как выводить больше 10 городов в модальном окне?
    Володя
    14 ноября 2017, 23:42
    0
    limit — Ограничение количества результатов выборки.
Гарик Савинов
29 ноября 2017, 00:33
0
Добрый день.
Точно такой же вопрос как и здесь.
modx.pro/components/7294/#comment-89586
И еще если обновить приложение, то пропадают все города. (А если их очень много, то это печаль).
Как можно восстановить их после обновления? Что нужно перед обновлением сделать, чтобы их восстановить или чтобы они не пропали?
    Володя
    29 ноября 2017, 10:02
    0
    Доброе утро.
    Как можно восстановить их после обновления? Что нужно перед обновлением сделать, чтобы их восстановить или чтобы они не пропали?
    такой возможности нет.
Виталий
22 декабря 2017, 15:34
0
Скажите можно ли как-то сделать, что при указании данных (адрес, телефон) с классом «Регион», они применялись ко всем городам региона? Т.е указали номер телефона для Воронежской области и они выводятся и для Воронежа и для других городов области
    Володя
    22 декабря 2017, 16:55
    0
    плагин на OnHandleRequest и там выставляете нужные вам данные.
      Виталий
      25 декабря 2017, 11:15
      0
      я просто думал эта логика из коробки в методе getCurrentData (core/components/gl/model/gl/gl.class.php). Если нет данных для города, берем данные для региона, если нет для региона берем для страны… или нет?

      ...
                      case 'glCity':
                          if ($city = $this->getObjectData('glCity', array('id' => $id))) {
                              $data['city'] = $city;
                          }
      
                          if (
                              !empty($city)
                              AND
                              $regionId = $this->modx->getOption('region_id', $city)
                              AND
                              $region = $this->getObjectData('glRegion', array('id' => $regionId))
                          ) {
                              $data['region'] = $region;
                          }
      
                          if (
                              !empty($region)
                              AND
                              $countryId = $this->modx->getOption('country', $region)
                              AND
                              $country = $this->getObjectData('glCountry', array('iso' => $countryId))
                          ) {
                              $data['country'] = $country;
                          }
      
      ...
        Володя
        25 декабря 2017, 11:21
        0
        Если честно то я не помню. Поднимите тестовый сайт, проверьте.
          Виталий
          26 декабря 2017, 08:55
          0
          Уже разобрался, из коробки такой логики нет, пришлось переписать getCurrentData, добавить условия:

          if ($this->getObjectData('glData', array('identifier' => $id, 'class' => 'glCity'))) {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => 'glCity'));  
                              } elseif ($this->getObjectData('glData', array('identifier' => $regionId, 'class' => 'glRegion'))) {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $regionId, 'class' => 'glRegion'));
                              } else {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $countryId, 'class' => 'glCountry'));
                              }
          полная версия:

          public function getCurrentData($id = 0, $class = 'glCity')
              {
                  /* array cache $options */
                  $options = array(
                      'cache_key' => 'gl/data/' . $class . '/' . $id,
                      'cacheTime' => 0,
                  );
          
                  if (!$data = $this->getCache($options)) {
                      
                      $data = array();
                      
                      switch ($class) {
                          case 'glCountry':
                              if ($country = $this->getObjectData('glCountry', array('id' => $id))) {
                                  $data['country'] = $country;
                              }
                              
                              $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => $class));
          
          
                              break;
                          case 'glRegion':
                              if ($region = $this->getObjectData('glRegion', array('id' => $id))) {
                                  $data['region'] = $region;
                              }
          
                              if (
                                  !empty($region)
                                  AND
                                  $countryId = $this->modx->getOption('country', $region)
                                  AND
                                  $country = $this->getObjectData('glCountry', array('iso' => $countryId))
                              ) {
                                  $data['country'] = $country;
                              }
          
                              if ($this->getObjectData('glData', array('identifier' => $id, 'class' => 'glRegion'))) {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => 'glRegion'));
                              } else {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $countryId, 'class' => 'glCountry'));
                              }
          
                              break;
                          case 'glCity':
                              if ($city = $this->getObjectData('glCity', array('id' => $id))) {
                              $city = $this->getObjectData('glCity', array('id' => $id));
                                  $data['city'] = $city;
                              }
                              if (
                                  !empty($city)
                                  AND
                                  $regionId = $this->modx->getOption('region_id', $city)
                                  AND
                                  $region = $this->getObjectData('glRegion', array('id' => $regionId))
                              ) {
                                  $data['region'] = $region;
                              }
          
                              if (
                                  !empty($region)
                                  AND
                                  $countryId = $this->modx->getOption('country', $region)
                                  AND
                                  $country = $this->getObjectData('glCountry', array('iso' => $countryId))
                              ) {
                                  $data['country'] = $country;
                              }
          
                              if ($this->getObjectData('glData', array('identifier' => $id, 'class' => 'glCity'))) {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => 'glCity'));  
                              } elseif ($this->getObjectData('glData', array('identifier' => $regionId, 'class' => 'glRegion'))) {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $regionId, 'class' => 'glRegion'));
                              } else {
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $countryId, 'class' => 'glCountry'));
                              }
          
                              break;
                          default:
                              $data = array();
                              break;
                      }
                      if ($this->modx->getOption('gl_isprocess_data', null, true, true)) {
                          $data = $this->processData($data);
                      }
          
                      $this->setCache($data, $options);
                  }
                  return $data;
              }
          К сожалению как оформить это, по человечески, в виде плагина не знаю
            Виталий
            26 декабря 2017, 10:17
            0
            и почему-то не работает, если данные для города надо подтянуть из данных для страны
              Виталий
              26 декабря 2017, 11:43
              0
              немного поправил где надо вернуть данные для страны вместо

              $data['data'] = $this->getObjectData('glData', array('identifier' => $countryId, 'class' => 'glCountry'));
              нужно
              $data['data'] = $this->getObjectData('glData', array('identifier' => $countryIdTemp, 'class' => 'glCountry'));
              где $countryIdTemp = $this->modx->getOption('id', $country);

              вот полный код:
              public function getCurrentData($id = 0, $class = 'glCity')
                  {
                      /* array cache $options */
                      $options = array(
                          'cache_key' => 'gl/data/' . $class . '/' . $id,
                          'cacheTime' => 0,
                      );
              
                      if (!$data = $this->getCache($options)) {
                          
                          $data = array();
                          
                          switch ($class) {
                              case 'glCountry':
                                  if ($country = $this->getObjectData('glCountry', array('id' => $id))) {
                                      $data['country'] = $country;
                                  }
                                  
                                  $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => $class));
              
              
                                  break;
                              case 'glRegion':
                                  if ($region = $this->getObjectData('glRegion', array('id' => $id))) {
                                      $data['region'] = $region;
                                  }
              
                                  if (
                                      !empty($region)
                                      AND
                                      $countryId = $this->modx->getOption('country', $region)
                                      AND
                                      $country = $this->getObjectData('glCountry', array('iso' => $countryId))
                                  ) {
                                      $data['country'] = $country;
                                      $countryIdTemp = $this->modx->getOption('id', $country);
                                  }
              
                                  if ($this->getObjectData('glData', array('identifier' => $id, 'class' => 'glRegion'))) {
                                      $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => 'glRegion'));
                                  } else {
                                      $data['data'] = $this->getObjectData('glData', array('identifier' => $countryIdTemp, 'class' => 'glCountry'));
                                  }
              
                                  break;
                              case 'glCity':
                                  if ($city = $this->getObjectData('glCity', array('id' => $id))) {
                                  $city = $this->getObjectData('glCity', array('id' => $id));
                                      $data['city'] = $city;
                                  }
                                  if (
                                      !empty($city)
                                      AND
                                      $regionId = $this->modx->getOption('region_id', $city)
                                      AND
                                      $region = $this->getObjectData('glRegion', array('id' => $regionId))
                                  ) {
                                      $data['region'] = $region;
                                  }
              
                                  if (
                                      !empty($region)
                                      AND
                                      $countryId = $this->modx->getOption('country', $region)
                                      AND
                                      $country = $this->getObjectData('glCountry', array('iso' => $countryId))
                                  ) {
                                      $data['country'] = $country;
                                      $countryIdTemp = $this->modx->getOption('id', $country);
                                  }
              
                                  if ($this->getObjectData('glData', array('identifier' => $id, 'class' => 'glCity'))) {
                                      $data['data'] = $this->getObjectData('glData', array('identifier' => $id, 'class' => 'glCity'));  
                                  } elseif ($this->getObjectData('glData', array('identifier' => $regionId, 'class' => 'glRegion'))) {
                                      $data['data'] = $this->getObjectData('glData', array('identifier' => $regionId, 'class' => 'glRegion'));
                                  } else {
                                      $data['data'] = $this->getObjectData('glData', array('identifier' => $countryIdTemp, 'class' => 'glCountry'));
                                  }
              
                                  break;
                              default:
                                  $data = array();
                                  break;
                          }
                          if ($this->modx->getOption('gl_isprocess_data', null, true, true)) {
                              $data = $this->processData($data);
                          }
              
                          $this->setCache($data, $options);
                      }
                      return $data;
                  }
              сильно не пинайте, в php нуб) но лучше конечно плагин
                Володя
                26 декабря 2017, 14:12
                +1
                сильно не пинайте, в php нуб) но лучше конечно плагин
                учитесь… читайте данный ресурс, тут есть множество примеров, в том числе и с плагинами.
                Maks
                04 июля 2018, 01:02
                0
                Идеально, работает спасибо. Файл где надо менять /core/components/gl/model/gl/gl.class.php
Александр
22 декабря 2017, 23:41
0
Здравствуйте, Володя. Скажите, как можно объединить 2 ваших дополнения: GeoLocation (для создания разных регионов и указания им разных данных, напр., контактных) и msOptionsPrice2 (для создания разных опций товаров и указания им соответственно разных цен). Идея такая: чтобы в msOptionsPrice2 появился новый «модификатор» Город/Регион, наравне с color, size и др. Отличие лишь в том, что этот параметр нельзя изменить в карточке товара, а он устанавливается в 1 месте на весь сайт.
Если у товара в модификациях только 1 регион, то этот товар отображать только в этом регионе.
Если у товара несколько регионов, то отображать в этих регионах, а в других скрывать.
Если у товара не указан регион, то отображать во всех.
Виталий
27 декабря 2017, 12:40
0
del
pustota
14 января 2018, 23:03
0
Володя, не сразу разобрался снаскока. Подскажите, в чем может быть проблема?
Установил компонент, загрузил базы — все нормально. Хочу сделать вывод не через модальное окно. В итоге у меня к полю select не цеплялся стиль от select2. Я его принудительно вызвал, стиль поменялся. Но когда я ввожу в поле курсор, у меня в выпадающем списке только одно поле «No results found». При этом в консоле никакие ajax запросы не идут. Убираю принудительный вызов и ставлю чтобы работал через модальное окно — всё пашет.
Что нужно сделать? Пытался самостоятельно разобраться, есть подозрение, что обработчик фокуса работает только в обертке каких-то определенных классов. Подскажите, или какой скрипт за это отвечает?
Ника
18 января 2018, 17:41
0
Добрый день!
Можно ли определить местоположение (улицу и №дома) пользователя сайта.
На основе этих данных вывести магазины наиболее близкие к нему?
    Володя
    18 января 2018, 18:06
    0
    Добрый.
    Нет.
Сергей
30 января 2018, 18:38
0
Здравствуйте, подскажите, почему может возникать такая ошибка при установке? Пробовал мудрить с кодировками типа utf8mb4 и так далее, ничего не помогло… на сервере стоит просто LAMP, php 7.1, версия modx 2.6.1-pl
При этом, Страны не загружаются и разумеется дальше ничего не работает ((( Хотя сама форма отображается на сайте, всё ок… (


Виталий
29 апреля 2018, 15:34
0
Добрый день! Подскажите, как выводить в списке городов модального окна не все загруженные, а только те города, которые я добавил на вкладке «Данные»?

Здесь нужно указать другой класс?
<ul class="gl-change-list">
                [[!gl.location?
                &class=`[[+class]]`
                &where=`{"default":0}`
				&limit=`30`
                ]]
            </ul>
Илья Александрович
29 апреля 2018, 16:47
0
Добрый день!
Требуется сделать всё что может данный модуль через
<select>
  <option>Москва</option>
  <option>Санкт-Петербург</option>
</select>
Т.е. модальное окно не нужно вообще.
Ну и при выборе то или иного меняется номер телефона, адрес
Как это реализовать, помогите пожалйуста.
Василий Столейков
14 мая 2018, 15:42
1
-2
Очень не хватает колонки menuindex для стран, регионов и городов. Это нужно для кастомного вывода и сортировки на фронте сайта.
Получится добавить эту возможность в пакет?
    Володя
    14 мая 2018, 17:59
    0
    Возможно когда будет нечем заняться или потребуется такая возможность.
    Вы можете сделать это самостоятельно и прислать PR.
Alexander Ostroushko
18 мая 2018, 13:50
0
Добрый день. При вызове скрипта. Модальное окно пустое. Ошибок нету, Не один город не выводится. Подскажите в чем проблема prnt.sc/jjh2sp
Дмитрий
22 июня 2018, 17:26
0
Добрый день. Подскажите пожалуйста перенес сайт на другой хостинг, и теперь почти все ip Москвы определяет как Маунтин-Вью.
Ника
26 июня 2018, 09:40
0
Здравствуйте!
Подскажите, пожалуйста, как я могу вывести определенные города в форме выбора города?!
Вывести Таганрог, Азов, Новочеркасск.
Но, чтоб при поиске все города работали по прежнему
    Maks
    04 июля 2018, 08:38
    0
    Чтобы вывести определенные города можно сделать так

    [[!gl.location?
    &class=`[[+class]]`
    &limit=`30`
    &where=`{«id:IN»:[1486209,524901,1488754,1496747,479561,1508291,542420]}`
    ]]

    где 1486209 — это id городов
Александр
28 июня 2018, 16:59
0
Приветствую, подскажите почему то не выводится адрес [[!+gl.current.data.address]]

в админке ставлю галочку перед полем адрес, а после того как нажимаю сохранить и опять захожу назад, то галочки уже нет. Ставлю снова, открывается доп. поле, и адрес там уже введен. Но как только нажимаю сохранить то галочка переде «адрес» пропадает (((
Илья
04 июля 2018, 15:16
0
Здравствуйте, а есть возможность добавить почтовые индексы городов? если да то как?
Александр
21 июля 2018, 11:46
0
приветствую как отключить модальное окно но чтобы модуль работал?
Oleg
05 сентября 2018, 22:08
0
Компонент исправен? При установке у меня пишет «Unable to find End of Central Dir Record signature», и не распаковывает colorbox и 2 ещё каких-то (не запомнил) архива. Разумеется, после этого компонент не работает.
    Володя
    06 сентября 2018, 09:11
    0
    проверьте на тесте modhost.pro
    у меня все корректно установилось и работает.
Oleg
14 сентября 2018, 15:02
0
Подскажите, как можно импортировать данные в поля из excel файла/xml/из других источников? Например, загрузить телефоны/email для 100 регионов
    Володя
    14 сентября 2018, 15:41
    0
    в компоненте нет такой реализации. Выход написать скрипт который зальет данные из xml в регионы.
Pavel Zarubin
14 сентября 2018, 16:17
0
В последней версии ошибочка в glregion.map.inc.php из за чего поиск по имени ломается:
github.com/vgrish/gl/blob/master/core/components/gl/model/gl/mysql/glregion.map.inc.php#L36-L51
phptype должен быть string
adminixi
16 сентября 2018, 14:07
0
Добрый день!
Как решить такую проблему:

При выборе посетителем города по умолчанию, данные адреса и телефона не показываются.

Т.е человек заходит на сайт, видит данные (по умолчанию) и окно выбора городов, если он выбирает тот же город, что показывается по умолчанию — то все данные тут же пропадают.

Скрин кода
    Денис
    14 октября 2018, 17:11
    0
    Такая же проблема с полем Адрес… При сохранение данных галочка отключается…
Илья
17 сентября 2018, 15:47
0
Доброго времени суток, коллеги.

Подскажите пожалуйста есть ли возможность обращаться к gl.selected.city.name_ru и им подобным переменным используя феном?

Вызов на феноме
{set $city=$_modx->runSnippet('!gl.modal')}
, но при обращении $city.selected.city.name_ru или просто к $gl.selected.city.name_ru получаю пустоту.

{$city|print_r} выдаёт 1…

UPD: Прошу прощения, увидел комментарием выше, {$_modx->getPlaceholder('gl.real.city.name_ru')}.
Лена
13 октября 2018, 21:27
0
Здравствуйте!
Столкнулась с такой ситуацией:

определение геолокации как-будто бы работает/не работает в зависимости от интернет провайдера. Не знаю как такое может быть, но с мобильного интернета теле2 — местоположение определяется правильно, Санкт-Петербург. С другого провайдера — city telecom, [[!+gl.real.region.name_ru]] постоянно выдаёт Москву. Проблема проявилась ещё и в другом регионе, и при попытках проверять через прокси.

Для интереса заходила на другие сайты с наличием геолокации (сделанные не на modx) — где-то определение правильно, а где-то опять Москва.

На location.vgrish.ru/index.php?id=7 такая же ситуация. С сити телеком — Москва, с теле2 — правильное определение.

Наверное вопрос не совсем сюда, т.к. сам компонент отличный и работает отлично.
Но возможно Вы или ещё кто-нибудь сможет подсказать в каком направлении мне искать.
Заранее спасибо.