Skip to content
  1. Компоненты
  2. UserLocation

UserLocation

Компонент реализует выбор города пользователя.

Попробовать пакет перед покупкой можно на modhost.pro.

Особенности

  • Определение локации пользователя по ip.
  • Готовая база городов и регионов России, возможность импорта/экспорта своих локаций.

Установка

Попробовать пакет перед покупкой можно на modhost.pro, на нём эти дополнения можно выбрать прямо при создании сайта.

Описание

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

Описание

Сниппет UserLocation.initialize

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

Параметры

ПараметрПо умолчаниюОписание
frontCssФайл с css стилями для подключения на фронтенде
frontJsФайл с javascript для подключения на фронтенде
actionUrl[[+assetsUrl]]action.phpКоннектор для обработки ajax запросов

Сниппет UserLocation.location

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

Параметры UserLocation.location

ПараметрПо умолчаниюОписание
tplUserLocation.locationsИмя чанка для оформления
sortbynameПоле для сортировки
sortdirASCНаправление сортировки
limit300Лимит выборки
toPlaceholderНе выводить результат работы сниппета, а поместить в плейсхолдер toPlaceholder
typecityТип объекта

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

getUserLocation

Получает текущую локацию пользователя.

detectUserLocation

Получает текущую локацию пользователя по его ip.

Пример вызова

Текущая локация пользователя:

fenom
{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
)

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

fenom
{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>

Инпут с выбором локации:

html
<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="Поиск..."
/>

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

fenom
{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

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