Очень часто бывает задача показывать пользователю различный контент в зависимости от того, из какого государства просматривает пользователь ваш сайт. Процесс определения государства конечно же должен быть автоматизирован. В версии модуля sale 17.0.13 появилось автоматическое определение местоположения покупателя при оформлении заказа.
Определение местоположения реализовано в классах пространства имён \Bitrix\Main\Service\GeoIp. В самом начале файла с обработчиком прописываем использование данного пространства:
use \Bitrix\Main\Service\GeoIp;
Для обработки местоположения пользователя может быть использовано несколько сервисов. Список доступных можно посмотреть в административном разделе сайта: Настройки -> Настройки продукта -> Геолокация.
По умолчанию, пользователю доступны 3 обработчика: MaxMind, Sypex Geo и расширение GeoIP. Для MaxMind и Sypex Geo нужны ключи доступа к данным. При регистрации в сервисе Sypex Geo предоставляется 30000 бесплатных запросов в месяц, чего для многих сайтов достаточно.
Данный список можно расширить своими обработчиками, которые прописываются с помощью обработчика события onMainGeoIpHandlersBuildList
для модуля main
:
$eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandler( 'main', 'onMainGeoIpHandlersBuildList', 'GeoIpHandler' ); function GeoIpHandler() { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array( 'YourClass' => '/path/to/your/class.php', ) ); }
Обработчик должен обязательно содержать 3 метода: getTitle, getDescription и getData. Примеры обработчиков можно посмотреть в ядре. Встроенные в ядро обработчики расположены тут:
'\Bitrix\Main\Service\GeoIp\MaxMind' => 'lib/service/geoip/maxmind.php', '\Bitrix\Main\Service\GeoIp\Extension' => 'lib/service/geoip/extension.php', '\Bitrix\Main\Service\GeoIp\SypexGeo' => 'lib/service/geoip/sypexgeo.php'
Для начала нужно получить IP-адрес пользователя:
$ipAddress = GeoIp\Manager::getRealIp();
Чтобы получить информацию по IP пользователя, нужно вызвать метод:
$result = GeoIp\Manager::getDataResult($ipAddress, "ru")->getGeoData();
Чтобы получить код страны пользователя, нужно вызвать метод:
$country = $result->countryCode;
Еще один важный момент - есть возможность сократить количество запросов к сервису определения - вся информация о пользователе будет сохранена в cookies BX_MAIN_GEO_IP_DATA_XXX_XXX_XXX_XXX. Пока cookie будет жива и IP будет оставаться прежним, запросов в сервис геолокации по данному пользователю не будет. Для этого, нужно перед получением информации (getDataResult
), нужно вызвать метод:
GeoIp\Manager::useCookieToStoreInfo(true);
Последний момент - использование данных гео-локации в механизмах интернет-магазина. Для получения ID местоположения пользователя, нужно вызвать функцю:
\Bitrix\Sale\Location\GeoIp::getLocationId($ip, $lang);
Для получения кода местоположения используется функция:
\Bitrix\Sale\Location\GeoIp::getLocationCode($ip, $lang);
И для получения почтового индекса, используется функция:
\Bitrix\Sale\Location\GeoIp::getZipCode($ip, $lang);
Вариантов использования получения информации о геолокации пользователя может быть бесконечное множество - показ ближайшего к пользователю склада, отображение контактной информации локального представительства и многое другое.
Разработка сайта
Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...
Сопровождение сайта
Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение
Работы по сайту
Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.