Налаштування геолокації на Бітрікс: серверна та браузерна

Уявіть: клієнт із Новосибірська заходить на інтернет-магазин, бачить ціни для Москви, а при оформленні замовлення розуміє, що доставка до Новосибірська коштує вдвічі дорожче. Логічний підсумок — перехід на інший сайт. Причина — **неправильно налаштована геолокація**. Ми, команда з досвідом 5+ років,
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування геолокації на Бітрікс: серверна та браузерна
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1466
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    811
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1167

Уявіть: клієнт із Новосибірська заходить на інтернет-магазин, бачить ціни для Москви, а при оформленні замовлення розуміє, що доставка до Новосибірська коштує вдвічі дорожче. Логічний підсумок — перехід на інший сайт. Причина — неправильно налаштована геолокація. Ми, команда з досвідом 5+ років, за 30+ проєктів з налаштування геолокації на Бітрікс, навчилися усувати такі проблеми. Гарантуємо коректну роботу на всіх етапах — від визначення міста до вибору пункту видачі. Згідно з офіційною документацією 1С-Бітрікс, модуль геолокації вимагає додаткової інтеграції сторонніх сервісів. Правильна геолокація скорочує кількість помилкових замовлень на 15-20%, а конверсія зростає на 12-15%.

Чому точна геолокація критична для інтернет-магазину?

Неправильне визначення міста призводить до каскаду помилок: ціни неактуальні, доставка розрахована невірно, складські залишки не відповідають регіону. Кожен другий сеанс з помилкою геолокації закінчується відмовою від покупки. Наші сертифіковані спеціалісти 1С-Бітрікс налаштовують двоетапну перевірку: грубе визначення по IP та уточнення через GPS, якщо користувач дозволив. За статистикою, коректна геолокація підвищує конверсію на 12-15% і скорочує кількість помилкових замовлень на 20%.

Як визначити місто по IP в 1С-Бітрікс: покрокова інструкція

  1. Вибір GeoIP-сервісу. Оцініть вимоги до точності та бюджет. Для більшості проєктів підходить безкоштовна база MaxMind GeoLite2-City. Якщо потрібне точне визначення малих міст, розгляньте DaData API або платний MaxMind GeoIP2.
  2. Встановлення бібліотеки. Для MaxMind виконайте composer require geoip2/geoip2. Для Sypex Geo завантажте клас і підключіть в init.php.
  3. Створення обробника події. Підпишіться на OnPageStart та реалізуйте визначення міста з кешуванням у сесії.
  4. Інтеграція з модулем sale.location. Зіставте знайдене місто із записом у b_sale_location.
  5. Реалізація попапу. Покажіть користувачеві підтвердження міста з можливістю вибору.

Ось приклад обробника для MaxMind, який варто розмістити в init.php:

