Определение города по IP (через SypexGeo/SxGeo) — иллюстрация 1
Текст 1:
Определение города по IP (через SypexGeo/SxGeo) — иллюстрация 2
Текст 2
Цель: Реализовать автоматическое определение города посетителя с возможностью ручного выбора через попап.

1. Подготовка в админке Битрикс

Активация модуля "Интернет-магазин"

Если модуль не активирован:

  1. Перейдите в Настройки → Настройки продукта → Модули
  2. Найдите "Интернет-магазин"
  3. Нажмите "Установить"

Проверка работы сессий

Убедитесь, что в вашем проекте разрешено использование сессий:

  1. Откройте файл bitrix/.settings.php
  2. Проверьте наличие строки:
    'session' => ['use' => true],

2. Подготовка файловой структуры

local/
├── tools/
│   ├── sxgeo/
│   │   ├── SxGeo.php
│   │   └── SxGeoCity.dat
│   ├── detect_city.php
│   └── save_city.php
└── include/
    └── city_popup.php

Загрузка базы городов Sypex Geo

  1. Скачайте SxGeoCity.dat с официального сайта
  2. Создайте папку /local/tools/sxgeo/
  3. Поместите файл базы в эту папку

Установка класса SxGeo

  1. Скачайте SxGeo.php (Sypex Geo для PHP 5.2+) с официального сайта
  2. Поместите файл в /local/tools/sxgeo/ адаптируйте код к php версии вашего сайта если она иная

3. Создание необходимых файлов

Файл detect_city.php

Создайте файл по пути /local/tools/detect_city.php

Функционал:

  • Определяет город по IP через Sypex Geo
  • Проверяет куки пользователя
  • Возвращает данные в JSON-формате

Файл save_city.php

Создайте файл по пути /local/tools/save_city.php

Функционал:

  • Сохраняет выбранный город в сессию
  • Устанавливает куки на 30 дней
  • Возвращает статус операции

Файл city_popup.php

Создайте файл по пути /local/include/city_popup.php

Содержит:

  • HTML-разметку попапа
  • JavaScript для работы попапа
  • Логику поиска и выбора города

Обновление шаблона сайта

  1. В header.php добавьте кнопку выбора города:
    <button class="header__geo-button">...</button>
  2. В footer.php перед </body> добавьте:
    <?php include $_SERVER['DOCUMENT_ROOT'].'/local/include/city_popup.php'; ?>

4. Проверка работоспособности

Тестирование автоматического определения

  1. Откройте сайт в режиме инкогнито
  2. Проверьте, что город определяется автоматически
  3. Убедитесь, что город сохраняется при обновлении страницы

Тестирование попапа выбора

  1. Кликните на кнопку города в шапке
  2. Проверьте работу поиска по городам
  3. Нажмите "Определить автоматически"
  4. Выберите город из списка вручную
  5. Убедитесь, что выбор сохраняется
Готово! После выполнения всех шагов на вашем сайте будет работать:
  • Автоматическое определение города
  • Попап для ручного выбора
  • Сохранение выбора между сессиями