加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Phpcms V9 调用全站文章排行的处理方案

发布时间:2021-12-18 11:11:48 所属栏目:建站 来源:互联网
导读:今天忙于修改网站界面,想在首页添加浏览排行功能,却发现Phpcms竟然不支持调用全站文章排行,下午仔细研究了Phpcms源码,终于找到解决办法. 默认情况下,Phpcms只支持调用当前文章排行,代码如下: {pc:content action=hits catid=$catid num=10 order=views DESC c
今天忙于修改网站界面,想在首页添加浏览排行功能,却发现Phpcms竟然不支持调用全站文章排行,下午仔细研究了Phpcms源码,终于找到解决办法.
 
默认情况下,Phpcms只支持调用当前文章排行,代码如下:
 
{pc:content  action="hits" catid="$catid" num="10" order="views DESC" cache="3600"}
 
其中$catid为待调用栏目的id,如果想实现全站调用,需要修改phpcms/modules/content/classes/content_tag.class.php文件,找到以下函数:
 
public function hits($data) {  
    $catid = intval($data['catid']);  
    if(!$this->set_modelid($catid)) return false;  
   
    $this->hits_db = pc_base::load_model('hits_model');  
    $sql = $desc = $ids = '';  
    $array = $ids_array = array();  
    $order = $data['order'];  
    $hitsid = 'c-'.$this->modelid.'-%';  
    $sql = "hitsid LIKE '$hitsid'";  
    if(isset($data['day'])) {  
        $updatetime = SYS_TIME-intval($data['day'])*86400;  
        $sql .= " AND updatetime>'$updatetime'";  
    }  
    if($this->category[$catid]['child']) {  
        $catids_str = $this->category[$catid]['arrchildid'];  
        $pos = strpos($catids_str,',')+1;  
        $catids_str = substr($catids_str, $pos);  
        $sql .= " AND catid IN ($catids_str)";  
    } else {  
        $sql .= " AND catid='$catid'";  
    }  
    $hits = array();  
    $result = $this->hits_db->select($sql, '*', $data['limit'], $order);  
    foreach ($result as $r) {  
        $pos = strpos($r['hitsid'],'-',2) + 1;  
        $ids_array[] = $id = substr($r['hitsid'],$pos);  
        $hits[$id] = $r;  
    }  
    $ids = implode(',', $ids_array);  
    if($ids) {  
        $sql = "status=99 AND id IN ($ids)";  
    } else {  
        $sql = '';  
    }  
    $this->db->table_name = $this->tablename;  
    $result = $this->db->select($sql, '*', $data['limit'],'','','id');  
    foreach ($ids_array as $id) {  
        if($result[$id]['title']!='') {  
            $array[$id] = $result[$id];  
            $array[$id] = array_merge($array[$id], $hits[$id]);  
        }   //Cuoxin.com
    }  
    return $array;  
}  
       
    $hits = array();  
    $result = $this->hits_db->select($sql, '*', $data['limit'], $order);  
    foreach ($result as $r) {  
        $pos = strpos($r['hitsid'],'-',2) + 1;  
        $ids_array[] = $id = substr($r['hitsid'],$pos);  
        $hits[$id] = $r;  
    }  
    $ids = implode(',', $ids_array);  
    if($ids) {  
        $sql = "status=99 AND id IN ($ids)";  
    } else {  
        $sql = '';  
    }  
    $this->db->table_name = $this->tablename;  
    $result = $this->db->select($sql, '*', $data['limit'],'','','id');  
    foreach ($ids_array as $id) {  
        if($result[$id]['title']!='') {  
            $array[$id] = $result[$id];  
            $array[$id] = array_merge($array[$id], $hits[$id]);  
        }  
    }  
    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"}


Phpcms V9 调用全站文章排行的处理方案

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读