日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHPCMS V9 按浏览次数排行调用文章

發布時間:2024/7/19 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHPCMS V9 按浏览次数排行调用文章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

作者:匿名 來源:老者工作室 瀏覽:1841次 2011-6-22 14:59:05 字號:大 中 小 [摘要]PHPCMS V9(簡稱V9)采用PHP5+MYSQL做為技術基礎進行開發。V9采用OOP(面向對象)方式進行基礎運行框架搭建。模塊化開發方式做為功能開發形式。框架易于功能擴展,代碼維護,優秀的二次開發能力,可滿足所有網站的應用需求。

  在用PHPCMS做下載站時候,比較頭疼的就是目前的V9版竟然沒有下載次數統計,而只能使用瀏覽次數來忽悠瀏覽者,呵呵,管他了,反正一般來訪者都不會太注意。現在只能忍著了,剛從DeDeCMS轉過來,好歹人家都有下載次數統計的。畢竟沒有十全十美的東西……

  做下載總得有個下載排行吧,按照一般的邏輯,進入某欄目,顯示的是某欄目的下載排行,而在首頁呢,應該顯示的是全站所有軟件條目的下載排行。

  雖說PHPCMS V9是新開發的,架構比較好,但是錯誤也不少,好多標簽一同時使用后就出現異常了,頭都大了,也懶得整理放到官方論壇給他們修正,自己先避開,能不用就不用。

  而我要說的就是,PHPCMS V9的標簽竟然不支持重復調用多個欄目,例如我想顯示某兩個欄目的下載排行,V9就做不到了,而之前的2008版卻是可以支持的。令人費解,只能認為是新架構,還沒來得及完善了。

   更難理解的是,瀏覽次數的表里面,與相關文章或下載內容關聯的是一個叫“hitsid”的字段,同時也是該表的主鍵。存儲的字段內容如“c-2-5”一 類的,而不是普通的整型數字,不能簡單的與文章表或者下載表里面的條目的“id”號直接關聯就得到相關的瀏覽次數,這個另類的“x-y-z”的方式令不少 SQL語句的生手望而生畏,包括本人。

  不過還好,這個“x-y-z”的格式是有規律可循的,于是乎,我查看了相關的文檔,想到了用字符 串的形式,因為我做的是下載站,“x-y-”這段字符串是固定的,就是“c-2-”,第一個“c”是什么不知道,第二個“2”應該是內容模型,“2”是下 載模型,“1”是文章模型,可以到模型管理里面查看id號。最后那個數字就是對應的文章表或下載表里的條目id了,所以,也不是沒有方法的,我想到的就是 在SQL語句里,將固定的“c-2-”和字段id合在一起,得到的就是諸如“c-2-5”一類的字符串,然后在用條件比對即可。

  但是限于本人水平有限,這個字符串加了半天,沒有能夠成功。于是乎在網上漫無邊際的搜尋著,無意發現了IT民工x宅男寫的文章《Phpcms V9 替換頂級欄目頁面為列表頁及BUG修復》,從中找到了另一個方法,就是使用SQL語句的“substring”,我恍然大悟,這個方法也行得通的啊。先附上這位同學給出的方法:

頻道總排行調用方法

<div class="box"><h5 class="title-2">頻道總排行</h5>{pc:get sql="select a.id,a.title,a.url,a.catid,b.hitsid,b.views from v9_news a left join v9_hits b on a.id=substring(b.hitsid,5) where a.catid in ($arrchildid) order by b.views desc" num="10" cache="3600"}<ul class="content digg">{loop $data $r}<li> <a href="{$r[url]}" title="{$r[title]}"?target="_blank">{str_cut($r[title],36,'...')}</a></li>{/loop}</ul>{/pc} </div>


頻道月排行調用方法

<div class="box"><h5 class="title-2">頻道本月排行</h5>{pc:get sql="select a.id,a.title,a.url,a.catid,b.hitsid,b.views from v9_news a left join v9_hits b on a.id=substring(b.hitsid,5) where a.catid in ($arrchildid) order by b.monthviews desc" num="8" cache="3600"}<ul class="content rank">{loop $data $r}<li><span>{number_format($r[views])}</span><a href="{$r[url]}"{title_style($r[style])}class="title" title="{$r[title]}">{str_cut($r[title],56,'...')}</a></li>{/loop}</ul>{/pc} </div>


  這個就是兩個很好的例子。當然我只用到了前一個例子中的SQL語句中的substring方法。Substring是截取字符串的作用,具體Substring的解釋詳見《SQL語句Substring用法》。

  經過上述例子學習后改進,雖然我的方法跟上面的多表聯查不一樣,但同樣得到了最后的調用全站所有文章排行的方法:

<div class="idxTopApps contents"> <ul class="indexIcns"> {pc:get sql="SELECT a.id,a.url,a.thumb,a.status,b.hitsid,b.views FROM v9_download a, v9_hits b WHERE a.status=99 and a.id=substring(b.hitsid,5) ORDER BY b.views DESC" num="6"} {loop $data $r} <li><a href="{$r['url']}"><img src="{$r['thumb']}" /></a></li> {/loop} {/pc} </ul> </div>


  可以看到 “substring(b.hitsid,5)”是截取hitsid字段,從左往右數第5個字符串,即“c-2-5”從左往右數,1個“c”,1個 “2”,2個“-”,第5個字符就是“5”,截取后只剩下了第2個“-”后的id,到達了最終提取id的目的。當然,其中我還加入了另一個條件 “status=99”,這個表示已經審核通過的文章,這個可有可無。

轉載于:https://www.cnblogs.com/gzmg/p/3222976.html

總結

以上是生活随笔為你收集整理的PHPCMS V9 按浏览次数排行调用文章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。