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


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


  • Вы не можете ответить в тему
Сообщений в теме: 6

#1 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 03 November 2014 - 07:19 PM

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

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

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

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

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

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

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К   16 Количество загрузок:

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

#2 QQ123

    Новичок

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

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

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

#3 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

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

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

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

#4 A26

    Новичок

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

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

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


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

#5 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

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

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

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

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

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

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

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

#6 etdnepr

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

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

Отправлено 13 February 2017 - 08:38 PM

Добрый вечер, Дмитрий!
Заморочился я поставить этот модуль и плюс отображение цены сразу со скидкой. Хотел так, чтоб показывалась разная цена для разных городов, но без видимого блока выбора города. Просто, чтоб работало на автомате и не было возможности у пользователя выбирать/изменять город.
Убрал я весь отображаемый код из 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>
Вроде работает)))
Может подскажете какой-то более пряморукий способ сделать эту автоматизацию?)))
  • 0

#7 badisoft

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

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

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

Может подскажете какой-то более пряморукий способ сделать эту автоматизацию?

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