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

Классы

В модуле используется несколько классов, которые вы можете использовать для выполнения поставленных задач.

Основной класс для работы с модулем - \BXmaker\GeoIP\Manager, в нем находятся все методы для работы с модулем. Все другие классы используются для служебных целей.

Обработчик для подключения компонентов в эпилоге сайта, постановки значений в соответствующие поля при оформлении заказа, а также для обработки ajax запросов от компонентов модуля - \BXmaker\GeoIP\Handler.

Manager

Этот главный класс, который содержит практически всю информацию по местоположению пользователя. При инициализации модуля происходит определение IP адреса пользователя. После этого происходит попытка связать местоположение полученyое из базы диапазонов IP адресов с местоположениями которые имеются в битриксе (для варианта когда установлен модуль Интернет-магазин).

Чтобы начать работу с модулем необходимо получить объект этого модуля в любой части сайта как в примере ниже.

$oManager = \BXmaker\GeoIP\Manager::getInstance();

getParam

Используется для получения параметров модуля для текущего сайта

$value = $oManager->getParam($name, $default_value = '', $siteId = null)

getCurrentSiteId

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

$siteId = $oManager->getCurrentSiteId();

searchLocation

Используется для поиска города, результатом будет массив со стандартизированным описанием городов.

$oManager->searchLocation('москва');

selectLocation

Установка местоположения по идентификатору, все зависимости будут выполнены автоматически - сохранены соответствующие значения в сессии и установлены куки (cookie).

$locationId = 84;
$oManager->selectLocation($locationId;

getIP

Получение текущего IP адреса пользователя

$ip = $oManager->getIP();

getCountry

Получение страны

$oManager->getCountry(); // здесь может быть значение RU вместо Россия

getRegion

Получение названия региона

$oManager->getRegion();

getDistrict

Получение округа, района

$oManager->getDistrict();

getCity

Получение названия города

$oManager->getCity();

getLocation

Получение идентификаторы местоположения

$oManager->getLocation();

setCountry

Установка наименования страны

$oManager->setCountry('Россия');

setRegion

Установка региона

$oManager->setRegion('Московская область');

setArea

Установка района

$oManager->setArea('Балашихинский район');

setCity

Установка наименования города

$oManager->setCity('Железнодорожный');

setLocation

Установка идентификатора местоположения setLocation(), не путайте с selectLocation();

$locationId = 84;
$oManager->setLocation($locationId); // этот метод просто сохраняет значение в сессии и для установки в куках

FavoritesTable

Избранные местоположения используются в публичной части сайт. Они выводятся в всплывающем окне при смене города, позволяют не вводить пользователю город, не искать а сразу выбрать из заготовленных.

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

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

\Bxmaker\GeoIP\FavoritesTable - Класс для работы с группами избранными местоположениями, 
поля - ID, NAME, SITE, CITY

\Bxmaker\GeoIP\Favorites\SiteTable -Привязка избранной группы местоположений к сайтам, 
поля - ID, FID, SID

\Bxmaker\GeoIP\Favorites\CityTable - привязка местоположений к группе избранных местоположений, 
ID, FID, LOCATION_ID, MARK (выделение в публичной части), SITE, LOCATION ref \Bitrix\Sale\Location\LocationTable

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

Перечисленные выше классы используют ORM битрикса.

MessageTable

Класс \Bxmaker\GeoIP\MessageTable используется для организации работы с геозависимыми сообщениями.

Поля:

  • ID,
  • TYPE_ID - привязка сообщений к типу и сайту, например к типу PHONE
  • MESSAGE - содержимое сообщения
  • DEF - использваоть по умолчанию этот вараинт
  • CITY - название города, например Москва
  • START - время начала показа сообщения, по умолчанию 00:00
  • STOP - время окончания показа, по умолчанию 23:59
  • GROUP - группа местоположений (избранная группа местоположений этого модуля если не установлен модуль интернет-магазина)

Для любого типа сообщения, может быть только одно сообщение с отметкой DEF=true, оно используется как значений по умолчанию когда другие сообщения либо не подходят по городу, либо не попадают в интервал показа

TypeTable

Класс \Bxmaker\GeoIP\Message\TypeTable для работы с типами сообщений и привязки их к сайтам.

Поля:

  • ID,
  • SITE_ID, - например s1
  • TYPE - например PHONE

При работе с классами используйте ORM битрикса, то есть методы getList, add, update, delete.