当前位置:首页 > CMS教程 > phpcms > 列表

PHPCMS全站文章点击排行2个例子

发布:smiling 来源: PHP粉丝网  添加日期:2014-12-05 13:46:16 浏览: 评论:0 

PHPCMS自带的点击排行标签不支持全站文章点击排行,必须输入类别,可以把自带的点击标签复制一份稍加修改一下支持全站文章点击排行,代码如下:

  1. /** 
  2.  * 全站排行榜标签 
  3.  * @param $data 
  4.  */ 
  5. public function hits_all($data){ 
  6.  $this->modelid = 12;//这里就写成固定的,模型id去后台模型管理找 
  7.  $this->hits_db = pc_base::load_model('hits_model'); 
  8.  $this->db->set_model($this->modelid); 
  9.  $this->tablename = $this->db->table_name; 
  10.  $sql = $desc = $ids = ''
  11.  $array = $ids_array = array(); 
  12.  $order = $data['order']; 
  13.  $hitsid = 'c-'.$this->modelid.'-%'
  14.  $sql = "hitsid LIKE '$hitsid'"
  15.  if(isset($data['day'])) { 
  16.   $updatetime = SYS_TIME-intval($data['day'])*86400; 
  17.   $sql .= " AND updatetime>'$updatetime'"
  18.  } 
  19.  $hits = array(); 
  20.  $result = $this->hits_db->select($sql'*'$data['limit'], $order); 
  21.  foreach ($result as $r) { 
  22.   $pos = strpos($r['hitsid'],'-',2) + 1; 
  23.   $ids_array[] = $id = substr($r['hitsid'],$pos); 
  24.   $hits[$id] = $r
  25.  } 
  26.  $ids = implode(','$ids_array); 
  27.  if($ids) { 
  28.   $sql = "status=99 AND id IN ($ids)"
  29.  } else {  //开源软件:phpfensi.com 
  30.   $sql = ''
  31.  } 
  32.  $this->db->table_name = $this->tablename; 
  33.  $result = $this->db->select($sql'*'$data['limit'],'','','id'); 
  34.  foreach ($ids_array as $id) { 
  35.   if($result[$id]['title']!='') { 
  36.    $array[$id] = $result[$id]; 
  37.    $array[$id] = array_merge($array[$id], $hits[$id]); 
  38.   } 
  39.  } 
  40.  return $array

调用的时候,代码如下:

  1. {pc:content  action="hits_all" order="weekviews DESC" num="10"
  2. <ul class="softolist"
  3. {loop $data $key $val
  4.  <li> <a href="{$val['url']}" title="{$val['title']}">{$val['title']}</a></li> 
  5. {/loop} //开源软件:phpfensi.com 
  6. </ul> 
  7. {/pc} 

例2:

①打开phpcmsmodulescontentclassescontent_tag.class.php文件;

②找个位置添加以下代码,首行时间可以自由修改,方便后期查询,代码如下:

  1. function sitehits($data){  
  2. if(emptyempty($data['siteid'])) return false;  
  3. $siteid = intval($data['siteid']);  
  4. $this->hits_db = pc_base::load_model('hits_model');  
  5. $category_content = getcache('category_content','commons');  
  6. $catid = '';  
  7. //获取站点下所有栏目ID  
  8. foreach($category_contentas$key=>$val){  
  9. if($val==$siteid){  
  10. $catid .= $comma.$key;  
  11. $comma=',';  
  12. }  
  13. }  
  14. //获取点击排行  
  15. $r = $this->hits_db->select('catid in('.$catid.')','hitsid',$data['limit'],$data['order']);  
  16. $return = array();  
  17. $sitemodel_model_db = pc_base::load_model('sitemodel_model');  
  18. $this->db_config = pc_base::load_config('database');  
  19. $tablepre = $this->db_config['default']['tablepre'];  
  20. foreach($ras$key){  
  21. preg_match_all('/-(d+)-/',$key['hitsid'],$modelid);  
  22. $id = substr($key['hitsid'],(strpos($key['hitsid'],'-',2)+1));  
  23. $tablename = $sitemodel_model_db->get_one(array('modelid'=>$modelid[1][0]),'tablename');  
  24. $this->db->table_name = $tablepre.$tablename['tablename'];  
  25. $return[] = array_merge($return,$this->db->get_one(array('id'=>$id)));  
  26. }  
  27. return$return;  

③备份文件,以防后期pc程序升级时被覆盖.

④前端页面模板调用方法,示例如下:

  1. {pc:content action="sitehits" siteid="4" num="10" order="views DESC" cache="3600"} {loop $data$r}  
  2. "{$r[url]}" target="_blank">{$r[title]} 
  3. {/loop}  
  4. {/pc}

Tags: PHPCMS全站文章 PHPCMS点击排行

分享到: