Перейти к содержанию

Рекомендуемые сообщения

Определение города по IP (Geo IP)


Определение города по IP (Geo IP)


Модуль определяет город по IP-адресу либо пользователь выбирает его вручную. Автоматически заполняются поля Страна, Регион, Город, Индекс (не для всех) при регистрации и оформлении заказа, избавляя пользователя от ручного ввода.

Геосообщения - возможность выводить разный текст или html для городов и регионов (см. скриншоты и FAQ)

Редиректы - в зависимости от города модуль может перебрасывать пользователя на нужный поддомен и URL.

Для всех стран можно задать свою валюту, она будет автоматически выставляться при определении по IP.

 

Модуль содержит базу населенных пунктов России (ФИАС), Украины, Белоруссии, Казахстана на русском языке.

Определение по IP работает для России, Украины, Белоруссии и Казахстана с точностью до города для других стран с точностью до страны.

Модуль русскоязычный, автор не гарантирует 100%-ю работу модуля для других языков. Настройка редиректов, геосообщений и групп покупателей возможна только для указанных выше стран.

 

Прежде, чем купить, посмотрите расширенную версию модуля - GeoIP Pro

image.png.78eb19e6fedef5bf6c803624cb58c862.png

 

Лицензия

Модуль работает по лицензии (один домен + его поддомены), выдается по запросу личным сообщением с темой "Лицензия GeoIP", обязательно указывайте адрес вашего сайта!

 

Дополнительные лицензии на другие домены можно оплатить через Яндекс.Деньги или переводом на карту Сбербанка, стоимость второй и последующих лицензий при оплате указанными способами - 330 рублей.

 

Если одна админка на несколько сайтов с разными адресами, ключи можно прописать через разделитель |

 

Важно! Удаление или перенос лицензии на другой домен невозможно! Это уже другая лицензия, которая покупается отдельно.

 

Установка

Скачайте архив, подходящий под вашу версию OpenCart, OcStore и т.д. Следуйте инструкции в архиве Установка.txt.

 

Поддержка

При обращении за тех. поддержкой обязательно указывайте адрес сайта и как можно точнее описывайте проблему.

Стоимость установки модуля автором или адаптация модуля под тему (настройка css-стилей) 400 рублей

Перед обращением в поддержку обязательно прочитайте FAQ на этой странице.

 

Демо

OpenCart 1.5

http://opencart.progroman.ru/demo/geoip/

Админка (demo / demo)

http://opencart.progroman.ru/demo/geoip/admin/index.php?route=module/geoip

 

OpenCart 2

http://opencart.progroman.ru/demo/1/

Админка (demo / demo)

http://opencart.progroman.ru/demo/1/admin/index.php?route=module/geoip

 

FAQ (ответы на вопросы) для версии 6

 

После установки модуля сайт не работает: белый экран или Ошибка HTTP 500 (Internal Server Error)

  Скрыть контент

Белый экран говорит о том, что произошла серьезная ошибка в коде, но вывод ошибок отключен. 

Сначала нужно понять причину ошибки, для этого включаем вывод ошибок в браузер (см. след. пункт). 

Смотрим ошибку, пробуем исправить, ищем решение в интернете. 

Если не получается исправить, скидываем текст ошибки автору в ЛС.

 

Как включить вывод ошибок

  Скрыть контент

Сделать это можно несколькими способами: через панель управления, в php.ini, в .htaccess или непосредственно в коде. 

Проще всего сделать это в коде в index.php или в admin/index.php (если ошибка в админке). 

В самом начале файла, сразу после <?php пишем:



ini_set('display_errors', 1);

Обновляем страницу, должен появиться текст ошибки.

После исправления ошибки вывод ошибок нужно отключить.

 

Работа с поддоменами

  Скрыть контент

Если вы используете поддомены, установите для них одну сессию, для этого в .htaccess добавьте:

 

php_value session.cookie_domain .site.com

где site.com - ваш сайт

 

Если ваш сайт находится на виртуальном хостинге и при этом php работает в режиме FastCGI, 

то установка некоторых переменных невозможна через .htaccess, в том числе и php_value session.cookie_domain

Попробуйте устанавливать данное значение непосредственно в коде скрипта используя функцию ini_set().

В самом начале файла, сразу после <?php пишем:



ini_set('session.cookie_domain', '.site.com');

В настройках модуля на вкладке "Редиректы" пропишите основной домен (для редиректа по-умолчанию).

 

 

Как пользоваться геосообщениями

Скрытый текст

