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

[GeoLocation] — компонент реализует функционал геолокации. Используется библиотека SxGeo.
Изменения:
— доработан функционал выбора по умолчанию
— добавлены поля «ресурс» и «изображение»
— добавлена возможность форматирования данных
— добавлена работа c INLINE чанками

выбор по умолчанию
в чанк tpl.gl.modal добавлен вызов значения по умолчанию
<ul class="gl-default-list" style="display: none;">
[[!gl.location?
	&class=`[[+class]]`
        &where=`{"name_ru":"[[+gl.current.city.name_ru]]"}`
]]
</ul>
вы можете как и прежде использовать для подтверждения значение по умолчанию, а можете установить реальное местоположение пользователя.

поля «ресурс» и «изображение»
Добавлены поля «ресурс» и «изображение»

так же в дефолтный js добавлен переход на страницу ресурса при выборе локации, если ресурс не установлен то страничка просто перезагружается как и прежде.
$(document).bind('gl_select', function(e, data, response) {
	$.colorbox.close();
        if (response.object.current.data['resource_url'] != '') {
        	document.location.href = response.object.current.data['resource_url'];
        }
        else {
                location.reload();
        }
});

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

в качестве примера добавлено поле resource_url
public function formatResourceUrl($resource = 0)
{
	$url = '';
	$args = array();
	if (!empty($resource)) {
		$url = $this->modx->makeUrl($resource, '', $args, 'full', array('xhtml_urls' => false));
	}
	return $url;
}

вывод всех городов России
С помощью pdoResources
[[!pdoResources?
	&class=`glCity`
	&leftJoin=`{
		"glRegion": {
			"class": "glRegion",
			"on": "glRegion.id = glCity.region_id"
		}
	}`
	&select=`{
		"glCity": "*",
		"glRegion": "country"
	}`
	&showLog=`1`
	&limit=`0`
	&sortby=`glCity.id`
	&sortdir=`ASC`
	&where=`{
		"glRegion.country":"RU"
	}`
	&tpl=`@INLINE [[+country]]-[[+name_ru]]
`
]]

обновление пакета
Сей скорое обновление пакета появилось благодаря донату, за что вам спасибо!
пример работы как и прежде можно посмотреть тут — location.vgrish.ru/index.php?id=7
Код на github, создавайте isuue
Всем спасибо!
Володя
12 декабря 2015, 08:23
4
5 687
+3
Поблагодарить автора Отправить деньги

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

Адиль
12 декабря 2015, 20:02
0
А возможен ли вариант, чтоб форма выбора города не всплывала на экран, а была просто форма в которой можно выбрать город. Я знаю что можно но в Ява скрипте не так силен. Помогите кто чем может
    Володя
    12 декабря 2015, 20:32
    1
    0
    да вполне можно.
    location.vgrish.ru/index.php?id=9

    пример вызова
    [[!gl.modal?
    	&tpl=`_tpl.gl.modal`
    	&modalShow=`0`
    	&frontendJs=`[[+assetsUrl]]js/web/_default.js`
    ]]

    чанк _tpl.gl.modal
    <div class="gl-modal">
        <div class="gl-change-select" >
            <h5>Выберите Ваш город</h5>
            
            <p class="desc">
                Введите название вашего города
            </p>
            
            <div class="gl-change-input-block">
                <select name="location" value="" style="width: 100%" class="select2 " multiple>
                </select>
            </div>
    
            <ul class="gl-change-list">
                [[!gl.location?
                    &class=`[[+class]]`
                ]]
            </ul>
            
        </div>
    
    </div>

    _default.js
    добавить
    $(document).ready(function() {
         gl.location.input.load('location');
                
         if (glConfig.modalShow) {
             gl.location.modal();
         }
    });
      Павел
      01 июня 2016, 15:03
      0
      Добрый день, прошу прощения, но почему-то скрипт не работает
