Jump to content

Показ сообщения в блоке рекламы при включенном AdBlock

Featured Replies

Posted
comment_67025

Из тех хуков которые тут есть, я не нашёл ничего стоящего на данную тему. 

Считаю глупо "кидать в глаза" всплывающее сообщение "Отключи блокировщик!"

 

Погуглил, нашёл статейку со скриптом который делает так: подставляя в место рекламы, аккуратное сообщение. 

 

post-10061-0-08325700-1404077685.png

 

В прикреплённом архиве есть: html, javascript, css файлы.

  • Для начала код рекламы на сайте нужно окружить тегом div с классом adb (если не меняли на другой).
  • В заголовке темы подключить джаваскрипт.
  • В css файл своего шаблона добавить описание класса adb.
  • При установке чистите кэш.
  • Также нужно установить дополнения к браузерам AdBlock Pro и AdBlock Plus, чтобы увидеть работает скрипт нормально или нет.
  • Текст сообщения можно изменить в javascript файле.

 

И соответственно вопрос: как его правильно встроить в ipb, чтоб детектил на всех страницах форума?

ads_detector.rar

  • Author
comment_67079

Подскажите, как правильно прописать путь к папке со скриптом public/js/ads_detector.js ?

<script type='text/javascript' src="какая переменная?/js/ads_detector.js"></script>

Так правильно будет?

<script type='text/javascript' src='{$this->settings['public_dir']}js/ads_detector.js'></script>
  • Author
comment_67099

Копипаст
Шаг 1. HTML


 

Достаточно добавить блочный элемент с атрибутом class в любое место страницы, предварительно разместив рекламный код внутри блока.

<div class="adb">
    Рекламный код тут
</div>

Шаг 2. JS


Нужно разместить этот код в файле с расширением js

var ads = "adb"
var msg = '<div style="border: 1px dashed #f00; padding: 5px; width:800px; color:#000000 !important; margin:20px auto;"><p style="text-align:center;margin:0;"><b>Adblock Detected</b></p><p style="text-align:justify;margin:0;">Вы используете расширение AdBlock или подобное. Вы можете добавить этот сайт в белый список, и тем самым внесете свой вклад в его развитие.</p></div>';

onload=function()
{
	// заглушка для IE, т.к. нет функции getElementByClassName
	if (document.getElementsByClassName == undefined) 
	{
		document.getElementsByClassName = function(className)
		{
			var hasClassName = new RegExp("(?:^|s)" + className + "(?|s)");
			var allElements = document.getElementsByTagName("*");
			var results = [];
			var element;
			for (var i = 0; (element = allElements) != null; i++) 
			{
				var elementClass = element.className;
				if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
					results.push(element);
			}
			return results;
		}
	}

	blocked = 0;
	//получаем массив всех рекламных элементов
	var ad_nodes = document.getElementsByClassName(ads);
	for(i in ad_nodes)
	{
		// проверяем высоту i-го блока
        if (ad_nodes.offsetHeight == 0)
		{
			blocked = 1;
			ad_nodes.innerHTML = msg; // выводим сообщение на экран
		}
	}
}

Залил и подключил в начале GlobalTemplate после <head>


<script type='text/javascript' src="{$this->settings['public_dir']}js/ads_detector.js"></script>

И чегой-то не детектит  :shake:

  • Author
comment_67194

Переименуйте скрипт, избавьтесь от ads в названии

 

 

 

"заработало" (с) :good:  - оставил detector.js

 

С чем это связанно? Не знал, что название может играть такую важную роль.

Этот adguard блочит этот скрипт :)

Ох уж этот adguard )

Guest
This topic is now closed to further replies.

Последние посетители 0

  • No registered users viewing this page.