默认情况下,Phpcms只支持调用当前文章排行,代码如下:
{pc:content action=”hits” catid=”$catid” num=”10″ order=”views DESC” cache=”3600″}
其中$catid为待调用栏目的id,如果想实现全站调用,需要修改phpcmsmodulescontentclassescontent_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或空,都能调取全站文章排行。
调用方法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″}
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录