国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > PhpCMS > 正文

Phpcms V9 調(diào)用全站文章排行的解決方案

2024-09-10 07:15:05
字體:
供稿:網(wǎng)友

今天忙于修改網(wǎng)站界面,想在首頁添加瀏覽排行功能,卻發(fā)現(xiàn)Phpcms竟然不支持調(diào)用全站文章排行,下午仔細(xì)研究了Phpcms源碼,終于找到解決辦法.

默認(rèn)情況下,Phpcms只支持調(diào)用當(dāng)前文章排行,代碼如下:

{pc:content  action="hits" catid="$catid" num="10" order="views DESC" cache="3600"}

其中$catid為待調(diào)用欄目的id,如果想實(shí)現(xiàn)全站調(diào)用,需要修改phpcms/modules/content/classes/content_tag.class.php文件,找到以下函數(shù):

  1. public function hits($data) {  
  2.     $catid = intval($data['catid']);  
  3.     if(!$this->set_modelid($catid)) return false;  
  4.    
  5.     $this->hits_db = pc_base::load_model('hits_model');  
  6.     $sql = $desc = $ids = '';  
  7.     $array = $ids_array = array();  
  8.     $order = $data['order'];  
  9.     $hitsid = 'c-'.$this->modelid.'-%';  
  10.     $sql = "hitsid LIKE '$hitsid'";  
  11.     if(isset($data['day'])) {  
  12.         $updatetime = SYS_TIME-intval($data['day'])*86400;  
  13.         $sql .= " AND updatetime>'$updatetime'";  
  14.     }  
  15.     if($this->category[$catid]['child']) {  
  16.         $catids_str = $this->category[$catid]['arrchildid'];  
  17.         $pos = strpos($catids_str,',')+1;  
  18.         $catids_str = substr($catids_str$pos);  
  19.         $sql .= " AND catid IN ($catids_str)";  
  20.     } else {  
  21.         $sql .= " AND catid='$catid'";  
  22.     }  
  23.     $hits = array();  
  24.     $result = $this->hits_db->select($sql'*'$data['limit'], $order);  
  25.     foreach ($result as $r) {  
  26.         $pos = strpos($r['hitsid'],'-',2) + 1;  
  27.         $ids_array[] = $id = substr($r['hitsid'],$pos);  
  28.         $hits[$id] = $r;  
  29.     }  
  30.     $ids = implode(','$ids_array);  
  31.     if($ids) {  
  32.         $sql = "status=99 AND id IN ($ids)";  
  33.     } else {  
  34.         $sql = '';  
  35.     }  
  36.     $this->db->table_name = $this->tablename;  
  37.     $result = $this->db->select($sql'*'$data['limit'],'','','id');  
  38.     foreach ($ids_array as $id) {  
  39.         if($result[$id]['title']!='') {  
  40.             $array[$id] = $result[$id];  
  41.             $array[$id] = array_merge($array[$id], $hits[$id]);  
  42.         }   //Vevb.com 
  43.     }  
  44.     return $array;  
  45. }  

修改代碼,見注釋,代碼如下:

  1. public function hits($data) {  
  2.     $catid = intval($data['catid']);  
  3.    
  4.     $this->hits_db = pc_base::load_model('hits_model');  
  5.     $sql = $desc = $ids = '';  
  6.     $array = $ids_array = array();  
  7.     $order = $data['order'];  
  8.     $hitsid = 'c-'.$this->modelid.'-%';  
  9.     $sql = "hitsid LIKE '$hitsid'";  
  10.     if(isset($data['day'])) {  
  11.         $updatetime = SYS_TIME-intval($data['day'])*86400;  
  12.         $sql .= " AND updatetime>'$updatetime'";  
  13.     }  
  14.     if(!emptyempty($catid) && $catid>0) { //添加判斷:id是否為空  
  15.         if(!$this->set_modelid($catid)) return false;  
  16.         if($this->category[$catid]['child']) {  
  17.             $catids_str = $this->category[$catid]['arrchildid'];  
  18.             $pos = strpos($catids_str,',')+1;  
  19.             $catids_str = substr($catids_str$pos);  
  20.             $sql .= " AND catid IN ($catids_str)";  
  21.         } else {  
  22.             $sql .= " AND catid='$catid'";  
  23.         }  
  24.     }  
  25.        
  26.     $hits = array();  
  27.     $result = $this->hits_db->select($sql'*'$data['limit'], $order);  
  28.     foreach ($result as $r) {  
  29.         $pos = strpos($r['hitsid'],'-',2) + 1;  
  30.         $ids_array[] = $id = substr($r['hitsid'],$pos);  
  31.         $hits[$id] = $r;  
  32.     }  
  33.     $ids = implode(','$ids_array);  
  34.     if($ids) {  
  35.         $sql = "status=99 AND id IN ($ids)";  
  36.     } else {  
  37.         $sql = '';  
  38.     }  
  39.     $this->db->table_name = $this->tablename;  
  40.     $result = $this->db->select($sql'*'$data['limit'],'','','id');  
  41.     foreach ($ids_array as $id) {  
  42.         if($result[$id]['title']!='') {  
  43.             $array[$id] = $result[$id];  
  44.             $array[$id] = array_merge($array[$id], $hits[$id]);  
  45.         }  
  46.     }  
  47.     return $array;  
  48. }  

修改代碼后,無論設(shè)置欄目id為0或空,都能調(diào)取全站文章排行.

調(diào)用方法1:{pc:content  action="hits" catid="0" num="10" order="views DESC" cache="3600"}

調(diào)用方法2:{pc:content  action="hits" num="10" order="views DESC" cache="3600"}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临湘市| 封开县| 沙坪坝区| 阳山县| 普兰县| 岚皋县| 江门市| 敦化市| 临沂市| 砚山县| 紫阳县| 西盟| 留坝县| 邢台市| 延长县| 金湖县| 上饶县| 新民市| 罗定市| 抚顺市| 台湾省| 分宜县| 镇江市| 买车| 深泽县| 共和县| 金乡县| 托克托县| 铅山县| 习水县| 永清县| 长治市| 太湖县| 蒙山县| 理塘县| 湖州市| 巴林左旗| 陕西省| 东海县| 江陵县| 浦北县|