调用全站文章排行的解决方法-Phpcms-V9

技术教程 2026-01-09 15:28:52 浏览

默认情况下,PHPcms只支持调用当前文章排行,代码如下: 其中$catid为待调用栏目的id,如果想实现全站调用,需要修改phpcms\modules\content\classes\content_tag.class.php文件,找到以下函数:

复制代码

代码如下:

/*** 排行榜标签* @param $data*/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]);}}return $array;}

全站文章排行 复制代码

代码如下:

/*** 排行榜标签* @param $data*/public function hits($data) {$catid = intval($data['catid']);$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(!empty($catid) && $catid>0) { //添加判断:id是否为空if(!$this->set_modelid($catid)) return false;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]);}}return $array;}

修改代码后,无论设置栏目id为0或空,都能调取全站文章排行。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