Платформа «1С-Битрикс» предлагает встроенные средства геолокации, с помощью которых можно автоматически определить местоположение пользователя. Это особенно важно для мультирегиональных сайтов, где необходимо показывать разный контент, ассортимент товаров, цены, контакты или тексты в зависимости от региона посетителя. Разберемся, как настроить автоматическое определение местоположения на примере модуля «Мультирегиональность».
Для активации автоопределения региона на платформе «1С-Битрикс» выполните следующие шаги:
Перейдите в административную панель сайта в раздел INTEC → «Мультирегиональность» → «Параметры сайтов».
В поле «Сервисы определения региона по IP адресу» выберите сервис геолокации, который будет передавать данные о местоположении пользователей. Рекомендуемый и основной вариант — «Геопозиционирование 1C-Bitrix». Этот сервис обеспечивает корректное определение региона по IP и используется в модуле по умолчанию.
Для корректной работы модуля требуется активировать обработчик геолокации и задать настройки. Рассмотрим, как это сделать, на примере Sypex Geo.
В административной панели перейдите в раздел «Администрирование» → «Настройки» → «Настройки продукта» → «Геолокация».
Убедитесь, что в списке доступных обработчиков есть Sypex Geo.
Далее перейдите на официальный сайт sypexgeo.net. Откройте личный кабинет и скопируйте ключ веб-сервиса. Он указан в блоке «Информация о REST API».
Вернитесь в административную панель сайта и в разделе «Администрирование» → «Настройки» → «Настройки продукта» → «Геолокация» откройте настройки Sypex Geo → «Дополнительно». Вставьте скопированный ключ API в соответствующее поле и кликните «Сохранить».
Все доступные обработчики геолокации «1С-Битрикс» находятся в разделе «Настройки продукта» → «Геолокация». После перехода вы увидите список доступных сервисов, среди которых:
Sypex Geo;
MaxMind;
Расширение GeoIP.
Для корректной работы первых двух обработчиков требуется указать API-ключи, которые можно получить после регистрации в личном кабинете на официальном сайте соответствующего сервиса. В случае с SypexGeo после авторизации пользователям доступно 30 000 бесплатных запросов в месяц.
Обработчики геолокации реализуются как классы-наследники GeoIpBase. В базовой поставке платформы доступны три стандартных обработчика:
$buildInHandlers = array(
'BitrixMainServiceGeoIpMaxMind' => 'lib/service/geoip/maxmind.php',
'BitrixMainServiceGeoIpExtension' => 'lib/service/geoip/extension.php',
'BitrixMainServiceGeoIpSypexGeo' => 'lib/service/geoip/sypexgeo.php',
);
Если вы хотите добавить свой обработчик геолокации, используйте событие onMainGeoIpHandlersBuildList из модуля main. Пример кода:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
'main',
'onMainGeoIpHandlersBuildList',
'myGeoIpHandlers'
);
function myGeoIpHandlers() {
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
array(
'AcmeYourClass' => '/path/to/your/class.php',
)
);
}
Для получения IP-адреса пользователя используется следующий метод:
$ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();
При создании своего обработчика геолокации необходимо реализовать три обязательных метода:
getTitle() — возвращает название обработчика;
getDescription() — описание;
getData() — основная логика получения данных о местоположении по IP.
Примеры реализации этих методов можно найти в стандартных обработчиках, расположенных в директории ядра платформы.
Если вы хотите убедиться, что модуль корректно работает и возвращает ожидаемые данные, можете протестировать его напрямую через API. Для этого в разделе «Настройки» → «Инструменты» → «Командная PHP-строка» выполните следующий код:
use Bitrix\Main\Loader;
if (Loader::includeModule('intervolga.enrich')) {
$result = \Intervolga\Enrich\Provider\Proxy::getIpInfo('88.87.88.238');
var_dump($result);
}
С выходом обновлений модуля sale в платформе «1С-Битрикс» появилась возможность использовать геолокацию для автоматического определения местоположения пользователя при оформлении заказа. Это позволяет упростить и ускорить процесс покупки, заранее подставляя корректные значения города, индекса и других параметров.
Для работы с геоданными в контексте модуля sale используется класс Bitrix\Sale\Location\GeoIp. Он позволяет определить местоположение пользователя на основе его IP-адреса и получить следующие данные:
ID местоположения:
\Bitrix\Sale\Location\GeoIp::getLocationId($ip, $lang);
Код местоположения (символьный код):
\Bitrix\Sale\Location\GeoIp::getLocationCode($ip, $lang);
Почтовый индекс:
\Bitrix\Sale\Location\GeoIp::getZipCode($ip, $lang);
Результаты геолокации могут сохраняться в cookies, чтобы при повторных визитах не производить повторные запросы.
Определение местоположения в базе происходит по названию, при этом регистр букв не имеет значения — это упрощает сопоставление данных из внешнего источника с внутренней базой местоположений.
Функционал особенно полезен для мультирегиональных интернет-магазинов, так как позволяет автоматически адаптировать форму заказа под нужный регион, повышая удобство для пользователя и сокращая путь к покупке.
Если система не определяет регион автоматически, вероятнее всего, не активированы или неправильно настроены сервисы геолокации в «1С-Битрикс». Чтобы проверить это:
Перейдите в административную панель сайта в раздел «Настройки» → «Настройки продукта» → «Геолокация».
Убедитесь, что необходимый обработчик установлен и активирован (в соответствующих столбцах должно быть указано «Да»)..
Некорректное определение региона, как правило, связано с тем, что сервис геолокации либо недоступен, либо не передает данные.
В модуле «Мультирегиональность» предусмотрена функция «Проверка IP», которая позволяет быстро выяснить, корректно ли работает выбранный сервис. Если система функционирует как положено, вы увидите в результатах проверки заполненные поля regionName, cityName и другие.
Если же в ответе все значения отображаются как NULL, это означает, что геосервис не передает данные.
В такой ситуации модуль не сможет определить местоположение, так как он только обрабатывает входящую информацию и никак не влияет на ее получение. Единственное решение — обратиться в техническую поддержку «1С-Битрикс», чтобы проверить работоспособность геосервиса и устранить проблему на стороне платформы.
Если у вас возникнут вопросы по работе модуля «Мультирегиональность» или любого другого нашего продукта, вы всегда можете обратиться в техподдержку INTEC. Мы поможем разобраться в настройках и подобрать оптимальное решение под ваши задачи.