1. 程式人生 > >帝國CMS如何呼叫周點選排行和月點選排行

帝國CMS如何呼叫周點選排行和月點選排行

帝國在呼叫系統周點選排行和月點選排行的時候,會存在一個問題,即系統呼叫的點選數,都是全域性的點選數,沒法真正做到按周、月的點選排行。而且時間上面還容易出錯。比如,周排行,你就得呼叫一週以內的資料的點選排行,月點選則是一個月內的資料點選排行,假設你的網站資料更新不是那麼頻繁的話,可能一週根本就沒有更新足夠的資料,那麼你這個排行就沒有任何意義了,因為資料不夠呀!

那麼有什麼辦法可以做到精準的點選排行呢?

辦法當然是有的,這裡借鑑小說點選統計系統的思維,咱們增加一個欄位,周點選及月點選(如果需要其它點選可以自行擴充套件),然後文章被訪問的時候更新點選,資料呼叫的時候使用該欄位,呼叫全域性的資料就可以了。

步驟1,給要統計點選的表,新增欄位,周點選(weekclick),月點選(monclick)

步驟2,對點選進行統計(本函式是統計PV,如果需要過濾PV,只統計UV或者IP的話,可以參考系統自帶的點選統計函式進行擴充套件),程式碼如下

01 //更新點選數
02 function updateHit($clicktime,$tbname,$id){
03     global $empire,$dbtbpre;
04     //點選更新
05     if(date('Ym',$clicktime)<>date('Ym',time())){//不是本月
06         $empire->query("update {$dbtbpre}ecms_".$tbname." set `weekclick`=1,`monclick`=1,`onclick`=onclick+1,`clicktime`="
.time()." where `id`=$id");
07     }else if(date('YW',$clicktime)<>date('YW',time())){//不是本週
08         $empire->query("update {$dbtbpre}ecms_".$tbname." set `weekclick`=1,`monclick`=monclick+1,`onclick`=onclick+1,`clicktime`=".time()." where `id`=$id");
09     }else{//所有點選+1
10         $empire->query("update {$dbtbpre}ecms_".$tbname." set `weekclick`=weekclick+1,`monclick`=monclick+1,`onclick`=onclick+1,`clicktime`=".time()." where `id`=$id");
11     }  
12 }

函式寫完,剩下的就是呼叫啦,在你需要呼叫周排、月排的時候,直接按 weekclick、monclick 進行倒序就可以咯

符:如果需要想帝國系統預設的點選那樣,過濾PV的話,只需要引入/e/class/onclickfun.php這個檔案,呼叫eCheckOnclickCookie()這個函式即可。具體可以搜尋這個函式,檢視用法。