菜鸟首页 > 建站教程 > CMS教程phpcmsv9调用全站文章排行的方法

phpcmsv9调用全站文章排行的方法

2016-07-18 21:14 来源:菜鸟模板 作者:youwo
浏览 0 评论

phpcmsv9如果使用多模型的情况下,要调用全站热门文章跟调用全站最新文章一样,也是一件非常蛋疼的事。因为模型与模型之间的内容是独立的,并没有一个索引表。今天教大家怎么调用全站热门文章。

1.打开phpcms\modules\content\classes\content_tag.class.php,在最后的“}”的前边添加

/**
 * 全站排行
 */
function sitehits($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;
}
2.模板调用方法

{pc:content action="sitehits" siteid="1" num="10" order="views DESC"}
<ul>
{loop $data $r}
<li><a href="{$r[url]}" target="_blank">{$r[title]}</a></li>
{/loop}
</ul>
{/pc}

来说两句吧