1. Создаем в админке модуля геосообщения с определенным ключом (например, phone), одному ключу могут соответствовать разные города

86f0151dfe.jpg

2. В любом шаблоне в нужном месте вставляем:



<span class="prmn-cmngr-message" data-key="phone"></span>

в data-key прописываем ключ геосообщения

3. Чтобы задать значение по-умолчанию, добавьте атрибут data-default с нужным значением



<span class="prmn-cmngr-message" data-key="phone" data-default="8-800-111-11-11"></span>

 

 

Как отключить попап "Угадали город"

Скрытый текст

При выводе модуля установить атрибут data-confirm="false" или удалить его

1. Вывод модуля с попапом "Угадали город"



<div class="prmn-cmngr" data-confirm="true"></div>

2. Без



<div class="prmn-cmngr"></div>

 

 

Вывод модуля и геосообщений "вручную" (не через ajax)

Скрытый текст

По-умолчанию модуль выводится через ajax. Чтобы вывести вручную, нужно в соответствующем шаблону контроллере добавить код.

Вывод модуля

В контроллере:



$data['geoip'] = $this->load->controller('module/progroman/city_manager');

В шаблоне:



<div class="prmn-cmngr" data-confirm="true"><?= $geoip; ?></div>

 

Вывод геосообщения с ключом "phone"

В контроллере:



$data['geoip_phone'] = $this->progroman_city_manager->getMessage('phone');

В шаблоне:



<?= $geoip_phone ?>

 

 

Получение данных из модуля (страна, регион, город и др.) в контроллерах

Скрытый текст


$data['country_id'] = $this->progroman_city_manager->getCountryId();
$data['country_name'] = $this->progroman_city_manager->getCountryName();
$data['zone_id'] = $this->progroman_city_manager->getZoneId();
$data['zone_name'] = $this->progroman_city_manager->getZoneName();
$data['city_name'] = $this->progroman_city_manager->getCityName();
$data['short_city_name'] = $this->progroman_city_manager->getShortCityName();
$data['postcode'] = $this->progroman_city_manager->getPostcode();
$data['fias_id'] = $this->progroman_city_manager->getFiasId();
$data['info'] = $this->progroman_city_manager->getFullInfo();

 

 

Вывод города в title страницы 

Спойлер

 

Для примера рассмотрим страницу категории, для других страниц делается по аналогии.
За вывод страницы отвечает контроллер catalog/controller/product/category.php, title устанавливается так:

image.png.b2ab2b3bf0b7aeb538f2973fd4d8f8d5.png

 

т.е. получаем категорию из базы, это значение устанавливается в админке при редактировании категории:

image.png.946baf7a1409fca9abde258956a01d3b.png

 

допишим шаблон для города так:

image.png.1b3c230371b07b476f36007f47cdc698.png

 

В контроллере делаем замену:

image.png.96777423872d4b47acf842e9b96ad668.png

 

Код:



$city = $this->progroman_city_manager->getShortCityName();
$title = str_replace('%CITY%', $city, $category_info['meta_title']);
$this->document->setTitle($title);

 

 

Обновление до версии 6.0

Спойлер

Для обновления необходимо удалить старую версию:

  1. Отключите модуль в админке
  2. Удалите модификаторы
  3. Уберите правки из index.php (или system/config/catalog.php для OC 2.2 и выше)
  4. Удалите файлы:
  • admin/controller/module/geoip.php
  • admin/language/russian/module/geoip.php
  • admin/language/english/module/geoip.php
  • admin/model/module/geoip.php
  • admin/view/template/module/geoip/ (всю папку)
  • admin/view/template/module/geoip.tpl
  • catalog/controller/module/geoip.php
  • catalog/language/russian/module/geoip.php
  • catalog/language/english/module/geoip.php
  • catalog/model/module/geoip.php
  • catalog/view/theme/default/template/module/geoip/ (всю папку)
  • catalog/view/theme/default/template/module/geoip.tpl
  • catalog/view/theme/default/stylesheet/geoip.css
  • catalog/view/javascript/jquery/jquery.geoip-module.js
  • system/library/geoip/ (всю папку)
  • system/library/geoip.php

Установите новую версию. Таблицы в базе данные: geoip_city, geoip_currency, geoip_redirect, geoip_rule больше не нужны, можете удалить их вручную, установщик скопировал данные из них в новые таблицы

 

Совместимость с Simple. Использование автозаполнения поля город из базы модуля GeoIP

Спойлер

