Содержание
- Как активировать определение местоположения
- Где найти обработчиков геолокации
- Применение на уровне API
- Особенности геолокации в модуле sale
- Частые вопросы от пользователей
Платформа «1C-Битрикс» содержит встроенные обработчики геолокации, позволяющие определить местоположение пользователя. Это особенно необходимо для мультирегиональных проектов, когда перед вами стоит задача показывать посетителям различный контент (каталог, контакты, цены, контент) в зависимости от их региона. В статье расскажем, как настроить автоопределения местоположения на примере модуля «Мультирегиональность».
Как активировать определение местоположения
Чтобы включить определение местоположения через функционал модуля «Мультирегиональность» для платформы «1С-Битрикс», необходимо:
-
В административной панели сайта перейти в раздел INTEC, в настройках модуля открыть вкладку «Параметры сайтов».
-
Для корректного определения региона по IP необходимо выбрать подходящие сервисы геолокации, которые смогут передавать необходимые данные. Основной и рекомендованный для использования — «Геопозиционирование 1C-Bitrix». Именно этот сервис обеспечивает стабильную передачу информации о регионе пользователя и используется модулем по умолчанию.
Чтобы задать настройки, необходимые для работы модуля, потребуется:
-
Перейти в раздел: «Администрирование», далее выбрать «Настройки» и «Настройки продукта», а после «Геолокация».
-
Убедиться, что вы установили и активировали обработчик «Sypex Geo».
Когда компонент определения местоположения работает некорректно, достаточно:
- Перейти по адресу sypexgeo.net и зарегистрироваться.
- В персональном кабинете получить ключ, который вписывается в настройки «Sypex Geo» («Администрирование» - далее «Настройки», а после выбрать «Настройки продукта» и «Геолокацию», следующий шаг — «Sypex Geo» и «Дополнительно»).
Где найти обработчиков геолокации
Все доступные обработчики находятся в «Настройках». После перехода в «Настройки продукта» необходимо кликнуть «Геолокация». В списке доступных обработчиков:
- Sypex Geo;
- MaxMind;
- Расширение GeoIP.
Первые два нуждаются в ключах для получения доступа к необходимым сервисам. Чтобы тестировать с минимальными финансовыми расходами, рекомендуется пройти регистрацию на Sypex Geo, так как именно здесь предоставляется в месяц 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 = BitrixMainEventManager::getInstance();
eventManager->addEventHandler(
'main',
'onMainGeoIpHandlersBuildList',
'myGeoIpHandlers'
);
function myGeoIpHandlers()
<
return new BitrixMainEventResult(
BitrixMainEventResult::SUCCESS,
array(
'AcmeYourClass' => '/path/to/your/class.php',
)
);
>
IP-адрес пользователя определяется с помощью класса Bitrix Main Service Geoip Manager.
ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();
Примеры обработчиков можно найти в ядре, обязательно требуется определить три метода: getTitle, getDescription и getData.
Применение на уровне API
Чтобы убедиться в стабильной работе модуля и разобраться, как его правильно использовать на уровне API, необходимо выполнить код на странице «Консоль PHP» в административной панели.
use BitrixMainLoader;
if (Loader::includeModule('intervolga.enrich')) <
result = IntervolgaEnrichProviderProxy::getIpInfo('88.87.88.238');
var_dump(result);
>
Особенности геолокации в модуле sale
Ранее о геолокации было сказано при обновлении модуля sale, а это значит, что геолокацию теперь можно использовать, чтобы определить местоположение пользователя с целью оформления заказа. Для этой задачи используется класс Bitrix Sale Location GeoIp. Он использует ранее описанный функционал, чтобы найти в базе «1С-Битрикс» местоположение.
// Для возвращения ID местоположения
BitrixSaleLocationGeoIp::getLocationId(ip, lang);
// Для возвращения кода местоположения
BitrixSaleLocationGeoIp::getLocationCode(ip, lang);
// Для возвращения индекса
BitrixSaleLocationGeoIp::getZipCode(ip, lang);
Все эти методы предусматривают использование сохранения в cookies результата геолокации. Для нахождения местоположения в базе используется название независимо от регистра.
Частые вопросы от пользователей
Почему не работает автоопределение региона?
Если регион не определяется автоматически, в первую очередь убедитесь, что в системе активированы соответствующие сервисы геолокации от «1С-Битрикс».
Проверить их можно в административной панели в разделе «Настройки» → «Настройки продукта» → «Геолокация».
Что делать, если регион определяется некорректно?
Наиболее частые причины, по которым регион определяется некорректно или не определяется вовсе, — это недоступность сервиса или отсутствие передаваемых данных.
В модуле «Мультирегиональность» реализован инструмент «Проверка IP», с помощью которого можно убедиться, работает ли сервис корректно. Если сервис функционирует должным образом, результат проверки будет содержать заполненные поля regionName, cityName и другие.
Если же все значения возвращаются как NULL, это означает, что сервис не передает данные.
В таком случае мы рекомендуем обращаться напрямую в техподдержку «1С-Битрикс». Модуль «Мультирегиональность» не сможет определить регион, так как он лишь обрабатывает информацию, полученную от стороннего сервиса, и не влияет на его работу.