AddEventHandler("main", "OnPageStart", function() { if (!isset($_SESSION['USER_REGION'])) { $ip = $_SERVER['REMOTE_ADDR']; // Убираем IPv6 mapped IPv4 $ip = str_replace('::ffff:', '', $ip); $reader = new \GeoIp2\Database\Reader('/path/to/GeoLite2-City.mmdb'); try { $record = $reader->city($ip); $_SESSION['USER_REGION'] = [ 'city' => $record->city->name, 'city_ru' => $record->city->names['ru'] ?? '', 'lat' => $record->location->latitude, 'lng' => $record->location->longitude, ]; } catch (\Exception $e) { $_SESSION['USER_REGION'] = ['city' => 'Москва']; } } }); 

Результат кешується в сесії — не варто робити запит до GeoIP на кожен хіт. Це знижує навантаження на сервер та прискорює завантаження сторінки.

Інтеграція з модулем Location Бітрікса

Модуль sale містить таблицю b_sale_location з ієрархією: країна → регіон → місто. Це внутрішній довідник Бітрікса для розрахунку доставки. При визначенні міста по GeoIP потрібно знайти відповідний запис:

$city = \Bitrix\Sale\Location\Search\Finder::find([ 'select' => ['ID', 'NAME.NAME', 'CODE'], 'filter' => ['NAME.NAME' => $detectedCityName, 'NAME.LANGUAGE_ID' => 'ru'], ]); 

Якщо збіг знайдено — зберігаєте LOCATION_CODE у сесію/cookie. Цей код використовується в компоненті bitrix:sale.location.selector.system та в розрахунку вартості доставки.

Як використовувати HTML5 Geolocation API в Бітрікс?

HTML5 Geolocation API дає точне позиціонування, але вимагає дозволу користувача та працює тільки по HTTPS:

navigator.geolocation.getCurrentPosition( function(position) { const lat = position.coords.latitude; const lng = position.coords.longitude; // Відправляємо координати на сервер fetch('/local/ajax/set_location.php', { method: 'POST', body: JSON.stringify({ lat, lng }), headers: { 'Content-Type': 'application/json' } }); }, function(error) { // Користувач відмовив — використовуємо IP-геолокацію } ); 

На сервері по координатах роблять зворотне геокодування (reverse geocoding) через Яндекс.Геокодер або Google Maps Geocoding API. Яндекс.Геокодер є кращим для російських адрес.

Попап підтвердження міста

Стандартний UX: визначаєте місто автоматично, показуєте попап «Ваше місто — %city%? Так / Ні, вибрати інше». При «Так» встановлюєте cookie user_city з тривалим TTL (30 днів). При «Ні» — показуєте пошук по містах. Компонент bitrix:sale.location.selector.system надає готовий селектор, але його візуальне оформлення часто вимагає кастомізації шаблону під дизайн сайту.

Порівняння методів серверного визначення

Метод База Точність (місто) Оновлення Вартість
MaxMind GeoLite2 .mmdb 85-90% Щотижня Безкоштовно
MaxMind GeoIP2 .mmdb 95-98% Щомісяця За підпискою
Sypex Geo PHP-клас 90-95% для РФ Регулярно Безкоштовно
DaData API API 95%+ Real-time За запитами

MaxMind GeoIP2 — індустріальний стандарт. Безкоштовна GeoLite2-City оновлюється щотижня, точність для Росії — 85-90% на рівні міста. Платна GeoIP2-City точніша, але коштує за підпискою. Sypex Geo краще працює по СНД, не вимагає composer. DaData API не вимагає локальної бази, підходить при невисокому навантаженні.

Приблизні етапи робіт

Етап Опис Тривалість
Аналіз Вивчення поточної архітектури, вибір GeoIP-сервісу 1 день
Розробка Написання обробника, інтеграція з b_sale_location 2-4 дні
Тестування Перевірка на реальних IP, юзабіліті попапу 1 день
Деплой та навчання Викладення на продакшн, консультація розробника 1-2 дні

Що входить у роботу з налаштування геолокації?

Результат впровадження — це не просто скрипт. Ви отримуєте:

  • Конфігураційний файл з налаштуваннями вибраної GeoIP-бази.
  • Скрипт інтеграції в init.php з обробкою помилок та кешуванням.
  • Зіставлення міст з GeoIP із записами b_sale_location.
  • Налаштований попап з селектором міста та механізмом cookie.
  • Документацію з оновлення бази та обслуговування.
  • 1 годину онлайн-навчання вашого розробника.
  • Підтримку протягом 2 тижнів після здачі.

Терміни та вартість

Терміни — від 3 до 10 днів залежно від складності (кількість сайтів, необхідність кастомізації попапу, вибір GeoIP-сервісу). Вартість розраховується індивідуально після аналізу вашого технічного завдання. Економія часу: правильна геолокація скорочує кількість помилкових замовлень на 15-20%, що окупає впровадження протягом першого місяця. Отримайте консультацію з налаштування геолокації для вашого проєкту — наші інженери допоможуть підібрати оптимальний метод.