Подтвердите, что вы не робот
Челябинск
Например:
Челябинск
Москва
или
Выбрать автоматически
Челябинск
Москва
Екатеринбург
Тюмень
Санкт-Петербург
Новосибирск
Нижний Новгород
Казань
Омск
Самара
Ростов-на-Дону
Уфа
Красноярск
Пермь
Воронеж
Волгоград
Краснодар
Владивосток
Хабаровск
Мультирегиональность 1С-Битрикс: автоматическое определение местоположения
Назад к списку

Мультирегиональность 1С-Битрикс: автоматическое определение местоположения

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


Как включить автоопределение местоположения

Для активации автоопределения региона на платформе «1С-Битрикс» выполните следующие шаги:


  1. Перейдите в административную панель сайта в раздел INTEC → «Мультирегиональность» → «Параметры сайтов».


  1. В поле «Сервисы определения региона по IP адресу» выберите сервис геолокации, который будет передавать данные о местоположении пользователей. Рекомендуемый и основной вариант — «Геопозиционирование 1C-Bitrix». Этот сервис обеспечивает корректное определение региона по IP и используется в модуле по умолчанию.


Сервисы определения региона по IP-адресу

Для корректной работы модуля требуется активировать обработчик геолокации и задать настройки. Рассмотрим, как это сделать, на примере Sypex Geo.


  1. В административной панели перейдите в раздел «Администрирование» → «Настройки» → «Настройки продукта» → «Геолокация».


  1. Убедитесь, что в списке доступных обработчиков есть Sypex Geo.


Список обработчиков геолокации

  1. Для активации обработчика перейдите в его настройки и во вкладке «Основные» поставьте галочку в чекбоксе «Активность».

Настройка обработчика геолокации

  1. Далее перейдите на официальный сайт sypexgeo.net. Откройте личный кабинет и скопируйте ключ веб-сервиса. Он указан в блоке «Информация о REST API».


Личный кабинет сайта Sypex Geo

  1. Вернитесь в административную панель сайта и в разделе «Администрирование» → «Настройки» → «Настройки продукта» → «Геолокация» откройте настройки Sypex Geo → «Дополнительно». Вставьте скопированный ключ API в соответствующее поле и кликните «Сохранить».


Вставка ключа 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-адреса пользователя используется следующий метод:


$ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();


Обязательные методы в классе-обработчике

При создании своего обработчика геолокации необходимо реализовать три обязательных метода:


  • getTitle() — возвращает название обработчика;


  • getDescription() — описание;


  • getData() — основная логика получения данных о местоположении по IP.


Примеры реализации этих методов можно найти в стандартных обработчиках, расположенных в директории ядра платформы.


Проверка работы на уровне API

Если вы хотите убедиться, что модуль корректно работает и возвращает ожидаемые данные, можете протестировать его напрямую через API. Для этого в разделе «Настройки» → «Инструменты» → «Командная PHP-строка» выполните следующий код:


use Bitrix\Main\Loader;

if (Loader::includeModule('intervolga.enrich')) {

    $result = \Intervolga\Enrich\Provider\Proxy::getIpInfo('88.87.88.238');

    var_dump($result);

}


Проверка работы на уровне API


Особенности геолокации в модуле sale

С выходом обновлений модуля 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С-Битрикс». Чтобы проверить это:


  1. Перейдите в административную панель сайта в раздел «Настройки» → «Настройки продукта» → «Геолокация».


  1. Убедитесь, что необходимый обработчик установлен и активирован (в соответствующих столбцах должно быть указано «Да»)..


Автоопределение региона

Неверное определение региона

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


В модуле «Мультирегиональность» предусмотрена функция «Проверка IP», которая позволяет быстро выяснить, корректно ли работает выбранный сервис. Если система функционирует как положено, вы увидите в результатах проверки заполненные поля regionName, cityName и другие.


Проверка IP


Если же в ответе все значения отображаются как NULL, это означает, что геосервис не передает данные.


Геосервис не передает данные

В такой ситуации модуль не сможет определить местоположение, так как он только обрабатывает входящую информацию и никак не влияет на ее получение. Единственное решение — обратиться в техническую поддержку «1С-Битрикс», чтобы проверить работоспособность геосервиса и устранить проблему на стороне платформы.


Если у вас возникнут вопросы по работе модуля «Мультирегиональность» или любого другого нашего продукта, вы всегда можете обратиться в техподдержку INTEC. Мы поможем разобраться в настройках и подобрать оптимальное решение под ваши задачи.

#INTEC
#Готовые решения для битрикс
#Управление и бизнес

Мы работаем в городах