Автор дополнения
Володя Володин
Пакетов
46
Закачек
22 898
Обычно отвечает в течение суток
Автор дополнения
Пакетов
46
Закачек
22 898
Обычно отвечает в течение суток
Версия 1.0.5-beta
Дата выпуска 18.11.2019
Загрузки 118
Просмотры 5 550
Внимание, этот компонент требует версию 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.5-beta (18.11.2019)

  • Change "ulMethodDetectLocation"

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