Применение \Bitrix\Main\Service\GeoIp для геолокации в D7

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Применение \Bitrix\Main\Service\GeoIp для геолокации в D7
Использование геолокации в Битрикс D7 с помощью \Bitrix\Main\Service\GeoIp

В современных веб-приложениях
часто требуется  определять геолокацию пользователя по его IP-адресу. В «1С-Битрикс:  Управление сайтом» для этого предусмотрен функционал в пространстве имён  \Bitrix\Main\Service\GeoIp. Ниже мы рассмотрим, как  настроить и использовать этот сервис на практике, а также коснёмся  вопроса о том, как можно применять геоданные в модуле sale для автоматизации процессов, связанных с оформлением заказов и доставкой.
Изменено: Валерий Макеев - 29.09.2025 13:58:34
Этот код перенаправляет пользователей на соответствующую языковую версию сайта в зависимости от их страны, определенной по IP-адресу.
Код
use Bitrix\Main\Service\GeoIp\Manager;
use Bitrix\Main\Application;

// Получаем IP-адрес пользователя
$ip = Manager::getRealIp();

// Получаем геоданные
$result = Manager::getDataResult($ip, 'en');
if ($result !== null && $result->isSuccess()) {
    $geoData = $result->getGeoData();
    $countryCode = $geoData->countryCode;

    // Определяем язык сайта на основе страны пользователя
    $siteLanguage = 'en'; // язык по умолчанию
    $countryToLanguageMap = [
        'RU' => 'ru',
        'UA' => 'ua',
        'KZ' => 'kz',
        // добавьте другие страны и соответствующие языки по необходимости
    ];

    if (isset($countryToLanguageMap[$countryCode])) {
        $siteLanguage = $countryToLanguageMap[$countryCode];
    }

    // Получаем текущий URL без параметров языка
    $request = Application::getInstance()->getContext()->getRequest();
    $currentUrl = $request->getRequestedPage();
    $currentUrlWithoutLang = preg_replace('/\/[a-z]{2}(\/|$)/', '/', $currentUrl);

    // Перенаправляем пользователя на соответствующую языковую версию сайта
    $newUrl = str_replace('//', '/', $currentUrlWithoutLang . $siteLanguage . '/');
    LocalRedirect($newUrl);
} else {
    // В случае ошибки перенаправляем на версию по умолчанию
    LocalRedirect('/en/');
}

Этот код автоматически определит город пользователя и установит его в качестве  локации по умолчанию для корзины заказа.
Код
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php';

use Bitrix\Main\Service\GeoIp\Manager;
use Bitrix\Sale\Location\LocationTable;
use Bitrix\Main\Loader;

Loader::includeModule('sale');

// Получаем геоданные текущего пользователя
if ($result = Manager::getDataResult(Manager::getRealIp(), LANGUAGE_ID)) 
{
    if ($result->isSuccess()) 
    {
        $geoData = $result->getGeoData();
        $cityName = $geoData->cityName;
        
        // Ищем ID локации по названию города
        $locationRes = LocationTable::getList([
            'filter' => [
                '=NAME.LANGUAGE_ID' => 'ru',
                '=NAME.NAME' => $cityName
            ],
            'select' => ['ID']
        ]);
        
        if ($location = $locationRes->fetch()) 
        {
            // Обновляем местоположение в корзине
            Bitrix\Sale\Location\DefaultSite::setCity($location['ID']);
            echo "Установлен город: {$cityName}";
        }
    }
}
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.