Модуль полность совместим с модулем "Simple - упрощенная регистрация и заказ".
Дополнительных настроек делать не нужно. Единственное, что можно настроить -
чтобы при автозаполнении поля город Simple использовал базу модуля GeoIP.
Оформление заказа в Симпл:

7eb55d0c33.jpg

Для этого необходимо в файле /catalog/model/tool/simplegeo.php раскоментировать (убрать /* в начале и */ в конце) следующий код:



            /*$sql = "SELECT                f1.fias_id AS id,
            ...
            f3.level,                f1.shortname            LIMIT 100";*/

 

 

Совместимость с шаблоном Journal2

 

Чтобы в Journal2 работала подстановка страны, региона, города:

/catalog/model/journal2/checkout.php метод save() 268 строка



if ($this->customer->isLogged()) {    $address_id = $this->customer->getAddressId();    if ($address_id) {        $address_info = $this->model_account_address->getAddress($address_id);    } else {        $addresses = $this->model_account_address->getAddresses();        $address_id = is_array($addresses) && count($addresses) ? array_get_first_key($addresses) : null;        $address_info = $address_id !== null ? $addresses[$address_id] : null;    }} else {    $address_info = null;}
 

Заменить на:



if ($this->customer->isLogged()) {    $address_id = $this->customer->getAddressId();    if ($address_id) {        $address_info = $this->model_account_address->getAddress($address_id);    } else {        $addresses = $this->model_account_address->getAddresses();        $address_id = is_array($addresses) && count($addresses) ? array_get_first_key($addresses) : null;        $address_info = $address_id !== null ? $addresses[$address_id] : null;    }} elseif (!empty($this->session->data['payment_address'])) {     $address_info = $this->session->data['payment_address'];} elseif (!empty($this->session->data['shipping_address'])) {     $address_info = $this->session->data['shipping_address'];} else {     $address_info = null;}
 

 

Совместимость с Ajax Quick Checkout

Скрытый текст

Если в Ajax Quick Checkout не подставляются страна, регион и город нужно в его настройках выключить опцию "Clear checkout session after page refresh". Не забудьте в настройках модуля GeoIP проверить вкладку "Регионы".

 

33a4d95028.jpg

 

Ошибка "Warning: fread(): Length parameter must be greater than 0 in ...system/library/progroman/citymanager/driver/sxgeo.php"

  Скрыть контент

В system\library\progroman\citymanager\driver\sypex.php

вместо



        $sxGeo = new SxGeo($file);
        $data = $sxGeo->getCityFull($this->ip);

так:



        $encoding = mb_internal_encoding("8bit");
        $sxGeo = new SxGeo($file);
        $data = $sxGeo->getCityFull($this->ip);
        mb_internal_encoding($encoding);

 

Или в настройках PHP поставить



mbstring.func_overload = 2

 

 

FAQ (ответы на вопросы) для версий до 6

Спойлер

Fatal error: Call to a member function getZoneId() on a non-object in.../catalog/controller/module/geoip.php

Спойлер

При установке был пропущен п.3 из инструкции по установке:

3) Для Opencart до версии 2.2:

В index.php перед $controller = new Front($registry); добавьте

$registry->set('geoip', new GeoIP($registry));

 

Как пользоваться геосообщениями

Спойлер

Геосообщения предназначены для вывода информации в зависимости от местоположения пользователя.

Для примера, выведем разные номера телефонов для пользователей из Украины, России и конкретно Москвы, а также тексты для Москвы и Санкт-Петербурга в шапке сайта.

Заходим в админку: Дополнения → Модули → GeoIP, выбираем вкладку Геосообщения.

Добавляем правила.

В поле "ключ" вписываем одинаковый для этой группы ключ (латинские буквы и цифры), например, "phone".

В поле "зона" выбираем из выпадающего списка нужную страну, регион или город.

В поле "значение" соответствующее геозоне значение.

2.jpg

