Модуль предоставляет api для определения местоположения по ip-адресу. Если ip-адрес не указан явно, то местоположение определяется по текущему ip пользователя. Для уменьшения количества запросов, информация о последнем ip-адресе сохраняется в cookies.
В местоположение входят:
В обычном режиме решение предоставляет данные из первой службы, корректно вернувшей данные. Службы вызываются в следующем порядке:
В случае необходимости, можно явно указать необходимую службу. Сейчас, если указать службу, отличную от Sypex, работать не будет.
Пример использования:
Указание сервера для Sypex
Список всех серверов https://sypexgeo.net/ru/api/
Указание ключа доступа для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-key', 'abcd1');
Компоненты
Указатель местоположения пользователей (rover:geoip.user.location)
Позволяет установить местоположение для пользователей на основе данных из модуля. Местоположение определяется по ip-адресу, с которого они впервые зашли на сайт.
Полное описание api на гитхабе проекта: https://github.com/pavelshulaev/geoip
В местоположение входят:
- название города;
- название страны на языке сайта;
- iso-код страны
- id страны в CMS 1С Битрикс (соответствуют id стран, возвращаемых функцией GetCountryArray)
- название региона;
- iso-код региона (опционально);
- название района (опционально);
- ширина и долгота;
- диапазон ip-адресов (опционально).
В обычном режиме решение предоставляет данные из первой службы, корректно вернувшей данные. Службы вызываются в следующем порядке:
- sypexgeo.net (Sypex);
ipgeobase.ru (IpGeoBase);(отключена, т.к. перестала отвечать)freegeoip.net (FreeGeoIp).(отключена, т.к. свободный api был закрыт)
Пример использования:
use Bitrix\Main\Loader,
Rover\GeoIp\Location;
if (Loader::includeModule("rover.geoip")){
try{
echo "ваш ip: " . Location::getCurIp() . "<br><br>"; // текущий ip
$location = Location::getInstance("5.255.255.88"); // yandex.ru
if ($location->isSuccess()){
echo "ip: " . $location->getIp() . "<br>"; // 5.255.255.88
echo "город: " . $location->getCityName() . "<br>"; // Москва
echo "iso-код страны: " . $location->getCountryCode() . "<br>"; // RU
echo "название страны: " . $location->getCountryName() . "<br>"; // Россия
echo "id страны в Битриксе: " . $location->getCountryId() . "<br>"; // 1
echo "регион: " . $location->getRegionName() . "<br>"; // Москва
echo "iso-код региона: " . $location->getRegionCode() . "<br>"; //
echo "округ: " . $location->getDistrict() . "<br>"; // Центральный федеральный округ
echo "широта: " . $location->getLat() . "<br>"; // 55.755787
echo "долгота: " . $location->getLng() . "<br>"; // 37.617634
echo "диапазон адресов: " . $location->getInetnum() . "<br>"; // 5.255.252.0 - 5.255.255.255
echo "сервис: " . $location->getService() . "<br><br>"; // IpGeoBase
} else {
echo "ошибка: " . $location->getError() . "<br><br>";
}
$location->setLanguage("en");
$location->reload("173.194.222.94"); // google.ru
if ($location->isSuccess()){
echo "ip: " . $location->getIp() . "<br>"; // 173.194.222.94
echo "город: " . $location->getCityName() . "<br>"; // Mountain View
echo "iso-код страны: " . $location->getCountryCode() . "<br>"; // US
echo "название страны: " . $location->getCountryName() . "<br>"; // USA
echo "id страны в Битриксе: " . $location->getCountryId() . "<br>"; // 122
echo "регион: " . $location->getRegionName() . "<br>"; // California
echo "iso-код региона: " . $location->getRegionCode() . "<br>"; // US-CA
echo "округ: " . $location->getDistrict() . "<br>"; //
echo "широта: " . $location->getLat() . "<br>"; // 37.38605
echo "долгота: " . $location->getLng() . "<br>"; // -122.08385
echo "диапазон адресов: " . $location->getInetnum() . "<br>"; //
echo "сервис: " . $location->getService() . "<br>"; // Sypex
} else {
echo "ошибка: " . $location->getError() . "<br><br>";
}
} catch (\Exception $e) {
echo $e->getMessage();
}
} else
echo "Модуль GeoIp Api не установлен"; |
Указание сервера для Sypex
\Bitrix\Main\Config\Option::set("rover.geoip", "sypex-server", "ru3.sxgeo.city"); |
Указание ключа доступа для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-key', 'abcd1');
Компоненты
Указатель местоположения пользователей (rover:geoip.user.location)
Позволяет установить местоположение для пользователей на основе данных из модуля. Местоположение определяется по ip-адресу, с которого они впервые зашли на сайт.
Полное описание api на гитхабе проекта: https://github.com/pavelshulaev/geoip
| Если вам нужен более расширенный функционал и более «пользовательский» интерфейс с похожим функционалом, рекомендую решение «Улучшенный выбор местоположения с определением по IP, замена контента в зависимости от города». |
После стандартной установки модуля, его api будет доступно для ваших проектов.
С api можно ознакомится здесь: https://github.com/pavelshulaev/geoip
Задать максимальное время ожидания ответа от geoip-сервиса можно через РНР-командную строку. Значение указывается в миллисекундах:
Требования
С api можно ознакомится здесь: https://github.com/pavelshulaev/geoip
Задать максимальное время ожидания ответа от geoip-сервиса можно через РНР-командную строку. Значение указывается в миллисекундах:
\Bitrix\Main\Config\Option::set("rover.geoip", "curl-timeout", 200); |
Требования
- php версии 7.2 или выше
- установленная на хостинге библиотека CURL
- модуль «Веб-аналитика» (для работы компонента rover:geoip.user.location)
По всем вопросам, предложениям и ошибкам обращайтесь в техподдержку на https://rover-it.me.