Jquery中文网 新宝娱乐城官网 www.z5nka.com.cn
Jquery中文网 >  建站教程  >  phpcms  >  正文 Phpcms V9 调用全站文章排行的实现方法

新宝娱乐城轮盘打不开:Phpcms V9 调用全站文章排行的实现方法

发布时间:2014-08-15   编辑:新宝娱乐城官网 www.z5nka.com.cn
本文介绍下,在phpcms v9中实现调用全站文章排行的方法,有需要的朋友,可以参考下。

新宝娱乐城官网 www.z5nka.com.cn 默认情况下,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 全站文章点击排行榜的实现代码
PHPCMS V9源码-网站入口文件index.php
PHPCMS V9 调用随机文章的方法
PHPCMS V9按浏览次数(月、周、总)排行GET标签调用文章
phpcms v9更换域名后上传图片功能无效的解决办法
如何让PHPCMS V9首页无法只显示推荐的友情链接
PHPCMS V9主站调用全站最新内容的方法
PHPCMS V9调用全站最新内容的方法
GET标签调用全站内容月排行

[关闭]
  • 遭受外来杨梅挑战 宁波宠果地产杨梅还能走多远 2019-06-26
  • 国家下一代互联网产业联盟与秦皇岛市政府共同打造IPv6规模部署示范城市 2019-06-26
  • 喀纳斯景区再添8只天鹅宝宝 2019-06-26
  • 最新发现精子中桶状结构可能是不孕不育的根源 2019-06-26
  • 把课堂上的重点难点录下来 教学类短视频平台前景几何 2019-06-25
  • 联想参展CES Aisa 2018,众多黑科技产品悉数亮相 2019-06-25
  • 晋阳古城晚唐寺庙遗存面世 2019-06-25
  • 深刻认识党的领导、人民当家作主、依法治国的有机统一 加强新时代政治文明建设的着力点 2019-06-25
  • 中央国家机关"学习宣传十九大 送党课到基层"深入太原宣讲  2019-06-24
  • 寻找三秦非遗:二月二,大荔县阿寿村药王庙会赛花馍 2019-06-24
  • 不同08年金融危机,中国经济对美依赖越来越少 2019-06-24
  • 夏天穿件吊带连体裤 帅气美丽又清凉 2019-06-23
  • 三管齐下!央行多渠道投放流动性 对冲税期高峰等影响 2019-06-23
  • 中央国家机关党支部书记从严治党系列访谈(四) 2019-06-23
  • 2017全国两会——问答更优路径 把脉更快发展——西部网 陕西头条 2019-06-22
  • 福建36选7开奖走势图17141期 新快3投注技巧 一头一尾中特公开版 新加坡快乐8是什么意思 中国福利彩票的刮刮乐 福建36选7开奖走势图17141期 墨西哥冠军杯分析 中国竟彩网比分直播 湖北快三今天准确推荐 网易彩票大奖 香港六彩特码资料码 500万彩票官网数据图表 广东十一选五前二组合 中国福彩网下载 有身边的人中彩票大奖