建站帮助

诚信合作, 高质专业!

Phpcms v9自定义全站多模型调用排行榜文章方法

2019-03-08 14:24:54 浏览 我要评论

在早些年的教程Phpcms V9 点击量排行调用方法Phpcms V9 栏目列表调用文章点击量及评论数量方法中,讲到了Phpcms v9点击率文章的调用方法,但不能很好地调用全站文章的排行榜,今天CMSYOU在这里与大家分享Phpcms v9自定义全站多模型调用排行榜文章方法。

Phpcms v9默认调用排行榜文章的方法:

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

使用的是hits标记,而这一个方法需要指定栏目catid,根据栏目获取模型modelid,从而调用指定表的数据,于是局限了栏目模型、局限了数据表。

今天CMSYOU在这里分享Phpcms v9自定义全站多模型调用排行榜文章方法,是从源头修改,找到\phpcms\modules\content\classes\content_tag.class.php文件,在public function hits($data) {***}函数之后增加一个自定义函数hits_all($data):

/**
* 全站不限模型排行榜标签 @cmsyou.com
* @param $data
*/
public function hits_all($data) {
$this->hits_db = pc_base::load_model('hits_model');
$sql = $desc = $ids = '';
$array = $ids_array = array();
$order = $data['order'];
$sql = "";
if(isset($data['day'])) {
$updatetime = SYS_TIME-intval($data['day'])*86400;
$sql .= " AND updatetime>'$updatetime'";
}
$hits = array();
$ids_array = array();
$result = $this->hits_db->select($sql, '*', $data['limit'], $order);
foreach ($result as $r) {
$pos = strpos($r['hitsid'],'-',2) + 1;
$ids_array[]['id'] = $id = substr($r['hitsid'],$pos);
$temparr = explode("-",$r['hitsid']);
$ids_array[]['modelid'] = $temparr[1];
$hits[$id] = $r;
}
foreach ($ids_array as $r) {
if($r['id']) {
$sql = "status=99 AND id IN ($r[id])";
} else {
$sql = '';
}
$this->set_modelid($r['modelid']);
$result = $this->db->select($sql, '*', $data['limit'],'','','id');
if($result[$r['id']]['title']!='') {
$array[$r['id']] = $result[$r['id']];
$array[$r['id']] = array_merge($array[$r['id']], $hits[$r['id']]);
}
}
return $array;
}

以上语句函数是最近CMSYOU实际项目中改造而成,经过测试。

前台模板具体调用方法:

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

参数只需要控制num数量就好,其他的参数order规则不变,可以调用viewsyesterdayviewsdayviewsweekviewsmonthviews等字段的desc、asc。

不时研究CMS分享在此,坚持分享更多自定义phpcms方法在此,多谢大家几年来的关注与关照!

我要收藏
点个赞吧

相关阅读

本月热门

精选推荐

在线客服

扫一扫,关注我们

扫一扫,关注我们