new

UserLocation

Геолокация и выбор города пользователя
Автор дополнения
Володя Володин
Пакетов
43
Закачек
18 255
Обычно отвечает в течение суток
Автор дополнения
Пакетов
43
Закачек
18 255
Обычно отвечает в течение суток
Версия 1.0.4-beta
Дата выпуска 04.11.2019
Загрузки 9
Просмотры 376
Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
UserLocation

Компонент UserLocation позволяет определить локацию пользователя и вывести список доступных локаций



Особенности

— определение локации пользователя по ip
— готовая база городов и регионов России, возможность импорта/ экспорта своих локаций
— в отличие от CitySelect оперирует локациями созданными в базе данных. Позволяет добавить/ изменить нужную локацию под себя.
Установка

Подключите наш репозиторий
— Установите UserLocation
— Импортируйте файл локаций

Сниппет UserLocation.initialize

Подключает необходимые скрипты и стили. Вызвать в любом удобном месте.

Сниппет UserLocation.location

Получает список локаций

Модификаторы феном

— getUserLocation — получает текущую локацию пользователя
— detectUserLocation — получает текущую локацию пользователя по его ip

Пример вызова, текущая локация пользователя

{set $location = ''|getUserLocation}
    {$location|print}

    (
    [id] => 3300000400000
    [name] => Ковров
    [type] => city
    [postal] => 601900
    [gninmb] => 3332
    [okato] => 17425000000
    [oktmo] => 17725000
    [fias] => 0b4978e2-e64c-4db1-b84d-93cf34bdb04b
    [active] => 1
    [parent] => 3300000000000
    [resource] => 0
    [description] =>
    [properties] =>
    [confirmed] => 0
    )

Пример вызова, поповер с выбором локации

{set $location = ''|getUserLocation}

    <div class="userlocation userlocation-location-confirm {$location.confirmed?'':'unconfirmed'}">
        <a href="javascript:" data-fancybox="" data-src="#userlocation-location-popup">{$location.name}</a>
        <div class="userlocation-location-confirm-popover">
            <div>Это Ваш город?</div>
            <div>
                <a href="" class="userlocation-location-item" data-userlocation-id="{$location.id}">Да</a>
                <a href="javascript:" data-fancybox="" data-src="#userlocation-location-popup">Выбор города</a>
            </div>
            <button class="userlocation-location-confirm-close"></button>
        </div>
    </div>
    <div id="userlocation-location-popup" style="display: none">
        <h4>Выберите свой населённый пункт</h4>
        {'UserLocation.location'|snippet:[
        'typeSearch' => 'local',
        'tpl' => 'UserLocation.locations'
        ]}
    </div>

Пример вызова, инпут с выбором локации

<input type="text" class="userlocation-location-search-input "
           data-userlocation-mode="remote"
           data-userlocation-template="<div class='userlocation-suggestion userlocation-location-item' data-userlocation-row='@row@' data-userlocation-id='@id@'>@name@</div>"
           data-userlocation-value-field="name"
           data-data-type="city"
           placeholder="Поиск...">

Вывод соседних локаций

{set $location = ''|detectUserLocation}
{if $location}
    {set $tmp = '!UserLocation.location'|snippet:[
    'limit' => 1,
    'where' => ['parent:IN' => [$location.parent,$location.id],'OR:id:IN' => [$location.parent,$location.id]]
    ]}
{/if}


Управление локациями в админке

Таблица управления локациями представлена в виде виджета



Доступен импорт/ экспорт локаций в формате csv



Геолокация пользователя

Из коробки доступны следующие классы определения локации пользователя по ip

— ulDetectLocationByIpGeoBase — включен по умолчанию
— ulDetectLocationBySypexGeo
— ulDetectLocationByDaData

Используемый класс геолокации можно указать в настройке ulMethodDetectLocation

Наиболее точный класс ulDetectLocationByDaData, однако он требует регистрации и указания токена сервиса ДаДата

Примечание
По умолчанию активны крупные города России, вы можете активировать/ деактивировать нужные вам города

Файл локации городов и регионов Росии находится в папке
core/components/userlocation/elements/locations/locations.csv

1.0.4-beta (04.11.2019)

  • Change "ulWidget"

1.0.3-beta (20.10.2019)

  • Change "UserLocation.locations" chunk

1.0.2-beta (18.10.2019)

  • Change "ulMethodDetectLocation"
  • Add "ulDetectLocationByIpGeoBase", "ulDetectLocationByDaData"

1.0.1-beta (18.10.2019)

  • Add "locations" resolver

1.0.0-beta (10.10.2019)

  • Initial

Последние обсуждения в сообществе MODX.pro