您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3231|回复: 0

分享一个调用广告位的代码(函数或Widget类)

[复制链接]

111

主题

112

帖子

375

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
375
QQ
发表于 2013-8-7 21:28:19 | 显示全部楼层 |阅读模式
自己写的一个调用广告位的函数和Widget类
首先是函数:缓存,自定义广告位模板。
  1. <?php
  2. function Ad($id=0){
  3.     if(intval($id)){
  4.         $ad = S("ad_".$id);
  5.         if(empty($ad)){
  6.             $ad = '';
  7.             $adinfo = M('adplace')->find($id);
  8.             if(!$adinfo || $adinfo['status']==0){
  9.                 return '广告位已经关闭';
  10.             }else{
  11.                 import(Think.Core.View);
  12.                 $view = new View;
  13.                 $template = APP_PATH."Tpl/Home/Ad/".($adinfo['tpl']?$adinfo['tpl']:'index').".html";
  14.                 if(!is_file($template)){return '模板路径错误';}
  15.                 $to = APP_PATH.'Runtime/Cache/'.GROUP_NAME.'/'.md5($template).'.php';
  16.                 $width = $adinfo['adwidth'];
  17.                 $height = $adinfo['adheight'];
  18.                 $typeid = $adinfo['typeid'];
  19.                 switch($adinfo['typeid']){
  20.                     case 1:
  21.                         $adlist = M('ad')->where(array('pid'=>$adinfo['id'],'status'=>1))->order('sort asc,id desc')->select();
  22.                         foreach($adlist as $t){
  23.                             $v['title'] = $t['title'];
  24.                             $v['thumb'] = $t['ad_file'];
  25.                             $v['linkurl'] = $t['ad_url'] ? $t['ad_url'] : $t['url'];
  26.                             $tags[] = $v;
  27.                         }
  28.                         if($tags){
  29.                             $view->display($template);
  30.                             if(!is_file($to)){return '配置错误';}
  31.                             ob_start();
  32.                             include $to;
  33.                             $ad = ob_get_contents();
  34.                             ob_clean();
  35.                         }
  36.                     break;
  37.                     case 2:
  38.                         $adlist = M('ad')->where(array('pid'=>$adinfo['id'],'status'=>1))->order('sort asc,id desc')->select();
  39.                         foreach($adlist as $t){
  40.                             $v['title'] = $t['title'];
  41.                             $v['thumb'] = $t['ad_file'];
  42.                             $v['linkurl'] = $t['ad_url'] ? $t['ad_url'] : $t['url'];
  43.                             $tags[] = $v;
  44.                         }
  45.                         if($tags){
  46.                             $view->display($template);
  47.                             if(!is_file($to)){return '配置错误';}
  48.                             ob_start();
  49.                             include $to;
  50.                             $ad = ob_get_contents();
  51.                             ob_clean();
  52.                         }
  53.                     break;
  54.                     case 3:
  55.                         $adlist = M('ad')->where(array('pid'=>$adinfo['id'],'status'=>1))->order('sort asc,id desc')->find();
  56.                         if($adlist){
  57.                             $view->display($template);
  58.                             if(!is_file($to)){return '配置错误';}
  59.                             ob_start();
  60.                             include $to;
  61.                             $ad = ob_get_contents();
  62.                             ob_clean();
  63.                         }
  64.                     break;
  65.                 }
  66.                 //生成缓存
  67.                 S("ad_".$id,$ad);
  68.             }
  69.         }
  70.         return $ad;
  71.     }else{
  72.         return '没有广告位';
  73.     }
  74. }
  75. ?>
复制代码
下面这个是用Widget类,好像用不了缓存,其实是不会写,脑子不会转弯了。
  1. <?php
  2. class AdWidget extends Action{
  3.     public function show($id=0){
  4.         if($id){
  5.             $adinfo = M('adplace')->find($id);
  6.             if(!$adinfo || $adinfo['status']==0){
  7.                 echo '';
  8.             }else{
  9.                 $this -> assign('id' , $id);
  10.                 $this -> assign('width' , $adinfo['adwidth']);
  11.                 $this -> assign('height' , $adinfo['adheight']);
  12.                 $typeid = $adinfo['typeid'];
  13.                 $this -> assign('typeid' , $typeid);
  14.                 switch($adinfo['typeid']){
  15.                     case 1:
  16.                         $adlist = M('ad')->where(array('pid'=>$adinfo['id'],'status'=>1))->order('sort asc,id desc')->select();
  17.                         foreach($adlist as $t){
  18.                             $v['title'] = $t['title'];
  19.                             $v['thumb'] = $t['ad_file'];
  20.                             $v['linkurl'] = $t['ad_url'] ? $t['ad_url'] : $t['url'];
  21.                             $tags[] = $v;
  22.                         }
  23.                         if($tags){
  24.                             $this->assign('tags',$tags);
  25.                             $this->display("Ad:index");
  26.                         }
  27.                     break;
  28.                     case 2:
  29.                         $adlist = M('ad')->where(array('pid'=>$adinfo['id'],'status'=>1))->order('sort asc,id desc')->select();
  30.                         foreach($adlist as $t){
  31.                             $v['title'] = $t['title'];
  32.                             $v['thumb'] = $t['ad_file'];
  33.                             $v['linkurl'] = $t['ad_url'] ? $t['ad_url'] : $t['url'];
  34.                             $tags[] = $v;
  35.                         }
  36.                         if($tags){
  37.                             $this->assign('tags',$tags);
  38.                             $this->display("Ad:index");
  39.                         }
  40.                     break;
  41.                     case 3:
  42.                         $adlist = M('ad')->where(array('pid'=>$adinfo['id'],'status'=>1))->order('sort asc,id desc')->find();
  43.                         if($adlist){
  44.                             $this->assign('adlist',$adlist);
  45.                             $this->display('Ad:index');
  46.                         }
  47.                     break;
  48.                 }
  49.             }
  50.         }else{
  51.             echo '';
  52.         }
  53.     }
  54. }
  55. ?>
复制代码
调用方法:
  1. {:Ad(3)}
  2. <hr />
  3. {:R('Ad/show',array('id'=>3),'Widget')}
复制代码
我个人喜欢那个Ad($id)函数,调用方便,还能缓存。不知道效率上哪个好一点。对Widget类,不是太明白,刚刚看了资料临时写的。

原文链接:thinkphp.cn

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

      本站部分内容来自互联网,如有侵权,请提前告知,谢谢! WEB开发技术交流群
    Archiver|手机版| QQ

GMT+8, 2018-7-17 14:02 , Processed in 0.079726 second(s), 30 queries .

© 2012-2013 Powered by Discuz! X3. Theme By Yeei!

快速回复 返回顶部 返回列表