|
С помощью API вы можете повлиять на IP-адрес пользователя, узнать геолокацию (страна, регион, город, координаты города) и получить местоположение из Интернет-магазина.
Получение IP:
$ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();
if (\Bitrix\Main\Loader::includeModule("askaron.geo") )
{
$ip = \Askaron\Geo\Info::getIp();
}
Получение Местоположения из интернет-магазина:
if (\Bitrix\Main\Loader::includeModule("askaron.geo") )
{
$arLocation = \Askaron\Geo\Location::getLocation();
}
Получение геолокации:
Модуль содержит обработчик геолокаций. С помощью стандартного API 1C-Битрикс теперь можно получать геолокацию
$ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();
if (\Bitrix\Main\Loader::includeModule("askaron.geo") )
{
$ip = \Askaron\Geo\Info::getIp();
}
// Получить название города
$cityName = "";
$dataResult = \Bitrix\Main\Service\GeoIp\Manager::getDataResult( $ip, "ru");
if (is_object($dataResult))
{
// geoData содержит всё, что вернул обработчик
$cityName = $dataResult->getGeoData()->cityName;
}
// Или так:
// $cityName = \Bitrix\Main\Service\GeoIp\Manager::getCityName( $ip, "ru" );
Описание методов методы:
array \Askaron\Geo\Location::getLocation( $site_id = SITE_ID );
Метод возвращает местоположение из Интернет-магазина (sale)
Для правильной работы нужны Местоположения 2.0! Доступны с версии Битрикса 14.5.
Местоположение запоминается в сессии и куках. Повторно к базе IP адресов не обращаемся. Можете вызывать getLocation() много раз.
Необязательный параметр ID сайта. По умолчанию текущий сайт.
Функция возвращает массив, описывающий местоположение.
Если местоположение не найдено, и в настройках модуля не указан город по умолчанию, то возвращает пустой массив.
if (\Bitrix\Main\Loader::includeModule("askaron.geo") )
{
$arLocation = \Askaron\Geo\Location::getLocation();
}
Результат:
Array
(
[ID] => 218
[CODE] => 0000073738
[NAME_RU] => Москва
[PARENT_ID] => 4
[COUNTRY_ID] => 1
[REGION_ID] => 3
)
bool \Askaron\Geo\Location::setLocationById( $id, $site_id = SITE_ID )
Метод устанавливает местоположение из интернет-магазина
$id — ID местоположения
$site_id - необязательный параметр. По умолчанию текущий сайт.
Старайтесь устанавливать местоположение из списка разрешенных местоположений для сайта ( http://ваш_сайт/bitrix/admin/sale_location_zone_list.php?lang=ru )
Возвращает true, если такое местоположение найдено и установлено. Иначе false.
Пример:
Метод можно использовать при переключении города в списке городов в шапке сайта:
<?
if ( \Bitrix\Main\Loader::includeModule("askaron.geo") )
{
if ( $_REQUEST["mycity"] > 0 )
{
\Askaron\Geo\Location::setLocationById( $_REQUEST["mycity"] );
}
$arLocation = \Askaron\Geo\Location::getLocation();
echo "Ваш город ".$arLocation["NAME_RU"];
}
?>
string \Askaron\Geo\Info::getIp();
Возвращает текущий IP-адрес аналогично стандартной функции $ip = \Bitrix\Main\Service\GeoIp\Manager::getRealIp();
На результат метода \Askaron\Geo\Info::getIp(); можно повлиять, если вызвать перед ним метод \Askaron\Geo\Info::setIp( $ip );
void \Askaron\Geo\Info::setIp( string $ip );
Используется для установки пользователю IP-адреса.
На редких хостингах администраторы прячут сайт за какими-то прокси серверами и определение адреса становится нестандартным.
Если у вас такой нестандартный случай можете попробовать установить IP в начале работы страницы.
Допустим, ваш системный администратор записывает адрес пользователя в переменную $_SERVER['HTTP_X_REAL_IP']
файл /bitrix/php_interface/init.php:
if (\Bitrix\Main\Loader::includeModule("askaron.geo") )
{
\Askaron\Geo\Info::setIp( $_SERVER['HTTP_X_REAL_IP'] );
}
// далее новый $ip получаем методом \Askaron\Geo\Info::getIp();
array \Askaron\Geo\Info::getSxGeoCityFull($ip = '');
Получает город из базы Sypex Geo по IP. Результат запоминается в статическом кеше на хите. Можете вызывать getSxGeoCityFull() много раз на странице.
Если параметр $ip, если не задан, то берётся из \Askaron\Geo\Info::getIp();
!!! С версии askaron.geo 5.0.0 не рекомендуется использовать \Askaron\Geo\Info::getSxGeoCityFull() в своём коде. Есть другой способ
Теперь модуль устанавливает обработчик геолокации. Можно использовать геолокации Битрикса, в том числе другие обработчики вместе с нашим. getSxGeoCityFull вызывается внутри, если поиск в списке обработчиков дойдёт до нашего обработчика.
$dataResult = \Bitrix\Main\Service\GeoIp\Manager::getDataResult( $ip, "ru");
!!! Если надо вывести Местоположение из интернет-магазина, то рекомендуем использовать \Askaron\Geo\Location::getLocation(). Это уже посчитанное готовое местоположение из сессии с учетом местоположения по умолчанию.
getSxGeoCityFull() возвращает массив описывающий город в базе по IP. В случае, если город не может быть найден, возвращает пустой массив.
if (\Bitrix\Main\Loader::includeModule("askaron.geo") )
{
$arCity = \Askaron\Geo\Info::getSxGeoCityFull();
}
Результат:
Array
(
[city] => Array
(
[id] => 501175
[lat] => 47.23135
[lon] => 39.72328
[name_ru] => Ростов-на-Дону
[name_en] => Rostov-na-Donu
)
[region] => Array
(
[id] => 501165
[name_ru] => Ростовская область
[name_en] => Rostovskaya Oblast'
[iso] => RU-ROS
)
[country] => Array
(
[id] => 185
[iso] => RU
[lat] => 60
[lon] => 100
[name_ru] => Россия
[name_en] => Russia
)
)
Настройки модуля |
Описание курса
| Как обновить базу городов
|