phpcms调用广告(ad)列表方法封装

论坛 期权论坛 脚本     
匿名技术用户   2021-1-16 03:38   339   0

phpcms调用广告通常我们是直接使用get方式读取数据库,这种简单,但是代码有点多,记不住,所以可以采用封装为类似于list的方法

(1)普通方式调用

  1. {pc:get sql="SELECT setting FROM v9_poster WHERE spaceid = 12 AND type='images' AND disabled=0 ORDER BY listorder ASC" num="5"}
  2. {loop $data $r}
  3. <?php
  4. $narry = string2array($r['setting']);
  5. ?>
  6. <a href="{$narry[1][linkurl]}" target="_blank"><img src="{$narry[1][imageurl]}" alt="{$narry[1][alt]}" width="210" height="199"/></a>
  7. {/loop}
  8. {/pc}


(2)封装方式调用

找到phpcms\modules\content\classes\content_tag.class.php文件,找到list方法下新增ad方法

  1. /**
  2. * 广告列表标签
  3. * @param $data
  4. */
  5. public function ad($data) {
  6. $poster = pc_base::load_model('poster_model');
  7. $space = pc_base::load_model('poster_space_model');
  8. $spaceid = intval($data['spaceid']);
  9. $siteid = get_siteid();
  10. if(empty($spaceid)) return false;
  11. $r = $space->get_one(array('siteid'=>$siteid,'spaceid'=>$spaceid));
  12. if(!$r) exit();
  13. if(isset($data['where'])) {
  14. $sql = $data['where'];
  15. } else {
  16. $sql = "`disabled` = 0 AND `spaceid` = '$spaceid' ";
  17. if (isset($data['type'])){
  18. $type = $data['type'];
  19. $sql .= " AND `type` = '$type'";
  20. }
  21. $now = SYS_TIME;
  22. if(isset($data['time']) && $data['time'] == 1){//开启时间限制
  23. $sql .= " AND `startdate`<='".$now."' AND (`enddate`>='".$now."' OR `enddate`=0)";
  24. }
  25. }
  26. $order = $data['order'];
  27. $return = $poster->select($sql, '*', $data['limit'], $order, '', 'id');
  28. foreach ($return as $k => $v) {
  29. $return[$k]['setting'] = string2array($return[$k]['setting']);
  30. $return[$k]['linkurl'] = $return[$k]['setting'][1]['linkurl'];
  31. $return[$k]['imageurl'] = $return[$k]['setting'][1]['imageurl'];
  32. $return[$k]['alt'] = $return[$k]['setting'][1]['alt'];
  33. }
  34. return $return;
  35. }


前端调用方式:

  1. {pc:content action="ad" spaceid="11" num="10" order="listorder DESC"}
  2. {loop $data $r}
  3. <a href="{$r[linkurl]}" target="_blank" alt="{$r[alt]}">
  4. <div class="imgBox" style="background-image: url({$r[imageurl]})"></div>
  5. </a>
  6. {/loop}
  7. {/pc}


还可以添加其他参数比如:
time="1"表示开启时间限制,不满足时间段的将不显示
type="images"调用类型
where="id>10":直接where条件(where条件下其他条件将失效)

改造之后,再也不用担心记不住代码了,一劳永逸

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP