1. aspro.ru
  2. Аспро: Премьер
  3. Мультирегиональность
  4. Автоопределение местоположения по IP

Автоопределение местоположения по IP


Платформа 1C-Битрикс содержит встроенные обработчики геолокации, позволяющие определить местоположение пользователя. Подробнее со списком и особенностями использования каждого обработчика вы можете ознакомиться в пользовательской документации 1C-Битрикс.

Определение местоположения будет работать с любым обработчиком геолокации, доступным в 1С-Битрикс.

Инструкцию по настройке вы можете посмотреть в видео или далее в статье.

В статье мы рассмотрим работу функционала на примере обработчика Sypex Geo.

Обработчик находится по пути НастройкиНастройки продуктаГеолокация. Для редактирования нажмите на «Гамбургер», затем на одноименную кнопку.

588fa5aa-7b5c-11f1-8fe4-fa163e2ff576

Для определения местоположения обработчик обязательно должен быть активирован и иметь доступные запросы.

Без регистрации сервис Sypex Geo предоставляется 10 000 запросов в месяц.

6b43d10d-7b5f-11f1-8fe4-fa163e2ff576

Если на сайте большая посещаемость, то может потребоваться большее количество запросов. Для этого необходимо пройти регистрацию на сайте https://sypexgeo.net/. Регистрация позволяет получить дополнительные бонусные запросы. При необходимости возможно приобретение дополнительных запросов.

После регистрации вам будет предоставлен ключ.

2b018707-7b64-11f1-8fe4-fa163e2ff576

Ключ (2) необходимо указать в настройках обработчика на вкладке «Дополнительно» (1). Не забудьте сохранить изменения (3).

bde0a7a0-7b5f-11f1-8fe4-fa163e2ff576

Без регистрации на сервисе всегда можно проверить, доступны ли еще запросы.

Для этого перейдите Настройки → Инструменты → Командная PHP-строка (1).

В поле вставьте код (2):

$ip = $_SERVER["REMOTE_ADDR"];
					if(!empty($_SERVER["HTTP_X_REAL_IP"])){
						$ip = $_SERVER["HTTP_X_REAL_IP"];
					}

$obBitrixGeoIPResult = \Bitrix\Main\Service\GeoIp\Manager::getDataResult($ip, 'ru');
							if($obBitrixGeoIPResult !== null) {
								if($obResult = $obBitrixGeoIPResult->getGeoData()){
									$_SESSION['GEOIP'] = get_object_vars($obResult);
									$city = isset($_SESSION['GEOIP']['cityName']) && $_SESSION['GEOIP']['cityName'] ? $_SESSION['GEOIP']['cityName'] : '';
								}
							}

print_r($_SESSION['GEOIP']);

Нажмите кнопку выполнить (3).

d5dd5ca3-7b5c-11f1-8fe4-fa163e2ff576

На странице появится всплывающее окно. Нажмите кнопку «ОК» (4).

65355efe-7b64-11f1-8fe4-fa163e2ff576

Если на сайте доступны запросы, в результате выполнения команды вы должны увидеть свое текущее местоположение. Если запросы недоступны, поля будут пустыми.

adb11d6d-7b5f-11f1-8fe4-fa163e2ff576

Использование функционала определения местоположения

Рассмотрим, в каких случаях используется определение местоположения.

1. Выбор региона

При открытии сайта пользователь может увидеть окно подтверждения региона.

Разберем подробнее, при каких условиях это происходит.

Если на сайте используется региональность на поддоменах:

Пользователь перешел по прямой ссылке не своего региона (1);

Регион пользователя доступен в списке регионов (2);

На сайте доступны запросы обработчика геолокации.

65344e6f-7b63-11f1-8fe4-fa163e2ff576

Если на сайте используется региональность на одном домене:

Регион по умолчанию отличается от текущего местоположения пользователя (1);

Регион пользователя доступен в списке регионов (2);

На сайте доступны запросы обработчика геолокации.

64a2b2f6-7b61-11f1-8fe4-fa163e2ff576

2. Оформление заказа.

  • Без использования региональности:

Когда клиент впервые оформляет заказ, то система по IP-адресу определяет его местоположение (страну, город) и поставляет значения в соответствующие поля формы.

  • С использованием региональности:

Когда клиент впервые оформляет заказ, используется местоположения, указанное для региона.

3. Расчет доставки в карточке товара.

Определение местоположения при расчете доставки происходит по следующему алгоритму.

Предыдущая статья Настройка хостинга
Следующая статья Разделы и карточки регионов