
UserLocation 
Компонент реализует выбор города пользователя.
Попробовать пакет перед покупкой можно на modhost.pro.
Особенности 
- Определение локации пользователя по ip.
 - Готовая база городов и регионов России, возможность импорта/экспорта своих локаций.
 
Установка 
- Подключите наш репозиторий.
 - Установите UserLocation.
 - Импортируйте файл локаций.
 
Попробовать пакет перед покупкой можно на modhost.pro, на нём эти дополнения можно выбрать прямо при создании сайта.
Описание 
Компонент UserLocation позволяет определить локацию пользователя и вывести список доступных локаций.

Сниппет UserLocation.initialize 
Подключает необходимые скрипты и стили. Вызвать в любом удобном месте.
Параметры 
| Параметр | По умолчанию | Описание | 
|---|---|---|
| frontCss | Файл с css стилями для подключения на фронтенде | |
| frontJs | Файл с javascript для подключения на фронтенде | |
| actionUrl | [[+assetsUrl]]action.php | Коннектор для обработки ajax запросов | 
Сниппет UserLocation.location 
Получает список локаций.
Параметры UserLocation.location 
| Параметр | По умолчанию | Описание | 
|---|---|---|
| tpl | UserLocation.locations | Имя чанка для оформления | 
| sortby | name | Поле для сортировки | 
| sortdir | ASC | Направление сортировки | 
| limit | 300 | Лимит выборки | 
| toPlaceholder | Не выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder | |
| type | city | Тип объекта | 
Модификаторы феном 
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><br>
  {'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
По умолчанию активны крупные города России, вы можете активировать/ деактивировать нужные вам города
