Сессионный Poster



1. Карточка баннера

Описание:
баннер, показывающийся в течение определённой сессии.
Тип кода:
Poster.
Подробнее:
показ баннера засчитывается только в том случае, если пользователь видел баннер в течение определённого времени — сессии. Продолжительность сессии задаётся в скрипте баннера. При загрузке баннера его параметры сохраняются в storage.swf.
Если во время сессии пользователь перезагружает страницу, то код вызова не запрашивает баннер в AdRiver, а берёт параметры из storage.swf и загружает баннер напрямую с зеркала. После того, как время сессии истекло, в AdRiver отправляется событие 0, по которому считается показ баннера. Если в течение сессии пользователь закрыл страницу или ушёл с неё, то событие 0 не отправляется и показ баннера не засчитывается.
При перезагрузке страницы после завершения сессии, из AdRiver запрашивается новый баннер и его показ засчитывается в новой сессии.
Обсчёт внешними системами:
Другие названия формата:
Session Poster.

2. Подготовка баннера

Подготовьте Flash-ролик (.swf) и заглушку .gif или .jpeg, чтобы демонстрировать её тем посетителям сайта, у которых нет необходимой версии flash-плагина.

Подготовьте кликовую область Flash-ролика согласно инструкции.

Если вы хотите подгружать в Flash-ролик дополнительные части, загруженные в баннер, то необходимо дописать к имени подгружаемого компонента переменную _root.ar_comppath.

Например, для .swf файлов:

_root.ar_comppath + 'flash_name.swf'

Для упрощения подготовки стандартных баннеров согласно техническим требованиям AdRiver вы можете воспользоваться специальным приложением AdRiver Creative Toolkit.

Размер загружаемых файлов должен соответствовать спецификации.

3. Подготовка скрипта

Распакуйте пример. Откройте текстовым редактором файл script.js. Внесите изменения только в верхнюю часть скрипта, отмеченную как Editable block:

var ar_img_name		= 'tinkoff_gif.gif';
var ar_img_location	= '';
var ar_swf_name		= 'Tinkoff.swf';
var ar_swf_location	= '';
var ar_flashver     = 5;
var ar_width		= 240;
var ar_height		= 400;

var ar_wmode		= 'opaque';
var ar_flash_pixel	= '';
var ar_gif_pixel	= '';
var ar_quality		= 'best';

var ar_expiration	= 60;

Переменные:

ar_img_name
имя заглушки. Укажите ваше имя файла
ar_img_location
если заглушка загружена со стороннего сервера, то впишите полный адрес, начинающийся с «http://» или «https://»
ar_swf_name
имя flash-ролика. Укажите ваше имя файла
ar_swf_location
если flash-ролик загружен со стороннего сервера, то впишите полный адрес, начинающийся с «http://» или «https://»
ar_flashver
версия flash-плагина, которая необходима посетителю для просмотра flash-роликов. Проверяйте соответствие flash-плагина и роликов
ar_width
ширина flash-ролика и заглушки. Укажите ваше значение
ar_height
высота flash-ролика и заглушки. Укажите ваше значение
ar_wmode
mdash; прозрачность (wmode). Можно указать одно из значений:
transparent
прозрачный — делает прозрачными области flash-ролика, не заполненные графикой, сквозь прозрачный фон видны другие элементы страницы
opaque
непрозрачный — все области flash-ролика становятся непрозрачными (значение по умолчанию), flash-ролик перекрывает другие элементы страницы
window
в своём окне — flash-ролик отображается в самом верхнем слое (в собственном окне), независимо от прочего контента на странице
ar_flash_pixel
вызов стороннего счётчика для flash-ролика. Если не нужен, оставьте пустым.
ar_gif_pixel
вызов стороннего счётчика для заглушки. Если не нужен, оставьте пустым.
ar_quality
качество отображения flash-ролика. Можно указать одно из значений:
low
проигрыватель показывает flash-ролик с наибольшей скоростью. Анти-алиасинг и сглаживание текстур не используются.
autolow
с первых кадров проигрыватель показывает ролик с наибольшей скоростью. Далее, если позволяют ресурсы процессора, качество воспроизведения улучшится (включится анти-алиасинг).
autohigh
при проигрывании ролика отдаётся большее предпочтение скорости воспроизведения, нежели качеству изображения. Первоначально включённый анти-алиасинг отключится, если частота пропуска кадров будет больше допустимого порогая
medium
при воспроизведении будет частично использован анти-алиасинг. Сглаживание текстур не используется. Качество воспроизведения при этой установке лучше чем при low, но хуже чем при high.
high
проигрыватель всегда использует анти-алиасинг, улучшая качество изображения. Сглаживание текстур используется только в кадрах без анимации..
best
проигрыватель покажет flash-ролик в самом лучшем качестве, не принимая в расчёт скорость воспроизведения. При проигрывании ролика всегда используется анти-алиасинг и сглаживание текстур (значение по умолчанию).
ar_expiration
время сессии в секундах.

