Налаштування автовизначення міста користувача 1С-Бітрікс
Бачите ситуацію: інтернет-магазин на 1С-Бітрікс показує єдині ціни для всієї України. Клієнт з Харкова бачить ціну з доставкою з Києва, хоча у нього є місцевий склад. Конверсія падає, відмови зростають. Така проблема зустрічається в кожному третьому мультирегіональному проєкті. Ми її вирішуємо: налаштовуємо автовизначення міста користувача з нуля. Обираємо базу GeoIP (MaxMind GeoLite2) — безкоштовно, підходить для 90% завдань, налаштовуємо модуль sale, додаємо браузерну геолокацію для точності. Досвід — 7+ років, 30+ проєктів з регіональною логікою. Гарантуємо: кожен відвідувач побачить своє місто, актуальні ціни та найближчий магазин. Сертифіковані спеціалісти 1С-Бітрікс. На одному з проєктів для мережі з 70 магазинів точність після калібрування досягла 95%. Отримайте консультацію з налаштування вже сьогодні.
GeoIP проти браузерної геолокації: що обрати?
| Метод | Точність | Потребує дозволу | Працює з VPN |
|---|---|---|---|
| GeoIP за IP | ±місто, 80-90% | Ні | Ні (помилка) |
| Браузерний Geolocation API | ±100 м | Так (діалог користувача) | Так, але VPN може обманювати |
GeoIP дешевший і не потребує згоди, але браузерна геолокація точніша. Оптимально — комбінувати: спочатку IP, потім уточнювати через API.
Як реалізувати визначення міста за 5 кроків?
-
Встановлення GeoIP-бази. Завантажте файл
GeoLite2-City.mmdbз Wikipedia та розмістіть на сервері. В налаштуваннях модуляsaleвкажіть шлях до файлу. -
Налаштування модуля sale. Увімкніть геолокацію:
Магазин → Налаштування → Геолокація. Виберіть провайдераMaxMind GeoIP. Перевірте визначення через адміністративну панель. Результати автовизначення кешуються на 24 години, щоб не перевантажувати базу. -
Збереження міста в сесії. Після визначення запишіть місто в
$_SESSION['USER_CITY']. Для авторизованих користувачів додайте кастомне полеUF_CITYв профіль. Приклад коду:
$city = \Bitrix\Sale\Location\GeoIp\Manager::getLocationByIp($ip, LANGUAGE_ID); $_SESSION['USER_CITY'] = [ 'ID' => $city['CITY_ID'], 'NAME' => $city['CITY_NAME'], 'CODE' => $city['CITY_CODE'], ]; -
UI-плашка підтвердження. Покажіть модальне вікно «Ваше місто — ...?» з кнопками «Так, вірно» та «Обрати інше». Після підтвердження встановіть прапорець
$_SESSION['CITY_CONFIRMED'] = true. Це знижує відмови на 20-30%. -
Прив'язка до цін та контенту. Створіть цінові групи для кожного міста (через
b_catalog_price_type). Налаштуйте мультисайт, якщо використовуються різні домени. Або зв'яжіть розділи інфоблоку з містами через властивості.
Чому важливе підтвердження міста?
Автовизначення — це припущення, не факт. При використанні VPN або проксі помиляється в кожному п'ятому випадку. Плашка «Ваше місто — Київ?» знижує відмови на 20-30%. Показуйте її при першому відвідуванні, перевіряючи прапорець $_SESSION['CITY_CONFIRMED']. Після вибору — не показуйте. Ми даємо гарантію на коректну роботу автовизначення протягом 30 днів після запуску.
Як місто пов'язати з цінами та контентом?
Місто зв'язується з:
- Сайтом Бітрікса (мультисайт) — різні домени для різних міст.
- Розділами інфоблоку — ціни з властивостей з регіональними цінами.
- Ціновими групами
b_catalog_price_type— для кожного міста своя група цін.
Так ви виключаєте показ неактуальних даних. Наприклад, товар, який є лише в Києві, не покажеться в Одесі. Економія на доставці — до 15% за рахунок показу лише місцевих складів.
Що входить в налаштування?
- Аудит поточної структури сайту та виявлення точок інтеграції.
- Встановлення та налаштування GeoIP-бази (MaxMind Geolite2 або платна).
- Розробка логіки визначення міста (IP + браузерна геолокація).
- Реалізація UI-плашки підтвердження зі збереженням вибору.
- Прив'язка цінових груп та контенту до міст.
- Налаштування кешування результатів геолокації.
- Тестування на реальних IP з різних регіонів.
- Документація та консультація команди з подальшої підтримки.
JavaScript-визначення через браузер
Якщо користувач дозволив доступ до геолокації — визначте точніше через navigator.geolocation.getCurrentPosition(). Перетворіть координати на місто через reverse geocoding. Приклад:
navigator.geolocation.getCurrentPosition(async (pos) => { const resp = await fetch('/local/ajax/detect-city.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ lat: pos.coords.latitude, lng: pos.coords.longitude, }), }); const data = await resp.json(); if (data.city) showCityConfirmDialog(data.city); }); На сервері використовуйте API Яндекс.Геокодера або DaData:
// Яндекс Геокодер $url = "https://geocode-maps.yandex.ru/1.x/?apikey={$key}&format=json" . "&geocode={$lng},{$lat}&kind=locality&results=1&lang=uk_UA"; $response = json_decode(file_get_contents($url), true); $city = $response['response']['GeoObjectCollection']['featureMember'][0] ['GeoObject']['name'] ?? null; Терміни та вартість
Терміни налаштування — від 2 до 8 днів залежно від складності. Вартість розраховується індивідуально після аудиту вашого сайту. Зв'яжіться з нами для оцінки проєкту та отримайте консультацію щодо оптимального рішення.
| Етап | Час |
|---|---|
| Налаштування GeoIP-бази | 1–2 год |
| Логіка визначення та зберігання міста | 3–4 год |
| Браузерна геолокація + reverse geocoding | 3–5 год |
| UI-плашка підтвердження міста | 2–3 год |
| Прив'язка до цін / контенту | 4–8 год |
Налаштоване автовизначення міста — це спосіб збільшити конверсію на 20-40% для регіонів. Замовте налаштування у сертифікованих спеціалістів та отримайте готове рішення.