Артем
12 декабря 2015, 21:36
0
Какая-то беда с кодировкой в названии ресурсов

    Лев Вербицкий
    12 декабря 2015, 22:03
    +2
    Полагаю, у вас проблема с бдшкой, а именно с ее кодировкой.
    Артем
    13 декабря 2015, 07:26
    0
    Еще вызвал как в примере, выбрал город, а окно не закрывается и изменение города не происходит. ЧТЯДНТ?

      Володя
      13 декабря 2015, 09:52
      0
      смотрите в консоли браузера, наверно есть какие то ошибки…
        Артем
        13 декабря 2015, 10:41
        +1
        Ок, на тестовом сайте такая же петрушка
        s3750.h2.modhost.pro/
        s3750
        938DW01cBPjs
          Володя
          13 декабря 2015, 11:03
          +1
          понял о чем вы, это происходит когда не заданы данные для геообъекта.
          сейчас поправлю.
          Володя
          13 декабря 2015, 11:40
          +1
          готово )
            Артем
            13 декабря 2015, 12:29
            0
            Спасибо!
          Артем
          13 декабря 2015, 12:53
          0
          А от этого как избавиться? Я вроде не тупой, но я правда не понимаю логики работы.
            Василий Столейков
            13 декабря 2015, 13:05
            0
            Может нужно сперва в админке накачать все базы?
              Артем
              13 декабря 2015, 13:13
              0
              Это тестовый сайт, там все настроено и скачано
                Василий Столейков
                13 декабря 2015, 13:15
                0
                Просто у меня та же картина была и я подумал на недокачанность нужной базы.
                P.S. Моя страна Молдова.
            Володя
            13 декабря 2015, 13:20
            0
            мне вот непонятно про что вы спрашиваете.
            Картинка модального окна, избавится от чего? От окна? От вопроса? От чего?
            Старайтесь формулировать вопрос чтоб была понятна суть.
            Спасибо!
              Василий Столейков
              13 декабря 2015, 13:24
              0
              Наверное имелось ввиду пустота после тире. Если город не определился автоматом, то может туда подставить что-то типа «неизвестен» или «указать» с той же ссылкой что и на «Изменить».
              Я уже не могу показать скрин, т.к. я по вручную изменил город и он у меня сохранился по умолчанию.
              Артем
              13 декабря 2015, 13:41
              0
              При первичном заходе на страницу сайта содержащую этот программный код, происходит затемнение фона браузера и появление небольшего модального окна. В центре модального окна находится лишенный всякого смысла текст: «Ваш город — ?». Предположительно, там должен быть выбранный администратором сайта вариант местоположения по умолчанию, либо автоматически определенное местоположение, однако, пользователи из нескольких стран видят там всего лишь знак вопроса (?). Суть вопроса: как избавится от вопроса (?).
              Спасибо!
                Володя
                13 декабря 2015, 15:24
                0
                открываете чанк tpl.gl.modal
                в нем есть строчка что вам нужна
                <h5>Ваш город — <b>[[+gl.current.city.name_ru]]</b>?</h5>
                но по идее там должен выводится текст — «По умолчанию». Если есть возможность скиньте на почту доступ к админке сайта, посмотрю в чем дело.
wgame
13 декабря 2015, 15:29
0
а можно ли как то сделать чтобы по умолчанию показывалось реальное месторасположение пользователя и при смене города показывалось уже выбранное, попробовал сделать так
[[+gl.current.city.name_ru:is=``:then=`[[!+gl.real.city.name_ru]]`:else=`[[!+gl.current.city.name_ru]]`]]
но показывает по умолчанию всегда
    Володя
    13 декабря 2015, 15:32
    0
    ну так может gl.current.city.name_ru != пусто?
    Володя
    13 декабря 2015, 15:34
    0
    а так
    [[!+gl.current.city.name_ru:is=`По умолчанию`:then=`[[!+gl.real.city.name_ru]]`:else=`[[!+gl.current.city.name_ru]]`]]
      wgame
      13 декабря 2015, 15:38
      0
      да спасибо, что то про такое условие не подумал
        Володя
        13 декабря 2015, 15:39
        0
        ну и хорошо )
Дмитрий
01 февраля 2016, 19:13
0
Добрый день! Владимир, компонент отличный. Спасибо!