Сохраните script.js. Баннер готов к загрузке.

4. Загрузка баннера и размещение кода баннера на сайте

4.1. Загрузка баннера

  1. Добавьте в сценарий баннер special->> poster->> generic_poster).
  2. В поле Линк баннера впишите ссылку на клик по баннеру.
  3. Кликните по ссылке Загрузить баннер. Загрузите файлы для баннера.
  4. В рекламную кампанию передайте слайс типа poster.

4.2. Размещение кода баннера на сайте

  1. Расположите файл storage.swf (из архива) на сайте и укажите путь до него в коде вызова баннера.
  2. Откройте файл code.txt (из архива) в текстовом редакторе. Внесите изменения в часть кода:
<script type="text/javascript" language=javascript>
function sessionBanner(targetParamStr, rleurl, sec) {
	if (typeof(ar_cn)=="undefined") ar_cn=1;
	document.write('<div id="ad_ph_'+ar_cn+'_" style="visibility:hidden;height:0px;"><iframe id="ar_container_'+ar_cn+'" width=1 height=1 marginwidth=0 marginheight=0 scrolling=no frameborder=0></iframe></div><div style="display:none;margin-bottom:10px" id="ad_ph_'+ar_cn+'"></div>');

	function addEvent(e,t,f){
		if (e.addEventListener) e.addEventListener(t, f, false);
		else if (e.attachEvent) e.attachEvent('on'+t, f)
	}
	function removeEvent(e,t,f){
		if (e.removeEventListener) e.removeEventListener(t, f, false);
		else if (e.detachEvent) e.detachEvent('on'+t, f)
	}

	Storage = {
		swfUrl: "путь до файла storage.swf на вашем сайте",
		
		init: function(onready,onerror){
			try {
				var movie, swfId = "StorageMovie";
				while(document.getElementById(swfId)) swfId += '_';
				
				if (window.ActiveXObject) {
					var objectHTML = '<object id="'+swfId+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="0" height="0">'
					+ '<param value="'+this.swfUrl+'" name="movie">'
					+ '<param value="true" name="play">'
					+ '<param value="sameDomain" name="allowScriptAccess"></object>'
				}
				else {
					var objectHTML = '<embed src="' + this.swfUrl + '" id="' + swfId + '"'
					+ ' width="0" height="0" swLiveConnect="true" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>'
				}
				
				var div = document.createElement("div");
				div.id = swfId + "Container";
				div.style.position = 'absolute';
				div.style.width = div.style.height = '0px';
				div.style.top = div.style.left = '-1000px';
				
				Storage = {
					put: function(key, value){movie.put(key, value)},
					get: function(key){return movie.get(key)},
					remove: function(key){movie.remove(key)},
					getKeys: function(){return movie.getkeys()},
					clear: function(){movie.clear()},
					ready: function(s){
						movie = document.getElementById(swfId);
						if(onready&&s)onready();
					}
				}
				
				document.body.appendChild(div);
				div.innerHTML = objectHTML;
			}
			catch(e){}
		}
	}

	var BannerLoader = function(num, onScroll){
		var ar_keyword = rleurl;
		var seconds = sec; //время сессии
		var litl_sess = 10; //короткая сесия
		var send_litl_sess = false;
		var max_event_time = 1800; //максимальное время отсылки эвента

		var RndNum4NoCash = Math.round(Math.random() * 1000000000);
		var ar_tail = escape(document.referrer || 'unknown');
		var link = "http://ad.adriver.ru/cgi-bin/erle.cgi?" + targetParamStr + '&tail256=' + ar_tail + '&rnd=' + RndNum4NoCash;
		var t = 0, top = 0, cm = document.compatMode == "CSS1Compat";
		var n = ["CgiHref","ar_bt","ar_siteid","Mirror","bid","sliceid","ar_adid","ar_pz","ar_sz","ar_nid","ar_bn","Path","Comp0","Width",
				"Height","date","Uid","Target","Alt","CompPath","RndNum4NoCash","ar_ntype","ar_tns","ar_pix","ar_expiration","ScriptSrc"];
		
		function pix(s){
			if (!s) return;
			if(document.createElement&&document.body){
				var i=document.createElement('img');
				i.style.display='none';i.style.width=i.style.height='0px';
				i.src=s;
				document.body.insertBefore(i,document.body.firstChild);
			}
			else{(new Image()).src=s}
		}

		function G(n){return Storage.get(n)}
		function S(n,s){Storage.put(n,s)}
		
		function GetFrame(){
			var doc = document.getElementById('ar_container_'+num);
			if (doc) doc = window.ActiveXObject ? window.frames['ar_container_'+num].window : doc.contentWindow;
			
			return doc
		}
		
		function tryGetReply(){
			if(t++<100){
				var win = GetFrame();
				
				if (win&&(typeof win.ar_pix!="undefined")) {
					t = 0;
					
					if (win["ar_expiration"]<litl_sess&&!send_litl_sess) pix(win["ar_pix"]);
					
					S('ar_session'+num,1);
					for(var i=0;i<n.length;i++)S(n[i],win[n[i]]);
					S("ScriptSrc",win.Mirror + win.Path + win.Comp0 + "?" + win.RndNum4NoCash);
					var d=new Date();d.setSeconds(d.getSeconds()+(parseInt(win["ar_expiration"])||0));
					S("ar_cookie_exp",''+d);
					var d2=new Date();d2.setSeconds(d.getSeconds()+max_event_time);
					S('ar_event_exp',''+d2);
				}
				else setTimeout(arguments.callee, 300);
			}
		}
		
		function repairFromReply(){
			if(t++<100){
				var doc = GetFrame().document;
			
				if (!doc) setTimeout(arguments.callee, 100);
				else {
					t = 0;
					
					var repl = ' ';
					for(var i=0;i<n.length;i++) repl += n[i]+'="'+G(n[i])+'"; ';
					
					var s = 'var ar_bnum='+num+'; var ar_keyword="'+ar_keyword+'";'+repl
					+'document.write("<sc"+"ript language="JavaScript" type="text/javascript" src="+ScriptSrc+"></sc"+"ript>");';
					doc.write('<sc'+'ript language="JavaScript" type="text/javascript">'+s+'</sc'+'ript>');
				}
			}
		}
		
		function getDoc(){
			if(t++<100){
				var doc = GetFrame().document;
				
				if (!doc) setTimeout(arguments.callee, 100);
				else {
					
					doc.write('<sc'+'ript language="JavaScript" type="text/javascript">var ar_bnum='+num+'; var ar_keyword="'+ar_keyword+'";</sc'+'ript>');
					doc.write('<sc'+'ript language="JavaScript" type="text/javascript" src="'+link+'"></sc'+'ript>');
					t = 0;
					tryGetReply();
				}
			}
		}
		
		function scroll(){
			var d = document;
			var ch = self.innerHeight || cm && d.documentElement.clientHeight || d.body.clientHeight;
			var st = self.pageYOffset || cm && d.documentElement.scrollTop || d.body.scrollTop;
			if (top >= st && st + ch >= top) {
				removeEvent(window, 'scroll', scroll);
				send_q();
			}
		}
		
		function send_q(){
			var repl = G('ar_session'+num);
			var exp = G('ar_cookie_exp');
			var event = G('ar_event_exp');
			
			if (repl) {
				if(exp&&((new Date(exp))>(new Date()))) {
					repairFromReply();
					return;
				}
				else {
					var src='http://ad.adriver.ru/cgi-bin/event.cgi?bid=' + G('bid')
					+ '&ntype=' + G('ar_ntype')
					+ '&sliceid=' + G('sliceid')
					+ '&sid=' + G('ar_siteid')
					+ '&nid=' + G('ar_nid')
					+ '&ad=' + G('ar_adid')
					+ '&type=0&rnd=' + G('RndNum4NoCash');
					
					seconds = parseInt(G('ar_expiration'))||seconds;
					if (seconds>=litl_sess||send_litl_sess) {
						if (event&&((new Date(event))>(new Date()))) pix(src); // дёргаем эвент
						pix(G('ar_pix')); // дёргаем зеропиксель
					}
				}
			}
			
			getDoc();
		}
		
		Storage.init(function(){
			var obj = document.getElementById('ad_ph_'+num+'_');
			if (obj){
				if(onScroll){
					while(obj.offsetParent){
						top += obj.offsetTop; 
						obj = obj.offsetParent;
					}
					addEvent(window, 'scroll', scroll);
					scroll();
				}
				else send_q();
			}
		});
	}
	
	addEvent(window, 'load', function(){
		new BannerLoader(ar_cn, true);
	});
}

sessionBanner("sid=94499&bt=49&pz=0", "", 120);
</script>

Переменные:

swfUrl (строка 16)
путь до файла storage.swf на вашем сайте
sid (строка 209)
ID сайта
pz (строка 209)
зона сайта
120 (строка 209)
время сессии в секундах. Этот параметр дублируется в скрипте баннера в переменной ar_expiration. Приоритетное значение — в скрипте баннера

Разместите модифицированный код на странице сайта.

5. Полезные ссылки