Как определить геолокацию пользователя?
Определение страны и/или города конечно же должно быть автоматизировано. В версии модуля sale 17.0.13 появилось автоматическое определение местоположения покупателя при оформлении заказа. Такие задачи часто входят в доработку сайта, когда требуется улучшить пользовательский сценарий и упростить оформление заказа.
Данный функционал реализован в классах пространства имён \Bitrix\Main\Service\GeoIp. В самом начале файла с обработчиком прописываем использование данного пространства:
Для обработки местоположения пользователя может быть использовано несколько сервисов. Список доступных можно посмотреть в административном разделе сайта: Настройки -> Настройки продукта -> Геолокация. Если требуется более сложная логика работы с геоданными, например персонализация сценариев или интеграция с внешними системами, может потребоваться разработать веб-приложение с учетом этих задач.
По умолчанию, пользователю доступны 3 обработчика: MaxMind, Sypex Geo и расширение GeoIP. Для MaxMind и Sypex Geo нужны ключи доступа к данным. При регистрации в сервисе Sypex Geo предоставляется 30000 бесплатных запросов в месяц, что вполное достаточно для многих сайтов.
Данный список можно расширить своими обработчиками, которые прописываются с помощью обработчика события onMainGeoIpHandlersBuildList для модуля main:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('main', 'onMainGeoIpHandlersBuildList', 'GeoIpHandler');
function GeoIpHandler()
{
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, array('YourClass' => '/path/to/your/class.php',));
}
Обработчик должен обязательно содержать 3 метода: getTitle, getDescription и getData. Примеры обработчиков можно посмотреть в ядре. Встроенные в ядро обработчики расположены тут:
Для начала нужно получить IP-адрес пользователя:
Чтобы получить информацию по IP пользователя, нужно вызвать метод:
Чтобы получить код страны пользователя, нужно вызвать метод:
Еще один важный момент - есть возможность сократить количество запросов к сервису определения - вся информация о пользователе будет сохранена в cookies BX_MAIN_GEO_IP_DATA_XXX_XXX_XXX_XXX. Пока cookie будет жива и IP будет оставаться прежним, запросов в сервис геолокации по данному пользователю не будет. Для этого, нужно перед получением информации (getDataResult), нужно вызвать метод:
Последний момент - использование данных гео-локации в механизмах интернет-магазина. Для получения ID местоположения пользователя, нужно вызвать функцю:
\Bitrix\Sale\Location\GeoIp::getLocationId($ip, $lang);
Для получения кода местоположения используется функция:
\Bitrix\Sale\Location\GeoIp::getLocationCode($ip, $lang);
И для получения почтового индекса, используется функция:
\Bitrix\Sale\Location\GeoIp::getZipCode($ip, $lang);
Вариантов использования получения информации о геолокации пользователя может быть бесконечное множество — показ ближайшего к пользователю склада, отображение контактной информации локального представительства и многое другое. В интерфейсах, где используется разработка приложения на react, такие сценарии можно реализовать максимально гибко и динамически, адаптируя контент под пользователя в реальном времени.
Почему мы?
Наши услуги
Мы компания, умеющая не только разрабатывать сайты, но и хорошо выполняем роль субподрядчика на средних и больших проектах. Разрабатываем и внедряем решения на базе 1С-Битрикс / Битрикс24. Всегда боремся за успешное доведение проекта до финала, гибко планируя производственный график.
Наши клиенты
Бренды, проекты которых нам доверяют наши партнеры. Мы работаем с локальными и глобальными компаниями из разных отраслей, что позволяет нашим сотрудникам приобретать уникальный опыт, создавая полнофункциональные решения с учетом особенностей и потребностей бизнеса наших клиентов.