О web-разработке
и даже немного больше...

Использование геолокации в Битрикс D7

Для получения сведений о местоположении клиента по его IP-адресу используется сервисы геолокации. В системе Битрикс, начиная с версии 17.0.13 доступны классы для работы с сервисами геолокации. Кроме того, в администраторской части сайта есть раздел, где вы можете настраивать список обработчиков геолокации:

Настройки – Настройки продукта – Геолокация

По умолчанию в системе доступны три обработчика геолокации, первый – системный, функционирующий на самом веб-сервере, в виде расширения GeoIP, остальные два установлены в битрикс, это MaxMind и Sypex Geo.

Чтобы использовать расширение, установленное на сервере, нужно убедиться в том, что библиотека с GeoIP имеет версию начиная от 1.4.0.

Что касается сервиса MaxMind, то перед его использованием вам потребуется на сайте компании получить ID пользователя, а также лицензионный ключ, посредством которого вы сможете в дальнейшем сможете пользоваться их услугами.

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

API для геолокации

Как уже говорилось что в поздних версиях битрикса появилась поддержка работы с GeoIP. В связи с этим в системе появилось множество методов для работы с данными геолокации. Классы в пространстве имён имеют вид: \Bitrix\Main\Service\GeoIp.

Для удобства использования, мы сделаем сокращение:

use \Bitrix\Main\Service\GeoIp;

Получение фактического IP адреса
Далее посмотрим простые базовые методы использования. Давайте определим фактический IP-адрес пользователя, для этого используем следующий код:

$realIP = GeoIp\Manager::getRealIp();

Получение информации о местоположении
Зная фактический IP адрес, далее мы можем получить информацию об этом узле:

$result = GeoIp\Manager::getDataResult($realIP, "ru");

В качестве результата в переменной $realIP будет находится объект, с данными геолокации. Зная IP адрес, мы так же можем получать отдельные поля.

$result = GeoIp\Manager::getCityName($realIP, "ru"); // возвращает полное название города
$result = GeoIp\Manager::getCityPostCode($realIP, "ru"); // возвращает почтовый индекс, FSA или Zip код
$result = GeoIp\Manager::getCountryCode($realIP, "ru"); // возвращает двухбуквенный код страны
$result = GeoIp\Manager::getCountryName($realIP, "ru"); // возвращает полное имя страны
$result = GeoIp\Manager::getGeoPosition($realIP, "ru"); // возвращает массив с широтой и долготой
$result = GeoIp\Manager::getGeoPositionLatitude($realIP, "ru"); // возвращает широту
$result = GeoIp\Manager::getGeoPositionLongitude($realIP, "ru"); // возвращает долготу
$result = GeoIp\Manager::getIspName($realIP, "ru"); // возвращает имя Internet Service Provider (ISP)
$result = GeoIp\Manager::getOrganizationName($realIP, "ru"); // возвращает название организации
$result = GeoIp\Manager::getTimezoneName($realIP, "ru"); // метод получает временную зону

Использование данных геолокации в модуле sale

Возможности использования данных геолокации были анонсированы параллельно с обновлением модуля sale. В связи с этим появилась возможность определения местоположения пользователя при оформлении заказа, используя методы модуля. Для этих целей так же есть класс: Bitrix\Sale\Location\GeoIp.

Данный класс так же реализует вышеописанный функционал, и позволяет выполнять поиск данных о местоположении в базе Битрикса. Вот несколько примеров использования методов:

\Bitrix\Sale\Location\GeoIp::getLocationId($ip, $lang); // возвращает ID местоположения
\Bitrix\Sale\Location\GeoIp::getLocationCode($ip, $lang); // возвращает код местоположения
\Bitrix\Sale\Location\GeoIp::getZipCode($ip, $lang); // возвращает индекс

Местоположения в базе данных находятся по названию, и не регистрозависимы.

Установка расширения GeoIP на сервер

Как уже говорилось выше данные о местоположении могут браться и с самого сервера, на котором расположен сайт. Для этого на сервере должно быть установлено расширение GeoIP. С большой вероятностью ваш сайт функционирует на UNIX-системе. Если у вас есть доступ к консоли сервере, то вы можете установить расширение на свой север посредством команд:

yum install php-pecl-geoip // Для CentOS
brew install php55-geoip // Для macOS

Эти команды произведут автоматическую установку расширения из репозитория. Загрузить расширение можно и самостоятельно, с официального сайта https://pecl.php.net/package/geoip. Стоит обратить внимание на то, что после установки модуля, необходимо так же будет загрузить платные базы данных на сервер.

Опубликован: 19.05.2020 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта