建站幫助

誠信合作, 高質專業!

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方法在此,多謝大家幾年來的關注與關照!

我要收藏
點個贊吧

相關閱讀

本月熱門

精選推薦

在線客服

掃一掃,關注我們

掃一掃,關注我們
大乐透的中奖号码