首页 / PHP / php广告加载类用法实例_PHP
php广告加载类用法实例_PHP
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php广告加载类用法实例_PHP,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7950字,纯文字阅读大概需要12分钟。
内容图文
本文实例讲述了php广告加载类的用法,非常实用。分享给大家供大家参考。具体方法如下:该php广告加载类,支持异步与同步加载。需要使用Jquery实现。
ADLoader.class.php类文件如下:
<?php /** 广告加载管理类 * Date: 2013-08-04 * Author: fdipzone * Ver: 1.0 * * Func: * public load 加载广告集合 * public setConfig 广告配置 * private getAds 根据channel创建广告集合 * private genZoneId zoneid base64_encode 处理 * private genHtml 生成广告html * private checkBrowser 检查是否需要同步加载的浏览器 */ class ADLoader{ // class start private static $_ads = array(); // 广告集合 private static $_step = 300; // 广告加载间隔 private static $_async = true; // 是否异步加载 private static $_config = array(); // 广告设置文件 private static $_jsclass = null; // 广告JS class /** 加载广告集合 * @param String $channel 栏目,对应config文件 * @param int $step 广告加载间隔 * @param boolean $async 是否异步加载 */ public static function load($channel='', $step='', $async=''){ if(isset($step) && is_numeric($step) && $step>0){ self::$_step = $step; } if(isset($async) && is_bool($async)){ self::$_async = $async; } // 判断浏览器,如IE强制使用同步加载 if(!self::checkBrowser()){ self::$_async = false; } self::getAds($channel); self::genZoneId(); return self::genHtml(); } /** 设置config * @param String $config 广告配置 * @param String $jsclass js class文件路径 */ public static function setConfig($config=array(), $jsclass=''){ self::$_config = $config; self::$_jsclass = $jsclass; } /** 根据channel创建广告集合 * @param String $channel 栏目 */ private static function getAds($channel=''){ $AD_Config = self::$_config; if($AD_Config!=null){ self::$_ads = isset($AD_Config[$channel])? $AD_Config[$channel] : $AD_Config['default']; } } /** zoneid base64_encode 处理 */ private static function genZoneId(){ // 同步加载广告不需要处理zoneid if(!self::$_async){ return ; } $ads = self::$_ads; for($i=0,$len=count($ads); $i<$len; $i++){ if(isset($ads[$i]['zoneId'])){ $ads[$i]['zoneId'] = base64_encode('var zoneid='.$ads[$i]['zoneId'].';'); } } self::$_ads = $ads; } /** 生成广告html */ private static function genHtml(){ $ads = self::$_ads; $html = array(); if(self::$_jsclass!=null && $ads){ array_push($html, ''); // 同步需要预先加载 if(!self::$_async){ foreach($ads as $ad){ array_push($html, ''); array_push($html, ''); array_push($html, ''); } } array_push($html, ''); } return implode("\r\n", $html); } /** 判断是否需要强制同步加载的浏览器 */ private static function checkBrowser(){ $user_agent = $_SERVER['HTTP_USER_AGENT']; if(strstr($user_agent,'MSIE')!=''){ return false; } return true; } } // class end ?>
ADConfig.php文件如下:
<?php /** 广告配置文件 **/ return array( 'case_openx' => array( array( 'type' => 'openx', 'domId' => 'ad_728x90', 'zoneId' => 452 ), array( 'type' => 'openx', 'domId' => 'ad_300x250', 'zoneId' => 449 ), array( 'type' => 'openx', 'domId' => 'ad_l2_300x250', 'zoneId' => 394 ), ), 'case_url' => array( array( 'type' => 'url', 'domId' => 'ad_728x90', 'url' => 'adurl.php?zoneid=452' ), array( 'type' => 'url', 'domId' => 'ad_300x250', 'url' => 'adurl.php?zoneid=449' ), array( 'type' => 'url', 'domId' => 'ad_l2_300x250', 'url' => 'adurl.php?zoneid=394' ) ), 'case_sync_openx' => array( array( 'type' => 'openx', 'domId' => 'ad_728x90', 'zoneId' => 452 ), array( 'type' => 'openx', 'domId' => 'ad_300x250', 'zoneId' => 449 ), array( 'type' => 'openx', 'domId' => 'ad_l2_300x250', 'zoneId' => 394 ), ), 'default' => array( array( 'type' => 'openx', 'domId' => 'ad_728x90', 'zoneId' => 452 ), array( 'type' => 'openx', 'domId' => 'ad_300x250', 'zoneId' => 449 ), array( 'type' => 'openx', 'domId' => 'ad_l2_300x250', 'zoneId' => 394 ), ), ); ?>
ADLoader.js文件如下:
/** 异步加载广告 * Date: 2013-08-04 * Author: fdipzone * Ver: 1.0 */ var ADLoader = (function(){ var _ads = [], // 广告集合 _step = 300, // 广告加载间隔 _async = true, // 是否异步加载 _loaded = 0; // 已经加载的广告数 /** loadAd 循环加载广告 * @param int c 第几个广告 */ function loadAD(c){ if(_loaded>=_ads.length){ return ; } if($('#'+_ads[c].domId).length>0){ // 判断dom是否存在 if(_async){ // 异步执行 crapLoader.loadScript(getScript(_ads[c]), _ads[c].domId, { success: function(){ completeAd(); } }); }else{ // 将同步加载的广告显示 var ad_container = $('#'+_ads[c].domId+'_container'); ad_container.find('embed').attr('wmode','transparent').end().find('object').each(function(k, v){ v.wmode = 'transparent'; // 将flash变透明 }); $('#'+_ads[c].domId)[0].appendChild(ad_container[0]); ad_container.show(); completeAd(); } }else{ // dom不存在 completeAd(); } } /** 加载完广告后处理 */ function completeAd(){ _loaded ++; setTimeout(function(){ loadAD(_loaded); }, _step); } /** 获取广告 * @param Array ad 广告参数 */ function getScript(ad){ var ret = null; switch(ad.type){ case 'openx': // openx code ad ret = 'data:text/javascript;base64,' + ad.zoneId + 'dmFyIG0zX3UgPSAobG9jYXRpb24ucHJvdG9jb2w9PSdodHRwczonPydodHRwczovL2Fkcy5ubWcuY29tLmhrL3d3dy9kZWxpdmVyeS9hanMucGhwJzonaHR0cDovL2Fkcy5ubWcuY29tLmhrL3d3dy9kZWxpdmVyeS9hanMucGhwJyk7CnZhciBtM19yID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OTk5KTsKaWYgKCFkb2N1bWVudC5NQVhfdXNlZCkgZG9jdW1lbnQuTUFYX3VzZWQgPSAnLCc7CmRvY3VtZW50LndyaXRlICgiPHNjciIrImlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nIittM191KTsKZG9jdW1lbnQud3JpdGUgKCI/em9uZWlkPSIgKyB6b25laWQpOwpkb2N1bWVudC53cml0ZSAoJyZhbXA7Y2I9JyArIG0zX3IpOwppZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gJywnKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7ZXhjbHVkZT0iICsgZG9jdW1lbnQuTUFYX3VzZWQpOwpkb2N1bWVudC53cml0ZSAoZG9jdW1lbnQuY2hhcnNldCA/ICcmYW1wO2NoYXJzZXQ9Jytkb2N1bWVudC5jaGFyc2V0IDogKGRvY3VtZW50LmNoYXJhY3RlclNldCA/ICcmYW1wO2NoYXJzZXQ9Jytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiAnJykpOwpkb2N1bWVudC53cml0ZSAoIiZhbXA7bG9jPSIgKyBlc2NhcGUod2luZG93LmxvY2F0aW9uKSk7CmlmIChkb2N1bWVudC5yZWZlcnJlcikgZG9jdW1lbnQud3JpdGUgKCImYW1wO3JlZmVyZXI9IiArIGVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikpOwppZiAoZG9jdW1lbnQuY29udGV4dCkgZG9jdW1lbnQud3JpdGUgKCImY29udGV4dD0iICsgZXNjYXBlKGRvY3VtZW50LmNvbnRleHQpKTsKaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKCImYW1wO21tbV9mbz0xIik7CmRvY3VtZW50LndyaXRlICgiJz48XC9zY3IiKyJpcHQ+Iik7'; break; case 'url': // url ad ret = ad.url; break; } return ret; } /** 同步加载广告 * @param Array ad 广告参数 */ function writeAd(ad){ switch(ad.type){ case 'openx': var m3_u = (location.protocol=='https:'?'https://ads.nmg.com.hk/www/delivery/ajs.php':'http://ads.nmg.com.hk/www/delivery/ajs.php'); var m3_r = Math.floor(Math.random()*99999999999); if (!document.MAX_used) document.MAX_used = ','; document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u); document.write ("?zoneid=" + ad.zoneId); document.write ('&cb=' + m3_r); if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used); document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : '')); document.write ("&loc=" + escape(window.location)); if (document.referrer) document.write ("&referer=" + escape(document.referrer)); if (document.context) document.write ("&context=" + escape(document.context)); if (document.mmm_fo) document.write ("&mmm_fo=1"); document.write ("'><\/scr"+"ipt>"); break; case 'url': document.write (''); break; } } obj = { /** 加载广告 * @param Array ads 广告集合 * @param int step 广告加载间隔 * @param boolean async true:异步加载 false:同步加载 */ load: function(ads, step, async){ _ads = ads; if(typeof(step)!='undefined'){ _step = step; } if(typeof(async)!='undefined'){ _async = async; } loadAD(_loaded); }, /** 预加载广告 */ preload: function(ad){ if($('#'+ad.domId).length>0){ // 判断dom是否存在 writeAd(ad); } } } return obj; }()); /* crapLoader */ var crapLoader = (function() { var isHijacked = false, queue = [], inputBuffer = [], writeBuffer = {}, loading = 0, elementCache = {}, returnedElements = [], splitScriptsRegex = /( <?php function showAD($channel='', $step='', $async=''){ include('ADLoader.class.php'); $ad_config = include('ADConfig.php'); ADLoader::setConfig($ad_config, 'ADLoader.js'); return ADLoader::load($channel, $step, $async); } echo showAD('case_openx'); // 异步加载 //echo showAD('case_url'); // url方式异步加载 //echo showAD('case_sync_openx', 300, false); // 同步加载 ?>
内容总结
以上是互联网集市为您收集整理的php广告加载类用法实例_PHP全部内容,希望文章能够帮你解决php广告加载类用法实例_PHP所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。