296  /  407
Не хватает статьи или нашли ошибку? Выделите мышкой и нажмите 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. Оформление заказа.

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

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

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

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

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

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