| Начиная с версии 2.0.0 модуль умеет расширяться без правки кода: список geoip-служб и порядок их вызова собираются через событие onBuildServiceList. Подключайте собственные geoip-службы из других модулей — достаточно зарегистрировать обработчик события и вернуть полное имя класса своей службы. Подробнее в репозитории проекта. |
Модуль предоставляет API для определения местоположения по IP-адресу. При отсутствии явного указания адреса определение производится по текущему IP пользователя. Информация о последнем IP-адресе сохраняется в cookies для снижения количества запросов.
Если у вас истекла лицензия Битрикса, то можете скачать модуль с github
Включаемые данные о местоположении- название города
- название страны на языке сайта
- ISO-код страны
- ID страны в CMS 1С-Битрикс
- название региона
- ISO-код региона
- широта и долгота
- название района*
- диапазон IP-адресов*
*не заполняется встроенной службой Sypex; поле доступно, только если данные предоставляет сторонняя geoip-служба, подключённая через событие onBuildServiceList.
Используемые службы определения местоположенияВ обычном режиме модуль предоставляет данные из первой службы, корректно вернувшей результат. Список служб и порядок их вызова собираются через событие onBuildServiceList — тем же способом подключена и единственная встроенная служба:
- sypexgeo.net (Sypex) — активна по умолчанию.
| Службы ipgeobase.ru (IpGeoBase) и freegeoip.net (FreeGeoIp) удалены из модуля, т.к. оба сервиса прекратили работу и не предоставляют публичный API. Разработчики могут подключить собственную geoip-службу через событие onBuildServiceList, не изменяя код модуля. |
Компоненты
Указатель местоположения пользователей (rover:geoip.user.location) — позволяет установить местоположение для пользователей на основе IP-адреса, с которого они впервые зашли на сайт. Доступен только администраторам. Для работы необходим установленный модуль «Веб-аналитика».
Полное описание api и примеры использования на гитхабе проекта: https://github.com/pavelshulaev/geoip
| Если вам нужен более расширенный функционал и более «пользовательский» интерфейс с похожим функционалом, рекомендую решение «Улучшенный выбор местоположения с определением по IP, замена контента в зависимости от города». |
Если модуль был вам полезен, вы можете оставитьпожертвование тут ❤️ или тут❤️
— Встроенная служба (Sypex) регистрируется тем же событием — можно подключать собственные службы из других модулей без правки ядра модуля (см. README, раздел «Расширение списком служб»).
— `Service::build()` упрощён: принимает только полное имя класса службы (FQCN); поддержка короткого имени убрана.
— Удалены службы IpGeoBase (ipgeobase.ru) и FreeGeoIp (freegeoip.net) — оба сервиса прекратили работу, публичное api недоступно. Вместе с классами удалены неиспользуемые опции `ipgeobase-active` и `freegoip-active`. При необходимости их можно подключить как сторонние службы через `onBuildServiceList`.
— Исправлена рассинхронизация кэша `Location::getInstance()`: `reload($ip)` с явно указанным ip теперь обновляет `$this->ip` и переиндексирует внутренний кэш инстансов, чтобы повторный `getInstance()` по старому ip не возвращал объект с данными уже другого адреса.
— `Location::getData()` при ошибке пишет в поле `error` текст исключения вместо статичной строки `'error'` — упрощает диагностику.
— Все обращения к строкам локализации переведены с устаревшей `GetMessage()` на `\Bitrix\Main\Localization\Loc::getMessage()`.
— Минимальная требуемая версия php повышена до 8.1 — синхронизирована проверка при установке (`install/index.php`) с фактическим рантайм-гейтом модуля (`include.php`). Ранее проверка при установке пропускала php 7.2, хотя модуль уже не грузился на версиях ниже 8.1.
— Компонент `rover:geoip.user.location`: получение IP регистрации пользователя переведено с прямого SQL-запроса к таблице `b_stat_session` на D7 API (`\Bitrix\Statistic\SessionTable`); при отсутствии установленного модуля «Веб-аналитика» метод корректно возвращает `null` вместо запроса к несуществующей таблице.
— Компонент `rover:geoip.user.location`: добавлена проверка прав — просматривать и изменять данные пользователей может только администратор (`$USER->IsAdmin()`); иначе выбрасывается исключение с сообщением о нехватке прав.
— Исправлена ошибка при обновлении модуля.
— добавлена возможность подключаться к Sypex по ключу (при регистрации/подписке)
— время ожидания ответа сервиса сокращено с 2 до 0,2 секунд.
— минимальная версия php повышена до 7.2
— рефакторинг
— минимальна яверсия php повышена до 5.4
— прочие незначительные улучшения и доработки
Служба FreeGeoIp отключена, т.к. они закрыли свободный api
Исправлены ошибки при установке
- возможность явно указывать службу для определения местоположения
- необходимая версия php понижена до 5.3
- добавлены некоторые методы для получения значений
- часть старых методов помечены устаревшими, они будут удалены в следующих версиях (см. документацию (https://github.com/pavelshulaev/geoip))
Добавлена корректная обработка адресов в формате IPv6. Модуль больше не выдаёт ошибку, но определение местоположения пока недоступно.
Улучшен алгоритм определения страны
Добавлен компонент для определения и обновления местоположения пользователей
В описании добавлен пример использования в кодировке windows-1251
Обновлена документация
С api и примерами использования можно ознакомится здесь: https://github.com/pavelshulaev/geoip
Задать максимальное время ожидания ответа от geoip-сервиса можно через РНР-командную строку. Значение указывается в миллисекундах:
\Bitrix\Main\Config\Option::set('rover.geoip', 'curl-timeout', 200); |
Указание сервера для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-server', 'ru3.sxgeo.city'); |
Указание ключа доступа для Sypex
\Bitrix\Main\Config\Option::set('rover.geoip', 'sypex-key', 'abcd1'); |
Требования
- PHP версии 8.1 или выше (совместимость дополнительно проверена на PHP 8.2)
- установленная на хостинге библиотека CURL
- модуль «Веб-аналитика» (для работы компонента rover:geoip.user.location)
Наш сайт — https://rover-it.me
Для покупки товара в нашем интернет-магазине выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Быстрый заказ».
Если оформляете быстрый заказ: напишите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту или через СМС. Теперь останется только ждать доставки и радоваться новой покупке.
Оформление заказа в стандартном режиме выглядит следующим образом. Заполняете полностью форму по последовательным этапам: адрес, способ доставки, оплаты, данные о себе. Советуем в комментарии к заказу написать информацию, которая поможет курьеру вас найти. Нажмите кнопку «Оформить заказ».
Оплачивайте покупки удобным способом. В интернет-магазине доступно 3 варианта оплаты:
- Наличные при самовывозе или доставке курьером. Специалист свяжется с вами в день доставки, чтобы уточнить время и заранее подготовить сдачу с любой купюры. Вы подписываете товаросопроводительные документы, вносите денежные средства, получаете товар и чек.
- Безналичный расчет при самовывозе или оформлении в интернет-магазине: карты МИР. Чтобы оплатить покупку на сайте, система перенаправит вас на сервер платежной системы. Здесь нужно ввести номер карты, срок действия и имя держателя.
- Электронные системы при онлайн-заказе: ЮMoney. Для совершения покупки система перенаправит вас на страницу платежного сервиса. Здесь необходимо заполнить форму по инструкции.
- Безналичная оплата на наш расчетный счет по выставленному счету.
Экономьте время на получении заказа. В интернет-магазине доступно 4 варианта доставки:
- Электронная поставка - все необходимые сведения о лицензии, праве пользования, кодах, ключах и др. высылаются покупателю на его e-mail.
- Курьерская доставка. Когда товар будет отправлен с нашего склада, Вам придет уведомление. В день доставки с Вами заблаговременно свяжется курьер для уточнения времени и деталей доставки. Доставка производится "до двери". Осмотрите упаковку на целостность и соответствие указанной комплектации.
- Постамат. Когда заказ поступит на точку, на Ваш телефон или e-mail придет уникальный код. Заказ нужно оплатить в терминале постамата. Срок хранения — 3 дня.
- Доставка Почтой России. Когда заказ придет в отделение, на Ваш адрес придет извещение о посылке. Перед оплатой Вы можете оценить состояние коробки: вес, целостность. Вскрывать коробку самостоятельно Вы можете только после оплаты заказа. Один заказ может содержать не больше 10 позиций и его стоимость не должна превышать 100 000 р.
Дополнительная информация.
Изучите полный алгоритм продления лицензий на модули 1С-Битрикс: Маркетплейс, включая активацию льготных купонов. Мы детально разбираем все условия: обязательный 30-дневный срок для сохранения максимальной выгоды, пропорциональное ценообразование (12,5%, 25%, 50% от цены модуля) и ограничение по минимальной сумме в 500 рублей. Этот гайд поможет вам эффективно планировать бюджет и гарантировать актуальность вашего проекта.