UserLocation
Компонент реализует выбор города пользователя.
Попробовать пакет перед покупкой можно на modhost.pro.
Особенности
- определение локации пользователя по ip
- готовая база городов и регионов России, возможность импорта/ экспорта своих локаций
Установка
- [Подключите наш репозиторий][002]
- Установите UserLocation
- Импортируйте файл локаций
Попробовать пакет перед покупкой можно на modhost.pro, на нём эти дополнения можно выбрать прямо при создании сайта.
Описание
Компонент UserLocation позволяет определить локацию пользователя и вывести список доступных локаций
Сниппет UserLocation.initialize
Подключает необходимые скрипты и стили. Вызвать в любом удобном месте.
Параметры
Параметр | По умолчанию | Описание |
---|---|---|
frontCss | Файл с css стилями для подключения на фронтенде | |
frontJs | Файл с javascript для подключения на фронтенде | |
actionUrl | [[+assetsUrl]]action.php | Коннектор для обработки ajax запросов |
Сниппет 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
По умолчанию активны крупные города России, вы можете активировать/ деактивировать нужные вам города