Привет, друзья!
Впервые поставил модуль ad, очень классная вещь, гибкие и удобные настройки.
Всё супер, да вот только Касперский (уверен, и другие баннерорезки), увидев в адресе "ad", убивает мою рекламу, которая является не чистой даже, а ссылками на сайты партнёров компании. От того и обидно, что я не монету зарабатываю ведь.
Что нарыл пока сам. Реклама генерируется по ссылке:
sites/all/modules/ad/serve.php?m=jquery&q=1&t=1&u=node&l=node
Можно поменять имя папки модуля на, например, advertisement. Касперскому этого хватило, не знаю, как другим программам.
Затем остаётся уже по клику адрес ad/redirect/... поменять тем же образом. Тут что остаётся - с помощью hook_menu создать свой путь и обрабатывать редирект соответствующей функцией модуля + через hook_nodeapi в таблице {ads} менять адрес на свой.
В общем, костыли. Может, есть другие решения, да получше? Я, в принципе, могу всё это сделать, но уже даже папку переименовывать - как-то неправильно
Буду рад любым советам!
Ссылка по теме: Advertisement » Issues » ad module blocked by ad blockers
Комментарии
Да тут тема уже поднималась. Поищите. Решение было найдено.
Честно - искал до этого, но не нашёл. Киньте кто-нибудь ссылку, пожалуйста, если помните, где тема!
Нашли мы эту тему:
http://www.drupal.ru/node/63714
В ней, по сути, то же самое, что пишу я
Хотелось бы выслушать ещё мнения.
Ну всё, сделал так, как написал, Каспер по крайней мере теперь ничего не видит, всё работает. Других программ у меня для проверки нет, так что, вы там посмотрите у себя, кто повторит мой рецепт, отпишитесь, это полезно знать для решения подобной задачи.
Сам рецепт:
$items = array();
// Создадим свой адрес для обработки кликов по рекламе, который не будет блокироваться
$items['advertisement/redirect/%'] = array(
'access arguments' => array('show advertisements'),
'type' => MENU_CALLBACK,
'page callback' => 'ad_redirect',
'page arguments' => (array(2)),
);
return $items;
}
switch ($op) {
case 'insert':
case 'update':
// Заменяем в пути модуля ad слово "ad" на "advertisement", чтобы спецпрограммы не резали баннер
if (isset($node->adtype)) {
db_query("UPDATE {ads} SET redirect = '%s' WHERE aid = %d", url('advertisement/redirect/'. $node->nid, array('absolute' => TRUE)), $node->nid);
}
break;
}
}
Ну и перед этим всем отключить модуль ad, переименовать папку в advertisement, включить назад, блоки вернуть на место (они слетят), ноды с рекламой пересохранить, чтобы новые пути прописались.
Profit.