服务器之家:专注于服务器技术及软件下载分享
分类导航

DEDECMS|帝国CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|苹果CMS|极致CMS|CMS系统|

服务器之家 - 建站程序 - PHPCMS - Phpcms V9 调用全站文章排行的解决方法

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

2019-10-09 15:36phpcms教程网 PHPCMS

今天忙于修改网站界面,想在首页添加浏览排行功能,却发现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文件,找到以下函数: 

复制代码

代码如下:


/** 
* 排行榜标签 
* @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"}

延伸 · 阅读

精彩推荐
  • PHPCMSphpcms怎么上传歌曲文件

    phpcms怎么上传歌曲文件

    phpcms上传歌曲文件的方法:首先依次打开“设置-站点管理-修改”;然后在附件配置的“允许上传附件类型”中添加自己需要的类型;接着打开“添加模型...

    未知1522023-05-07
  • PHPCMSphpcms V9实现QQ登陆OAuth2.0提供下载

    phpcms V9实现QQ登陆OAuth2.0提供下载

    phpcmsV9使用的QQ登陆依然是OAuth1.0,但现在腾讯已经不审核使用OAuth1.0的网站了。这对于使用pc的站长来讲是一个无比巨大的坑。经过对phpcms论坛的一位同学做...

    phpcms教程网3402019-10-11
  • PHPCMSphpcms的栏目缓存无限级罗列展示处理代码(亲测)

    phpcms的栏目缓存无限级罗列展示处理代码(亲测)

    本文为大家详细介绍下phpcms的栏目缓存无限级罗列展示是怎么实现的,粗测试了一下,效果还不错,有需求的朋友可以参考下哈,希望对大家有所帮助 ...

    phpcms教程网8642019-10-11
  • PHPCMSphpcms转移到虚拟空间的详细步骤

    phpcms转移到虚拟空间的详细步骤

    本文向大家介绍phpcms从本地转移到虚拟空间的步骤,转移过程需要改动一部分文件,这里提供如何改动这些文件,以保证你可以顺利转移PHPCMS ...

    phpcms教程网4232019-10-13
  • PHPCMSphpcms v9去除盛大连接 关闭盛大通行证的修改方法

    phpcms v9去除盛大连接 关闭盛大通行证的修改方法

    phpcms v9默认开启了盛大连接,直接使用盛大通告证登录网站,但是盛大通告证的覆盖面有限,比不上QQ或者支付宝,甚至不如人人网、豆瓣之类,于是有朋...

    phpcms教程网5562019-10-13
  • PHPCMS如何设置PhpCms广告模块管理 PhpCms广告模块管理图文教程

    如何设置PhpCms广告模块管理 PhpCms广告模块管理图文教程

    PhpCms广告模块管理图文教程,下面给大家总结一下 ...

    PHPCMS教程网3782019-10-14
  • PHPCMS数据库导入成功,phpcms打不开

    数据库导入成功,phpcms打不开

    问:,数据库导入成功,phpcms打不开 答:您好,查看此域名是解析到 云主机 上的,报错来看应该是您导入的数据库不完整,还差session的表,请您核实 若需...

    未知1822023-05-07
  • PHPCMSphpcms常见问题解答

    phpcms常见问题解答

    1.为什么phpcms首页幻灯片怎么显示不出来? 答:需要设置文章的 标题图片 如果设置标题图片,则可以在首页以及栏目页以图片方式链接到文章。 2.自定义...

    phpcms教程网2712019-10-07