Открываем контроллер шапки /catalog/controller/common/header.php и в начале функции index() после { добавляем:



$geoip = $this->registry->get('geoip');
$this->data['geoip_phone'] = $geoip->getRule('phone');
$this->data['geoip_text'] = $geoip->getRule('text');

/catalog/controller/product/product.php и /catalog/view/theme/ВАША_ТЕМА/template/product/product.tpl и т.д.

3.jpg

 

Как получить страну, регион, город с помощью geoip

Спойлер


$geoip = $this->registry->get('geoip');

// Название страны
$country = $geoip->getCountryName();

// Название региона
$zone = $geoip->getZoneName();

// Название города или населенного пункта с районом (Дмитровский р-н, г. Дмитров)
$city = $geoip->getCityName();

// Название города
$short_city = $geoip->getShortCityName();

// Индекс
$postcode = $geoip->getPostcode();

 

Интеграция с модулем расчета доставки eDost, СДЭК и другими 

Спойлер

Для расчета доставки необходимы: страна и город, но, по-умолчанию, к городу добавляется район.

Страна: Российская Федерация

Регион: Московская область

Город: Одинцовский р-н, Одинцово

Чтобы сделать:

Город: Одинцово

В catalog\controller\module\geoip.php замените в 4-х местах:



$city_name = $this->geoip->getCityName();

на



$city_name = $this->geoip->getShortCityName() ? $this->geoip->getShortCityName() : $this->geoip->getCityName();

 

 

 


  • Добавил
  • Добавлено
    31.01.2013
  • Категория
  • Системные требования
    PHP 5.4+ionCube PHP Loader версии 5 и вышеУстановленный в opencart Vqmod (только для Opencart/ocStore 1.5.*)
  • Сайт разработчика
  • Старая цена
  • Метод активации
    По запросу в ЛС
  • Ioncube Loader
    Требуется
  • OpenCart
    3.0
    2.3
    2.2
    2.1
    2.0
    1.5.6.4
    1.5.6.3
    1.5.6.2
    1.5.6.1
    1.5.6
    1.5.4.1
    1.5.3.1
  • ocStore
    3.0
    2.3
    2.2
    2.1
    1.5.5.1.2
    1.5.5.1.1
    1.5.5.1
    1.5.4.1.2
    1.5.4.1.1
    1.5.4.1
    1.5.3.1
    1.5.2.1
    1.5.1.3
  • OpenCart.Pro, ocShop
    Opencart.pro 2.3
    Opencart.pro 2.1
    OcShop 2.0.3.х
    OcShop 1.5.6.4.х

 

  • +1 8

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хорошая штука, но как дела обстоят с Укртелекомом, Киевстаром, Интертелекомом, Триоланом и подобными товарищами ?

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы бы демку сделали, а мы б посмотрели на качество определения)

хорошая штука, но как дела обстоят с Укртелекомом, Киевстаром, Интертелекомом, Триоланом и подобными товарищами ?

А что с Триоланом не так, статичные ip у всех юзеров, определять должно отлично.

Киевстар, думаю тоже проблем нет.

А вот Укртелеком - только Киев показывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

статические конечно хорошо но когда начинаешь настраивать реклоаму по гео то тихо куееешь от того что киев это 70% страны

все крупные игроки интернет рынка по райп нет являются киевом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавил демку http://opencart.progroman.ru

Работает. Определило правильно (пров Триолан). http://prntscr.com/r3jl9

статические конечно хорошо но когда начинаешь настраивать реклоаму по гео то тихо куееешь от того что киев это 70% страны

все крупные игроки интернет рынка по райп нет являются киевом

Судя по заказам, так и есть, ~60% заказы из столицы))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

видать вашего прова купили поэтому он работает под сеткой полтавы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Завтра попрошу людей потестить из под разных провайдеров с разных городов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

результаты будут крайне интересны так как раньше ситуация с гео была крайне печальна

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересует техническая сторона вопроса. Как реализовано?

1. База Geo IP распространяется вместе с модулем?

2. Использование стороннего сервиса Geo IP (CURL-запросы)?

И баг-репорт:

В Фаерфоксе определило до области, в Хроме - Москва.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересует техническая сторона вопроса. Как реализовано?

1. База Geo IP распространяется вместе с модулем?

2. Использование стороннего сервиса Geo IP (CURL-запросы)?

И баг-репорт:

В Фаерфоксе определило до области, в Хроме - Москва.

Используется сторонний сервис ipgeobase.ru. Если нужна локальная база, могу доделать и выложить, только там нужно следить за актуальностью и постоянно ее обновлять.

Интересный баг, можете скинуть мне свой IP?

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак, результаты тестов ))

Украина, Полтава, Триолан - определяет

Украина, Полтава, Воля - определяет

Украина, Полтава, Укртелеком - НЕ определяет

Украина, Запорожье, местный провайдер - определяет

Украина, Харьков, Триолан - определяет

Украина, Черновцы, местный провайдер - НЕ определяет

Россия, Санкт-Петербург, определяет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ясно значит Триолан что то поменял

но вот Укртелеком лет 100 еще не раскачается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как он будет работать с модулем простой регистрации и заказа Симпл? Совместимость кто нибудь проверял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак, результаты тестов ))

