Перейти к содержимому


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


Модуль GeoDetect (ГеоТаргетинг)


Сообщений в теме: 6

#1 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 03 ноября 2014 - 19:19

Модуль предназначен для:
1. определения города клиента по IP-адресу и сохранения его в куках на заданное в админке время.
2. задания разной скидки для разных городов.

Используется база с http://ipgeobase.ru/, но не в онлайне.
Текущая база (она доступна для скачивания в виде файла) вручную скачивается с сайта и конвертится/обновляется в SQL-таблицу.
Поиск производится уже в SQL-таблице, что вносит независимость от текущей доступности ipgeobase.ru

База эта по городам России и Украины. Других я там не нашел (страны - есть), но по России/Украине, как я понял, она наиболее полная и точная.

Посмотреть "как оно работает" можно традиционно на http://cpu.badisoft.ru

Админка выглядит так:
Прикрепленный файл  1.JPG   119,42К   56 Количество загрузок:

Установка:
----------

1. копируем файлы

sprCommon.png -> data/[шаблон]/
css3_button.css -> data/[шаблон]/
geodetect.css -> data/[шаблон]/
class.geo.php -> core/classes/
geo.php -> core/includes/
addon.php -> core/includes/admin/
geodetect.php -> core/includes/processor/
geodetect.tpl.html -> core/tpl/user/[шаблон]/
geo.tpl.html -> core/tpl/user/[шаблон]/blocks
modules_geo.php -> core/includes/admin/sub/
modules_geo.tpl.html -> core/tpl/admin/


2. в файле default.tpl.html перед строкой

<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=yandex">{$smarty.const.ADMIN_STRING_YANDEX}</a></div>

вставляем

{* BEGIN GeoDetect *}
<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=geo">GeoDetect</a></div>
{* END GeoDetect *}


3. в файле core/tpl/admin/menu.tpl.html перед строкой

<table class="adn topj"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=yandex">{$smarty.const.ADMIN_STRING_YANDEX}</a></td></tr></table>

вставляем

{* BEGIN GeoDetect *}
<table class="adn topj"><tr><td><img src="data/admin/drs.gif" alt=""></td><td width="100%"><a href="{$smarty.const.ADMIN_FILE}?dpt=modules&amp;sub=geo">GeoDetect</a></td></tr></table>
{* END GeoDetect *}


4. в файле core/includes/admin/modules.php перед строкой

array("id"=>"yandex", "name"=>"Яндекс.Маркет" )


вставляем

# BEGIN GeoDetect
array("id"=>"geo", "name"=>"GeoDetect"),
# END GeoDetect



5. в файле index.php

5.1. строку, начинающуюся с

if ( in_array($_GET["do"],


заменяем на

# BEGIN GeoDetect
#if ( in_array($_GET["do"], array( "captcha", "cart", "rss", "compare", "yandex", "invoice_jur", "invoice_phys", "stat", "get_file" ))) {
if ( in_array('core/includes/processor/'.$_GET["do"].'.php',glob("core/includes/processor/*.php") )) {
# END GeoDetect


5.2. перед строкой

//init Smarty


вставляем

# BEGIN GeoDetect
if (CONF_GEODETECT_ENABLE
  && isset($_COOKIE['geobase'])
  && ($data = unserialize($_COOKIE['geobase']))
  && ($row = db_fetch_assoc(db_query("SELECT discount FROM ".DB_PRFX."geo_cities WHERE city_id=".(int)$data['city_id']." LIMIT 1"))))
	$_SESSION['geo_discount'] = $row['discount'];
# END GeoDetect



6. в файле index.tpl.html

6.1. туда, где хотим видеть город вставляем (этот пункт можно заменить подключением файла geo.tpl.html как боковой блок)

{* BEGIN GeoDetect *}
{include file="blocks/geo.tpl.html"}
{* END GeoDetect *}



6.2. перед завершающим тэгом </body> вставляем

{* BEGIN GeoDetect *}
<div id="geodetect"></div>
{* END GeoDetect *}


7. в файле discount_functions.php в функции dscCalculateDiscount

7.1. строки

case 1:
return $discount;
break;


заменяем на

case 1:
# BEGIN GeoDetect
#return $discount; // теперь сразу return нельзя, надо добавить Geo-скидку
# END GeoDetect
break;


7.2. перед строкой

$discount["discount_standart_unit"]		= ((float)$orderPrice/100)*(float)$discount["discount_percent"];


вставляем

# BEGIN GeoDetect
# добавляем к общей рассчитаной скидке Geo-скидку
if(CONF_GEODETECT_ENABLE && isset($_SESSION['geo_discount'])) $discount["discount_percent"] += $_SESSION['geo_discount'];
# END GeoDetect



8.
- Скачиваем архив geo_files с http://ipgeobase.ru/...bin/Archive.cgi
- копируем cidr_optim.txt и cities.txt в корень сайта
- выполняем index.php/?do=geodetect&sub=1
- имеет смысл этот пункт переиодически повторять (раз в месяц? раз в полгода?), т.к. архив довольно часто обновляется

Прикрепленные файлы

  • Прикрепленный файл  GeoDetect.zip   20,21К   14 Количество загрузок:

http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 QQ123

    Новичок

  • Download User
  • Pip
  • 1 сообщений
Репутация: 0
Начинающий

Отправлено 19 января 2015 - 12:04

Добрый день, а скидка может быть отрицательной? То есть по сути не скидкой, а наценкой.

#3 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 19 января 2015 - 12:21

Просмотр сообщенияQQ123 сказал:

Добрый день, а скидка может быть отрицательной? То есть по сути не скидкой, а наценкой.
Я не помню, чтобы вводил какие-то ограничения на положительность скидки.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 A26

    Новичок

  • Download User
  • Pip
  • 7 сообщений
Репутация: 0
Начинающий

Отправлено 07 мая 2015 - 08:53

Доброго времени суток !


Модуль насколько я понял не создаёт таблицу в БД ? приходится ручками создавать.

#5 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 07 мая 2015 - 12:04

Просмотр сообщенияA26 сказал:

Модуль насколько я понял не создаёт таблицу в БД ?
Создает. Забыл дописать в п.1 инструкции:
addon.php -> core/includes/admin/
Там не только таблица создается, так что по любому без этого работать не будет.

PS. И в geo.tpl.html лишний div, вот исправленный файл.

Прикрепленные файлы

  • Прикрепленный файл  geo.tpl.html   3,09К   3 Количество загрузок:

http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 etdnepr

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 13 февраля 2017 - 20:38

Добрый вечер, Дмитрий!
Заморочился я поставить этот модуль и плюс отображение цены сразу со скидкой. Хотел так, чтоб показывалась разная цена для разных городов, но без видимого блока выбора города. Просто, чтоб работало на автомате и не было возможности у пользователя выбирать/изменять город.
Убрал я весь отображаемый код из geo.tpl.html, а на кнопку "Да" при выборе города повесил автоклик при загрузке страницы
<span id="justbutton" onclick="submit_city({$geo.city_id});">Да</span>
<script>{literal}
  window.onload = function myd() {
  document.getElementById('justbutton').click(){/literal}
  };
</script>
Вроде работает)))
Может подскажете какой-то более пряморукий способ сделать эту автоматизацию?)))

#7 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 14 февраля 2017 - 11:07

Просмотр сообщенияetdnepr сказал:

Может подскажете какой-то более пряморукий способ сделать эту автоматизацию?
Модулю почти два года, ставил я его очень мало и уже не помню, что там и как.
Т.е. надо смотреть и разбираться, а сейчас недосуг...
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)