GeoLocation2 для MODX Revolution 3.x



GeoLocation2 — компонент определяет город посетителя по ip и выводит список доступных городов.

Особенности
  • определение города пользователя по ip
  • справочник стран, регионов и городов в базе. Можно добавить и изменить нужную локацию под себя
  • модалка подтверждения и смены города
  • контакты, адрес и изображение в gl_data
  • импорт и экспорт городов в csv
Установка
  • Подключите репозиторий дополнений modstore
  • Установите GeoLocation2
  • Заполните страны, регионы и города в Компоненты → GeoLocation2
Сниппет GeoLocation2Initialize — Подключает web-ассеты и конфигурацию. Вызвать в любом удобном месте.

Сниппет GeoLocation2Current — Текущее состояние города и confirmed.

Сниппет GeoLocation2Modal — UI выбора и подтверждения города.

Сниппет GeoLocation2Location — Определение локации по IP.

Сниппет GeoLocation2 — Список активных городов.

Сниппет GeoLocation2Data — Контактные данные gl_data (вкладка «Данные»).

Примеры со стенда. Fenom. Если Bootstrap 5 нет в теме, у Initialize поставьте loadBootstrap => 1.

Пример вызова, текущий город

{set $city = '!GeoLocation2Current'|snippet:[
    'asJson' => 1
]|fromJSON}
{$city|print}

(
[gl2_current_id] => 1
[gl2_current_name_ru] => Москва
[gl2_current_name_en] => Moscow
[gl2_display_name_ru] => Москва
[gl2_real_name_ru] => Москва
[gl2_default_id] => 1
[gl2_default_name_ru] => Москва
[gl2_prompt_done] => 0
[gl2_confirmed] => 0
[gl2_csrf] =>
[gl2_unknown_label] => не определён
[gl2_default_label] => По умолчанию
)
Пример вызова, модалка выбора города

{'!GeoLocation2Initialize' | snippet : ['loadBootstrap' => 1]}
{'!GeoLocation2Modal' | snippet : ['modalShow' => 1, 'modalId' => 'geolocation2Modal']}

<a href="#" class="gl2-open-modal">Открыть модалку</a>
На стенде вопрос модалки: «Ваш город — Москва?», кнопки «Да, верно» и «Изменить город».

Пример вызова, геолокация по IP

{'!GeoLocation2Location' | snippet : ['ip' => '8.8.8.8']}

{'!GeoLocation2Location' | snippet : ['ip' => '1.1.1.1']}

Пример вызова, список городов

{'!GeoLocation2' | snippet : ['limit' => 10, 'sortby' => 'name_ru', 'sortdir' => 'ASC']}

Поля записи города на стенде (Москва):

(
[id] => 1
[region_id] => 1
[name_ru] => Москва
[name_en] => Moscow
[lat] => 55.75583
[lon] => 37.61778
[okato] => 45000000000
[default] => 1
[active] => 1
)
Пример вызова, контакты текущего города

{'!GeoLocation2Data' | snippet : ['forCurrent' => 1, 'tpl' => 'tpl.GeoLocation2.data.current']}

Управление локациями в админке

Компоненты → GeoLocation2: вкладки Страны, Регионы, Города, Данные.
На вкладке Города доступен импорт и экспорт csv.
На вкладке Данные: email, телефон, адрес, изображение. Поле class задаёт тип (GlCountry, GlRegion, GlCity), identifier: id записи.
Для сохранения нужен permission geolocation2_save.

Геолокация пользователя

Из коробки город определяется по ip через SxGeo (SxGeoCity.dat).
Стратегия задаётся настройкой geolocation2_detect_method:
  • sxgeo: по ip, включено по умолчанию
  • session: только сессия, без обращения к SxGeo
База лежит в папке
assets/components/geolocation2/vendor/sypexgeo/data/

Обновление:
php core/components/geolocation2/bin/update-sxgeo.php

Можно повесить на cron или на задачу Scheduler geolocation2_update_sxgeo. Scheduler для работы компонента не нужен.

Примечание
Справочник городов вы заполняете сами. В список и поиск попадают города с флагом active. Город с флагом default подставляется, если посетитель закрыл модалку без выбора.

Ссылки
GeoLocation2, pdoTools, MiniShop3 и другие проекты экосистемы MODX развиваются открыто и доступны сообществу. При этом значительная часть работы над ними выполняется в свободное от коммерческих проектов время.

Если вы используете эти проекты в своих сайтах и магазинах, они помогают вам зарабатывать, экономить время разработки или просто хотите, чтобы MODX и его Open Source-экосистема продолжали развиваться — можно поддержать разработку донатом.
Даже небольшой регулярный донат помогает выделять больше времени на:

  • развитие Open Source-проектов;
  • выпуск новых версий и функциональности;
  • исправление ошибок и технический долг;
  • поддержку актуальных версий PHP и MODX;
  • развитие документации;
  • разбор issues и pull request'ов;
  • создание новых бесплатных дополнений и инструментов.
Если хотите поддержать эту работу:

Спасибо всем, кто использует, тестирует, создаёт issues, отправляет pull request'ы, пишет документацию и поддерживает проекты финансово.

Open Source существует благодаря людям, которые не только используют проекты, но и помогают им становиться лучше.
Иван Бочкарев
Иван Бочкарев
1 час назад
modx.pro
10

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0