帝國CMS如何呼叫周點選排行和月點選排行
阿新 • • 發佈:2019-01-05
帝國在呼叫系統周點選排行和月點選排行的時候,會存在一個問題,即系統呼叫的點選數,都是全域性的點選數,沒法真正做到按周、月的點選排行。而且時間上面還容易出錯。比如,周排行,你就得呼叫一週以內的資料的點選排行,月點選則是一個月內的資料點選排行,假設你的網站資料更新不是那麼頻繁的話,可能一週根本就沒有更新足夠的資料,那麼你這個排行就沒有任何意義了,因為資料不夠呀!
那麼有什麼辦法可以做到精準的點選排行呢?
辦法當然是有的,這裡借鑑小說點選統計系統的思維,咱們增加一個欄位,周點選及月點選(如果需要其它點選可以自行擴充套件),然後文章被訪問的時候更新點選,資料呼叫的時候使用該欄位,呼叫全域性的資料就可以了。
步驟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()這個函式即可。具體可以搜尋這個函式,檢視用法。