Определение города (местоположения) по IP 2.0

Краткая информация

Кратко о модуле определения города по IP на Битркис

Модуль позволяет определить, уточнить местоположение пользователя, вывести вараинты доставки в его город, вывести актуальную для местоположения информацию, переадресовать на другой домен или поддомен и тд.

Определяет город пользователя по его IP адресу и работает на любых редакциях Битрикса.

Для редакций с модулем интернет-магазин, используются данные о местоположениях из него.
Если же редакция без модуля интернет-магазина, то на соответствующей административной странице модуля можно загрузить страны, города и регионы Росси, Украины, Казахстана.

Базовая устанвока модулей для битрикса описана - здесь

Установить можно отсюда - Определение города (местоположения) по IP 2.0

Схема определения города

При первом заходе пользователя, происходит определение города пользователя по базе IP адресов с GeoIP. Эти данные используются всеми свтроенными комопнентами и выводятся в соответствующих местах.

После того как определение произошла, страница сгенерировалась и загрузилась на страницу пользвоателя, начинает выполняться javascript. В этот момент, если не было сделано ранее (первый заход покупателя), происходит запрос к Сервисам Яндекса, для уточнения города пользователя - необходимо для более точного определения местоположения ( данные в яндексе более точные и чаще обновляются).

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

Компоненты модуля

После установки появятся 4 комопнента, которые можно найти при редактирвоании страницы сайта в редакторе справа в подпункте веб-студия BXmaker / местоположения.

  • bxmaker:geoip.city - «Город + popup» выводится город (опционально) и скрытое попап окно, которое отображается для смены города
  • bxmaker:geoip.city.line - «Вывод названия города» - выводит город и таблички с подтверждением (опционально)
  • bxmaker:geoip.delivery - «Информация о доставке» - выводит о стоимость и сроки доставки товара в город пользователя
  • bxmaker:geoip.message - «Геозависимые сообщения» - позволяют выводить разные данные, например номер телефона, для разных городов (местоположений) или групп местоположений

Обновление базы IP адресов

База IP адресов обновляется ежедневно автоматически с помощью агента

\Bxmaker\GeoIP\Agent::updateBase()

Использование в своих целях

Методы модуля можно использовать как на клиентской так и на сервернйо стороне для решения собственных задач, для примера приведены несколько примеров, подробнее далее в документации

Клиентская сторона

Для выполнение логики в браузере польвзаотеля существует специальный javascript класс BXmakerGeoIPCity. Если в настройках модуля включен режим отладки, то в консоли браузера можно видеть все события которые всплывают в тот или иной момент, подписаться на них и выполнить необходимые операции. Подробнее про классы JS используемые в модуле

if(!!window.BXmakerGeoIPCity)
{
    $('.city-name').text(window.BXmakerGeoIPCity.getCity());
} 
//или
$(document).on('bxmaker.geoip.city.show', function(event, data){
   $('.city-name').text(data.city);
}); 

Серверная сторона

На стороне сервера можно исопльзовать все методы и классы модуля, но в основном стоит использовать методы класса \BXmaker\GeoIP\Manager. В качестве примера приведжен вывод названия города пользщователя.

\Bitrix\Main\Loader::includeModule('bxmaker.geoip');
$oManager = \Bxmaker\GeoIP\Manager::getInstance();
echo $oManager->getCity();