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

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

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

 

Описание

Автоматическое определение региона пользователя по IP-адресу. Регион определяется один раз и запоминается в сессию и cookie, но пользователь может его менять.

Регион пользователя подставляется при регистрации и оформлении заказа, избавляя пользователя от необходимость заполнять поля Регион, Город, Индекс.

Автоматически меняется валюта при определении / смене страны.

Есть возможность выводить информацию в зависимости от местоположения посетителя (см. скриншоты)

Можно настроить редиректы в зависимости от положения, например, на ua.site.com для Украины или spb.site.com для Санкт-Петербурга

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

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

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

Совместим с модулем "Simple - упрощенная регистрация и заказ"

Важно! Для версий OpenCart / OcStore 1.5.* модуль есть только до версии 5.2!

 

Обновление до версии 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 больше не нужны, можете удалить их вручную, установщик скопировал данные из них в новые таблицы.

 

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

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

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

php_value session.cookie_domain .site.com

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

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

в том числе и php_value session.cookie_domain

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


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

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

 

 

Требования к хостингу

Скрытый текст
  • PHP 5.4+ (до версии 6.0 PHP 5.3)
  • ionCube PHP Loader версии 5 и выше
  • Установленный в opencart Vqmod (только для Opencart 1.5.*)

Совместимость с версиями:

Opencart/OcStore 1.5.* - версии модуля 1.0-5.2

OpenCart/OcStore 2 - версии модуля выше 5.1

 

Лицензия

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

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

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

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

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

 

Установка

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

См. файл readme.txt или Установка.txt из архива модуля.

Для OpenCart / ocStore 1.5.x используйте архив geoip_v5.2.zip, для OpenCart / ocStore 2.x - geoip_oc2_v5.2.zip

 

FAQ

 

Начиная с версии 6.0

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

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

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>

 

 

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

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

По-умолчанию, модуль подставляет в поле "город" населенный пункт с районом, например, "Одинцовский р-н, г. Одинцово". Некоторые модули доставки из-за этого не могут корректно определить город и рассчитать стоимость. Чтобы убрать район, нужно:

 

В файле system/library/progroman/citymanager/citymanager.php



'city' => $this->getCityName()

заменить на



'city' => $this->getShortCityName()

В этом месте:



private function getData() {
    return [
        'country_id' => $this->getCountryId(),
        'zone_id' => $this->getZoneId(),
        'postcode' => $this->getPostcode(),
        'city' => $this->getCityName()
    ];
}

 

 

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

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

При выводе модуля установить атрибут 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');

// Вывод геосообщения с ключом phone
$data['geoip_phone'] = $this->progroman_city_manager->getMessage('phone');

В шаблоне:



<!-- Вывод модуля -->
<div class="prmn-cmngr" data-confirm="true"><?= $geoip; ?></div>

<!-- Вывод геосообщения -->
<?= $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

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');
 

где "phone" и "text" соответствующие ключи.

В getRule() можно передать значение по-умолчанию, которое будет выводиться, если города пользователя нет в списке или он не определен:



$this->data['geoip_text'] = $geoip->getRule('text', 'Добро пожаловать на сайт');
 

Для OpenCart 2 вместо $this->data пишется просто $data

Открываем шаблон шапки /catalog/view/theme/ВАША_ТЕМА/template/common/header.tpl и в нужно месте вставляем:



<?php echo $geoip_phone; ?>

и



<?php echo $geoip_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();
 

 

Для всех версий

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

 

Оформление заказа в Симпл:

7eb55d0c33.jpg

Чтобы использовать базу модуля GeoIP необходимо в файле /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

 

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

 

Сделать это можно несколькими способами: через панель управления, в php.ini, в .htaccess или непосредственно в коде. Проще всего сделать это в коде в index.php или в admin/index.php (если ошибка в админке). В самом начале файла, сразу после <?php пишем:



ini_set('display_errors', 1);
 

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

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

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

 

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

 

 

Демо

 

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

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




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

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