技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 原创文章 > 正文

phpcms v9获取全站热门文章标签

来源: 技术CTO 阅读:

phpcms v9默认只能根据栏目来获取热门文章标签,但是有时候我们也需要获取全站的热门文章排行榜。当然,如果用默认的我们输入全部栏目的id也可以获取到的,但是当增加栏目时也需要手动修改模板中的id,因此极为不便,下面介绍一个获取全站热门文章的方法。

首先在phpcms/modules/content/class/content_tag.class.php的最后增加一个allhits函数来获取全站热门的文章
/**
    * allhits站点点击排行
    * @param $data
    */
    function allhits($data){
        if(empty($data['siteid'])) return false;
        $siteid = intval($data['siteid']);
        $this->hits_db = pc_base::load_model('hits_model');
        $category_content = getcache('category_content','commons');
        $catid = '';
        //获取站点下所有栏目ID
        foreach($category_content as $key=>$val){
            if($val==$siteid){
            $catid .= $comma.$key;
            $comma=',';
            }
        }
        //获取点击排行
        $r = $this->hits_db->select('catid in('.$catid.')','hitsid',$data['limit'],$data['order']);
        $return = array();
        $sitemodel_model_db = pc_base::load_model('sitemodel_model');
        $this->db_config = pc_base::load_config('database');
        $tablepre = $this->db_config['default']['tablepre'];
        foreach($r as $key){
            preg_match_all('/-(\d+)-/',$key['hitsid'],$modelid);
            $id = substr($key['hitsid'],(strpos($key['hitsid'],'-',2)+1));
            $tablename = $sitemodel_model_db->get_one(array('modelid'=>$modelid[1][0]),'tablename');
            $this->db->table_name = $tablepre.$tablename['tablename'];
            $return[] = array_merge($return,$this->db->get_one(array('id'=>$id)));
        }
        return $return;
    }
然后在需要显示全站热门文章的模板中调用
<ul class="articlelist">
          {pc:content action="sitehits" siteid="1" num="5" order="views DESC" cache="600"}
{loop $data $r}
<li><a href="{$r['url']}" target="_blank">{$r[title]}</a></li>
{/loop}
{/pc}
          </ul>

本文出自技术CTO:http://www.jscto.net,转载请注明出处。

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^