首页 > CMS > PhpCMS > 正文

【phpcms-v9】获取当前栏目下周点击量最高的三篇带缩略图

2024-09-10 07:15:52
字体:
来源:转载
供稿:网友

【phpcms-v9】获取当前栏目下周点击量最高的三篇带缩略图的文章

1.content_tag.class.php文件中hits()函数改造为:

  1. /**  
  2.      * 排行榜标签:len-控制显示条数       thumb-显示带缩略图  
  3.      * @param $data  
  4.      */   
  5.     public function hits($data) {   
  6.         $catid = intval($data['catid']);                                    //栏目id,pc标签的catid属性   
  7.         if(!$this->set_modelid($catid)) return false;                        //根据栏目id->对应的模型id->模型表,如:news   
  8.         $data['limit'] = (isset($data['limitt'])&& (!emptyempty($data['limitt'])))?$data['limitt']:"";//weiyanhui添加   
  9.         $this->hits_db = pc_base::load_model('hits_model');                  //hits:点击量表            
  10.         $sql = $desc = $ids = '';   
  11.         $array = $ids_array = array();   
  12.         $order = $data['order'];                                            //pc标签中order属性   
  13.         $hitsid = 'c-'.$this->modelid.'-%';                                  //hits点击量表中hitsid字段的组成:c-模型id-文章id   
  14.         $sql = "hitsid LIKE '$hitsid'";                                     //拼接sql   
  15.         if(isset($data['day'])) {                                           //pc标签中day属性:表示调用多少天内的排行   
  16.             $updatetime = SYS_TIME-intval($data['day'])*86400;              //表示调用多少天内的排行   
  17.             $sql .= " AND updatetime>'$updatetime'";                     //拼接sql   
  18.         }   
  19.         if($this->category[$catid]['child']) {                               //当前栏目是否有子栏目   
  20.             $catids_str = $this->category[$catid]['arrchildid'];         //当前栏目下所有子栏目id,包括当前栏目自身的id   
  21.             $pos = strpos($catids_str,',')+1;   
  22.             $catids_str = substr($catids_str$pos);                        //当前栏目下所有子栏目id,不包括当前栏目自身id   
  23.             $sql .= " AND catid IN ($catids_str)";                          //拼接sql   
  24.         } else {   
  25.             $sql .= " AND catid='$catid'";                                  //如果当前栏目不存在子栏目   
  26.         }   
  27.         $hits = array();   
  28.         $result = $this->hits_db->select($sql'*'$data['limit'], $order);//查询v9_hits点击量表   
  29.         foreach ($result as $r) {                                           //$result:v9_hits表中返回的数据   
  30.             $pos = strpos($r['hitsid'],'-',2) + 1;                          //格式:c-模型id-文章id,如,c-1-1 ,查找第二个 "-"的位置   
  31.             $ids_array[] = $id = substr($r['hitsid'],$pos);                 //文章的id, $ids_array[]:文章id数组   
  32.             $hits[$id] = $r;                                                //每篇文章的点击量信息 ,格式:$hits[文章id]= 文章点击记录信息   
  33.         }   
  34.         $ids = implode(','$ids_array);                                    //将文章id数组以逗号拼接成一个字符串   
  35.         if($ids) {                                     
  36.             $sql = "status=99 AND id IN ($ids)";                            //拼接sql   
  37.         } else {   
  38.             $sql = '';   
  39.         }   
  40.         $this->db->table_name = $this->tablename;                          //内容主表:v9_news   
  41.         $result = $this->db->select($sql'*'$data['limit'],'','','id');  //查询内容主表:v9_news   
  42.         foreach ($ids_array as $id) {                                       //$ids_array:hits表中查询出来的文章id数组,id是排好顺序的   
  43.             if($data['thumb']!=""){                                         //只查询带缩略图的文章,weiyanhui添加   
  44.                 if($result[$id]['title']!='' && $result[$id]['thumb']!='') {   
  45.                     $array[$id] = $result[$id];   
  46.                     $array[$id] = array_merge($array[$id], $hits[$id]);     //将内容主表v9_news中数据与点击量表v9_hits中数据合并,合并桥梁为id   
  47.                 }   
  48.             }else{                                                          //有缩略图和无缩略图的文章都查询   
  49.                 if($result[$id]['title']!='') {   
  50.                     $array[$id] = $result[$id];   
  51.                     $array[$id] = array_merge($array[$id], $hits[$id]);     //将内容主表v9_news中数据与点击量表v9_hits中数据合并,合并桥梁为id   
  52.                 }   
  53.             }   
  54.         }   
  55.            
  56.         //weiyanhui开始   
  57.         if(isset($data['len'])){//截取长度   
  58.             //获取数组中的前len条数据   
  59.             $array=array_slice($array,0, intval($data['len']));   
  60.         }  //开源软件:Vevb.com 
  61.         //weiyanhui结束   
  62.         //echo "<br/>";   
  63.         //print_r($array);   
  64.            
  65.         return $array;   
  66.     }   

2.模板中调用:

  1. <div class="b_bianjituijian_c">   
  2.                     <!-- 当前栏目下周点击率最高的三篇文章 -->   
  3.                     {pc:content action="hits"  catid="$catid" thumb="1"  len="3" order="weekviews DESC"}   
  4.                     {loop $data $r}   
  5.                     <dl class="b_bianjituijian_cf">   
  6.                         <dt><a href="{$r['url']}"><img src="{$r['thumb']}" width="60" height="60"  alt="{$r['title']}"/></a></dt>   
  7.                         <dd>   
  8.                             <h3><a href="{$r['url']}">{str_cut1($r[title],5,'...')}</a></h3>   
  9.                             <p>   
  10.                             {str_cut($r[description],70,'...')}   
  11.                                 <a href="{$r['url']}">【详细】</a>   
  12.                             </p>   
  13.                         </dd>   
  14.                     </dl>   
  15.                        
  16.                     <span class="border-bx"></span>   
  17.                     {/loop}   
  18.                     {/pc}   
  19. </div>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表