Есть такая крутая библиотека Sypex Geo. Она определяет страну, регион, город и географические координаты по IP-адресу в 4-5 раз быстрее ближайших конкурентов. Сайт http://sypexgeo.net/ На базе нее и строится данное решение для определения города или региона. Что нам нужно? 1. Качаем библиотеку http://sypexgeo.net/ru/download/ нам нужно Sypex Geo для PHP 5.2+ и базу городов Sypex Geo City (utf версия) 2. Открываем архив и копируем файлы в директорию system/vendor/geoip 3. В нужном контроллере, например header.php вставим PHP: require_once(DIR_SYSTEM . "vendor/geoip/SxGeo.php"); $SxGeo = new SxGeo(DIR_SYSTEM . "vendor/geoip/SxGeoCity.dat"); $ip = $_SERVER['REMOTE_ADDR']; $data['geoip'] = $SxGeo->getCityFull($ip); 4. В шаблоне ловим данные и делаем условия. Например для версии 3х PHP: {% set geotel = '8-800-000-00-00' %} {% if geoip.region.iso == 'RU-OMS' %} {% set geotel = '+7 (3812) 00-00-00' %} {% endif %} тут мы просто присваиваем в переменную geotel нужный телефон, а потом можем вывести как обычно {{ geotel }} Если смотреть, что у нас в массиве, как памятка, то ниже смотрим Код: Array ( [city] => Array ( [id] => 1496153 [lat] => 54.99244 [lon] => 73.36859 [name_ru] => Омск [name_en] => Omsk ) [region] => Array ( [id] => 1496152 [name_ru] => Омская область [name_en] => Omskaya Oblast' [iso] => RU-OMS ) [country] => Array ( [id] => 185 [iso] => RU [lat] => 60 [lon] => 100 [name_ru] => Россия [name_en] => Russia ) ) ВАРИАНТ 2 Чтобы не скачивать себе базу каждый раз, то можно воспользоваться их апи. Там все просто. Пишем PHP: $data['geoip'] = json_decode(file_get_contents('http://api.sypexgeo.net/json/'), true); В итоге получаем все тоже самое, но с помощью запроса к серверу sypexgeo
потому что из фронта обращение к стороннему сервису (который может ответить , а может и не ответить. И понизит в попугаях Мало того, сам либа... А попробуйте просто обработать такой массив данных, хотя он и сжат и индекситрован.. поэтому, здесь показан только принцип А в админке, можно подключать по мере необходимости