Мы лениво загружаем код OpenX.Вместо того, чтобы помещать одностраничный вызов вверху страницы, мы помещаем его внизу.После загрузки страницы вызов получит данные баннера, а пользовательский код добавит правильные баннеры в правильные зоны.
Для приведенного ниже кода требуется правильный DOM.Если у вас есть jQuery, DOMAssistant, FlowJS и т. Д., DOM должен быть исправлен для вас.Этот код будет работать с обычными баннерами с изображениями, flash или HTML-контентом.В некоторых случаях это может не работать, например, при использовании баннеров от внешних поставщиков (adform и т. Д.).Для этого вам может понадобиться немного взломать код.
Как его использовать?
- добавить свой код SinglePageCall к концу вашего HTML-кода
- добавитьэтот код в коде SPC.
- через полсекунды или около того ваш код OpenX должен быть готов, а код ниже поместит баннеры в указанные DIV.
- Да, вам нужно добавить в свой HTML-код некоторые DIV в качестве заполнителей для ваших баннеров.По умолчанию эти баннеры установлены с CSS-классом «скрытый», который полностью скрывает DIV (с видимостью, отображением и высотой).Затем, после успешной загрузки баннера в данном DIV, мы удаляем скрытый класс, и DIV (и баннер внутри) становятся видимыми.
Используйте на свой страх и риск!:) Надеюсь, это поможет
(function(){
if (!document || !document.getElementById || !document.addEventListener || !document.removeClass) {
return; // No proper DOM; give up.
}
var openx_timeout = 1, // limit the time we wait for openx
oZones = new Object(), // list of [div_id] => zoneID
displayBannerAds; // function.
// oZones.<divID> = <zoneID>
// eg: oZones.banner_below_job2 = 100;
// (generated on the server side with PHP)
oZones.banner_top = 23;
oZones.banner_bottom = 34;
displayBannerAds = function(){
if( typeof(OA_output)!='undefined' && OA_output.constructor == Array ){
// OpenX SinglePageCall ready!
if (OA_output.length>0) {
for (var zone_div_id in oZones){
zoneid = oZones[zone_div_id];
if(typeof(OA_output[zoneid])!='undefined' && OA_output[zoneid]!='') {
var flashCode,
oDIV = document.getElementById( zone_div_id );
if (oDIV) {
// if it's a flash banner..
if(OA_output[zoneid].indexOf("ox_swf.write")!=-1)
{
// extract javascript code
var pre_code_wrap = "<script type='text/javascript'><!--// <![CDATA[",
post_code_wrap = "// ]]> -->";
flashCode = OA_output[zoneid].substr(OA_output[zoneid].indexOf(pre_code_wrap)+pre_code_wrap.length);
flashCode = flashCode.substr(0, flashCode.indexOf(post_code_wrap));
// replace destination for the SWFObject
flashCode = flashCode.replace(/ox\_swf\.write\(\'(.*)'\)/, "ox_swf.write('"+ oDIV.id +"')");
// insert SWFObject
if( flashCode.indexOf("ox_swf.write")!=-1 ){
eval(flashCode);
oDIV.removeClass('hidden');
}// else: the code was not as expected; don't show it
}else{
// normal image banner; just set the contents of the DIV
oDIV.innerHTML = OA_output[zoneid];
oDIV.removeClass('hidden');
}
}
}
} // end of loop
}//else: no banners on this page
}else{
// not ready, let's wait a bit
if (openx_timeout>80) {
return; // we waited too long; abort
};
setTimeout( displayBannerAds, 10*openx_timeout );
openx_timeout+=4;
}
};
displayBannerAds();
})();