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

首頁 > CMS > PhpCMS > 正文

Phpcms v9調用全站文章排序榜實現方法

2024-09-10 07:16:19
字體:
來源:轉載
供稿:網友

Phpcms只支持調用當前文章排行,代碼也是相當的簡單,但是我想調用全站文章的排行這一點它做得不如 dedecms好.

v9調用當前欄目排行代碼如下:

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

其中$catid為待調用欄目的id,如果想實現全站調用,需要修改phpcmsmodulescontentclassescontent_tag.class.php文件,找到以下函數:

  1.  /**  
  2.  * 排行榜標簽  
  3.  * @param $data  
  4.  */ 
  5. public function hits($data) {  
  6.     $catid = intval($data['catid']);  
  7.     if(!$this->set_modelid($catid)) return false;  
  8.  
  9.     $this->hits_db = pc_base::load_model('hits_model');  
  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.     if($this->category[$catid]['child']) {  
  20.         $catids_str = $this->category[$catid]['arrchildid'];  
  21.         $pos = strpos($catids_str,',')+1;  
  22.         $catids_str = substr($catids_str$pos);  
  23.         $sql .= " AND catid IN ($catids_str)";  
  24.     } else {  
  25.         $sql .= " AND catid='$catid'";  
  26.     }  
  27.     $hits = array();  
  28.     $result = $this->hits_db->select($sql'*'$data['limit'], $order);  
  29.     foreach ($result as $r) {  
  30.         $pos = strpos($r['hitsid'],'-',2) + 1;  
  31.         $ids_array[] = $id = substr($r['hitsid'],$pos);  
  32.         $hits[$id] = $r;  
  33.     }  
  34.     $ids = implode(','$ids_array);  
  35.     if($ids) {  
  36.         $sql = "status=99 AND id IN ($ids)";  
  37.     } else {  //開源軟件:Vevb.com 
  38.         $sql = '';  
  39.     }  
  40.     $this->db->table_name = $this->tablename;  
  41.     $result = $this->db->select($sql'*'$data['limit'],'','','id');  
  42.     foreach ($ids_array as $id) {  
  43.         if($result[$id]['title']!='') {  
  44.             $array[$id] = $result[$id];  
  45.             $array[$id] = array_merge($array[$id], $hits[$id]);  
  46.         }  
  47.     }  
  48.     return $array;  

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

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

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

調用方法1:代碼如下:

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

調用方法2:代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清原| 正镶白旗| 桃园市| 长泰县| 拉萨市| 鹤壁市| 安图县| 迭部县| 耒阳市| 肥乡县| 岳阳市| 安西县| 汪清县| 广南县| 富源县| 毕节市| 台山市| 东乡县| 崇礼县| 高台县| 勃利县| 西宁市| 普洱| 康保县| 广灵县| 南乐县| 扶风县| 鱼台县| 三河市| 阳城县| 临城县| 聂拉木县| 黎川县| 治县。| 建水县| 融水| 乐安县| 五原县| 河北区| 稷山县| 旺苍县|