Россия, Санкт-Петербург, определяет

Билайн (бывшая корбина)- не определяет! (Санкт-Петербург)

40eeb708637931f053af44cbd9e09aa0.jpg

Изменено пользователем maugli

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а у меня не определяется :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оренбург - уфанет определил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8c113d4153de.jpg

Казахстан-Алматы-Мегалайн

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Челябинск - определил Челябинская область.

Нужно сделать определение до конкретного населенного пункта - города, деревни.

Тогда модуль можно и дороже продавать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Увы, прекрасный любимый Укретелеком по всей Украине видит как Киев, местный провайдер по области тоже видится как Киев, сервис работает весьма загадочно :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Увы, е**чий любимый Укретелеком по всей Украине видит как Киев, местный провайдер по области тоже видится как Киев, сервис работает весьма загадочно :-)

сервис тут не причем :-) я просто еще в первом сообщении написал что на Украине будут проблемы но это проблема не модуля это проблема анонсов провайдеров

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для статистики:

Нахожусь в Минске.

Определило как Брест.

Страна правильная.

Город не тот - это скорее всего особенность провайдера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сервис тут не причем :-) я просто еще в первом сообщении написал что на Украине будут проблемы но это проблема не модуля это проблема анонсов провайдеров

Не, ну это известный факт, что укретелекомовские ип определяются как киевские, но не хочется терять надежду, что хоть кто-то из геолокационных сервисов научиться работать с этим дивным провайдером)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не, ну это известный факт, что укретелекомовские ип определяются как киевские, но не хочется терять надежду, что хоть кто-то из геолокационных сервисов научиться работать с этим дивным провайдером)

пока укртелеком не изменит записи в ripe.net поможет только перепись населения :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От progroman
      Модуль определяет город по IP-адресу либо пользователь выбирает его вручную. Автоматически заполняются поля Страна, Регион, Город, Индекс (не для всех) при регистрации и оформлении заказа, избавляя пользователя от ручного ввода.
      Геосообщения - возможность выводить разный текст или html для городов и регионов (см. скриншоты и FAQ)
      Редиректы - в зависимости от города модуль может перебрасывать пользователя на нужный поддомен и URL.
      Для всех стран можно задать свою валюту, она будет автоматически выставляться при определении по IP.
       
      Модуль содержит базу населенных пунктов России (ФИАС), Украины, Белоруссии, Казахстана на русском языке.
      Определение по IP работает для России, Украины, Белоруссии и Казахстана с точностью до города для других стран с точностью до страны.
      Модуль русскоязычный, автор не гарантирует 100%-ю работу модуля для других языков. Настройка редиректов, геосообщений и групп покупателей возможна только для указанных выше стран.
       
      Прежде, чем купить, посмотрите расширенную версию модуля - GeoIP Pro! 

       
      Лицензия
      Модуль работает по лицензии (один домен + его поддомены), выдается по запросу личным сообщением с темой "Лицензия GeoIP", обязательно указывайте адрес вашего сайта!
       
      Дополнительные лицензии на другие домены можно оплатить через Яндекс.Деньги или переводом на карту Сбербанка, стоимость второй и последующих лицензий при оплате указанными способами - 330 рублей.
       
      Если одна админка на несколько сайтов с разными адресами, ключи можно прописать через разделитель |
       
      Важно! Удаление или перенос лицензии на другой домен невозможно! Это уже другая лицензия, которая покупается отдельно.
       
      Установка
      Скачайте архив, подходящий под вашу версию OpenCart, OcStore и т.д. Следуйте инструкции в архиве Установка.txt.
       
      Поддержка
      При обращении за тех. поддержкой обязательно указывайте адрес сайта и как можно точнее описывайте проблему.
      Стоимость установки модуля автором или адаптация модуля под тему (настройка css-стилей) 400 рублей
      Перед обращением в поддержку обязательно прочитайте FAQ на этой странице.
       
      Демо
      OpenCart 1.5
      http://opencart.progroman.ru/demo/geoip/
      Админка (demo / demo)
      http://opencart.progroman.ru/demo/geoip/admin/index.php?route=module/geoip
       
      OpenCart 2
      http://opencart.progroman.ru/demo/1/
      Админка (demo / demo)
      http://opencart.progroman.ru/demo/1/admin/index.php?route=module/geoip
       
      FAQ (ответы на вопросы) для версии 6
       
      FAQ (ответы на вопросы) для версий до 6
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.