С помощью API вы можете повлиять на IP-адрес пользователя, узнать город и получить местоположение.

Основные методы:

array \Askaron\Geo\Location::getLocation( $site_id = SITE_ID );

Метод возвращает местоположение.

Для правильной работы нужны Местоположения 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-адрес.

В абсолютном большинстве случаев адрес вычисляется корректно. Но из-за особенностей настроек хостинга в редких случаях вам может потребоваться функция setIp.


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'] );
}


array \Askaron\Geo\Info::getSxGeoCityFull();
 
Получает город из базы Sypex Geo по IP. Результат запоминается в статическом кеше на хите. Можете вызывать getSxGeoCityFull() много раз на странице.

!!! Если надо вывести город или регион, то рекомендуем использовать \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
        )

)






0  


 Настройки модуля | Описание курса | Как обновить базу городов