加入收藏 | 设为首页 | 会员中心 | 我要投稿 梅州站长网 (https://www.0753zz.cn/)- 行业物联网、云备份、数据工具、云计算、智能推荐!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php广告加载类用法实例

发布时间:2022-06-22 09:07:17 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php广告加载类用法实例,采用jQuery技术可实现异步与同步加载,具有非常广泛的实用价值,需要的朋友可以参考下 本文实例讲述了php广告加载类的用法,非常实用。分享给大家供大家参考。具体方法如下: 该php广告加载类,支持异步与同步加载。
  这篇文章主要介绍了php广告加载类用法实例,采用jQuery技术可实现异步与同步加载,具有非常广泛的实用价值,需要的朋友可以参考下
 
  本文实例讲述了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, '<script type="text/javascript" src="'.self::$_jsclass.'"></script>');  
     
        // 同步需要预先加载  
        if(!self::$_async){  
          foreach($ads as $ad){  
            array_push($html, '<div id="'.$ad['domId'].'_container" style="display:none">');  
            array_push($html, '<script type="text/javascript">');  
            array_push($html, 'ADLoader.preload('.json_encode($ad).');');  
            array_push($html, '</script>');  
            array_push($html, '</div>');  
          }  
        }  
     
        array_push($html, '<script type="text/javascript">');  
        array_push($html, 'var ads='.json_encode($ads).';');  
        array_push($html, '$(document).ready(function(){ ADLoader.load(ads, '.self::$_step.', '.intval(self::$_async).'); });');  
        array_push($html, '</script>');  
      }  
      return implode("rn", $html);  
    } //www.phpfensi.com
     
    /** 判断是否需要强制同步加载的浏览器 */
    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;  

(编辑:梅州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读