Есть сайт (http://bankrot1.abu-design.ru/). Сейчас реализовано несколько регионов (Москва, СПб, Архангельск) с помощью Вашего компонента. Контент (адреса, некоторые блоки информационные) при смене или определении региона меняется с помощью компонента If (проверяя выбранный город). Есть условие для региона «По умолчанию».

Суть вопроса: если регион не определиться, либо он не будет загружен в базу, то регионом станет регион «По умолчанию»?

Спасибо!
    Володя
    01 февраля 2016, 20:59
    +1
    добрый вечер.
    Суть вопроса: если регион не определиться, либо он не будет загружен в базу, то регионом станет регион «По умолчанию»?
    да, по идее так задумано.
    пожалуйста!
Александр
15 марта 2016, 18:22
0
Подскажите, как быть, если определяются не все города?
К примеру, в Красноярском крае явно не 13 городов, а определяет именно столько.
Как-то можно добавить ещё другие города?
    Володя
    15 марта 2016, 18:44
    0
    Возможно стоит добавить создание локаций вручную. Но тогда вопрос как они будут определяться если их нет в базе SxGeo? Добавлять таблицу ip и заполнять?
      Александр
      15 марта 2016, 18:57
      0
      Честно говоря, не представляю, как это реализовать (это я про таблицы ip). Как-то это сложно, по-моему.

      Я думал, в SxGeo есть что-то вроде уровней городов по величине/населению, и из-за этого не подгрузились более мелкие города.
alex
19 марта 2016, 17:08
0
Добрый день, подскажите пожалуйста в чем может быть проблема.

При переносе сайта на хостинг jino.ru — перестал определяться реальный город пользователя.
Т.е. реальное местоположение всегда равно значению `По умолчанию`
echo '
'; print_r($_SESSION['gl']); echo '<pre>'; 
массив с данными ниже
http://joxi.ru/KAg8aaBfgkv1Nr
Андрей Копп
07 апреля 2016, 01:11
0
Использую на странице сниппет [[!gl.modal]] скажите пожалуйста что нужно прописать ссылке, чтобы при клике открывалось это модальное окно? Голова что-то не соображает(
Алексей
05 июля 2016, 08:42
0
Доброго дня! Подскажите пожалуйста, возможно ли использовать данный модуль на EVO? Если нет, то есть ли возможность портировать его на данную систему, и в какую сумму это выльется? Спасибо.
Константин Ильин
02 сентября 2016, 13:51
0
Приветствую Володя!
Я больше программист, чем продвиженец, поэтому вопрос:
У меня стоит вывод города для H1. Например «Товары в г. Уфа», соответственно Уфа меняется в зависимости от геолокации. Проиндексирует ли гугл или яндекс сайт по всем городам? т.е. в выдаче например в Кирове будет писаться «Товары в г. Киров»?
    Володя
    02 сентября 2016, 15:04
    0
    Привет.
    Смотря с какого ip зайдет бот, какой город у него определится — такой и проиндексирует наверно.
KSin
12 сентября 2016, 13:06
0
Ребят, подскажите… Заметил такую неприятную особенность на сайте.
Если человек первый раз заходит на сайт, появляется модальное окно GeoLocation с ссылками «Да» и «Изменить город». Но если человек не готов еще сделать выбор и жмет на крестик, то окно закрывается. Посетитель переходит на другую страницу сайта и модальное окно GeoLocation опять появляется, жмет опять крестик и все по-новой.
Как бы сделать так, чтобы при нажатии на крестик, модальное окно больше не доставало пользователей?
    Володя
    12 сентября 2016, 13:14
    0
    Задайте параметр modalShow = 0 тогда окно не будет всплывать.
    Или обработайте закрытие окна и например установите значение по дефолту.
      KSin
      12 сентября 2016, 13:35
      0
      modalShow = 0 — тогда вообще не всплывает никогда. Так ведь?
      А как можно обработать закрытие окна?
        Володя
        12 сентября 2016, 13:52
        0
        А как можно обработать закрытие окна?
        на событие закрытия отправить например
        gl.location.select({action:'select',id:1,class:'glCity'})
          KSin
          12 сентября 2016, 13:57
          0
          А где это нужно прописать?
Сергей
26 февраля 2017, 13:56
0
Подскажите кто нибудь, пожалуйста. Как отсортировать список городов при выводе из сниппета
[[!gl.location? &sortby=`glCity.Id` &sortdir=`ASC` &limit=`0` &where=`{«default»:0}`]],
по порядковому номеру как он находится на вкладке «Данные»?
    Володя
    26 февраля 2017, 15:00
    0
    В шапке есть пример вывода с помощью pdoResources. Вам нужно только немного изменить вызов
    [[!pdoResources?
    	&class=`glData`
    	&leftJoin=`{
    	    "glCity": {
    			"class": "glCity",
    			"on": "glCity.id = glData.identifier AND glData.class = 'glCity'"
    		},
    		"glRegion": {
    			"class": "glRegion",
    			"on": "glRegion.id = glCity.region_id"
    		}
    	}`
    	&select=`{
    		"glData": "*",
    		"glRegion": "country"
    	}`
    	&limit=`0`
    	&sortby=`glData.id`
    	&sortdir=`ASC`
    	&tpl=`@INLINE [[+id]]-[[+name_alt]]`
    ]]
      Сергей
      26 февраля 2017, 15:04
      0
      Огромное спасибо)
      Sergey
      15 апреля 2019, 15:45
      0
      Как можно по умолчанию город первым в списке поставить?
raffx
12 сентября 2017, 17:44
0
Добрый день!

1. Можно-ли как-то присвоить класс к текущему городу в списке выбора городов? Что-то в этом духе:
[[!gl.location?
                &hereClass=`active` 
            ]]
2. Можно при клике на изменить город сразу выводить попап со списком городов минуя диалог «Ваш город Москва? Да Изменить»
    Володя
    12 сентября 2017, 18:06
    0
    Добрый вечер.
    Можно-ли как-то присвоить класс к текущему городу в списке выбора городов? Что-то в этом духе:
    можно в чанке tpl.gl.location поставить проверку
    <li>
        <span class="gl-list-location [[+name_ru:is=`[[!+gl.selected.city.name_ru]]`:then=`active`]]" data-id="[[+id]]" data-class="[[+class]]">[[+name_ru]]</span>
    </li>
Володя
12 сентября 2017, 18:07
0
Можно при клике на изменить город сразу выводить попап со списком городов минуя диалог «Ваш город Москва?
изменить чанк tpl.gl.modal
    raffx
    12 сентября 2017, 18:50
    0
    Спасибо большое!

    Насколько я понял, компонент умеет перенаправлять пользователя на нужную страницу при выборе города, если поле «Ресурс» указан в настройках. Я ресурс указываю, но при выборе города не происходит перенаправление на нужную страницу. Не знаете в чем может быть проблема?

    Тестирую тут: mirk-test.ci01926.tmweb.ru/

      Владимир
      12 октября 2017, 23:12
      0
      Тоже столкнулся с такой проблемой, решение описал в комментарии modx.pro/help/13518/
        raffx
        18 октября 2017, 22:40
        0
        Благодарю! Заработало :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.