384  /  544
Не хватает статьи или нашли ошибку? Выделите мышкой и нажмите Ctrl+Enter

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

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

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

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

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

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

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

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

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

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

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

Для этого перейдите Настройки → Инструменты → Командная 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Если пользователь перешел в свой регион, но его местоположение не используется как основное в этом регионе. При этом включено отображение города посетителя.

С версии 2.1.0 окно не появится, но в шапке сразу подставится его город. Например, если пользователь перешел на сайт из города Копейск Челябинской области, то в шапке сразу отобразится Копейск, хотя основной город — Челябинск.


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

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

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

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

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

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

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