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

17 изображений

  • +1 23

Информация о файле

Модуль определяет город по 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();

 

 

 




  • Последние посетители   0 пользователей онлайн

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

×

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

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