gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 31 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Phpcms V9 调用全站文章排行的解决方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

默认情况下,Phpcms只支持调用当前文章排行,代码如下:  {pc:content action="hits" catid="$catid" num="10" order="views DESC" cache="3600"}  其中$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或空,都能调取全站文章排行。  调用方法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 调用全站文章排行的解决方法的文章就讲到这里了,如果你想了解更多关于Phpcms V9 调用全站文章排行的解决方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com