信息投票評分已經很流行很通用了,幾乎所有網站都有,但帝國CMS必未有好的解決辦法。
但實現上帝國CMS已經有了基礎功能,只是沒有體現出來而已,本教程就是利用帝國CMS本身的評分實現這個功能
帝國cms評分投票功能實際已經內置ajax中了,竟然沒有說明。下面奇芳閣分析下通過帝國cms內置的ajax評分代碼實現評分投票功能!
首先在模板的head區內調用ajax.js文件,如果已經使用了dig功能則不必重復調用這個js了:
1 | < script type = "text/javascript" src = "[!--news.url--]e/data/js/ajax.js" ></ script > |
將下面的css樣式復制到你原有的樣式表文件中,當然也可以直接寫在模板中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | <style> .star-rating{ list-style : none ; margin : 0px ; padding : 0px ; width : 150px ; height : 30px ; position : relative ; background : url (star_rating.gif) top left repeat-x ; } .star-rating li{ padding : 0px ; margin : 0px ; /*/*/ float : left ; /* */ } .star-rating li a{ display : block ; width : 30px ; height : 30px ; text-decoration : none ; text-indent : -9000px ; z-index : 20 ; position : absolute ; padding : 0px ; } .star-rating li a:hover{ background : url (star_rating.gif) left center ; z-index : 2 ; left : 0px ; } .star-rating a.one-star{ left : 0px ; } .star-rating a.one-star:hover{ width : 30px ; } .star-rating a.two-stars{ left : 30px ; } .star-rating a.two-stars:hover{ width : 60px ; } .star-rating a.three-stars{ left : 60px ; } .star-rating a.three-stars:hover{ width : 90px ; } .star-rating a.four-stars{ left : 90px ; } .star-rating a.four-stars:hover{ width : 120px ; } .star-rating a.five-stars{ left : 120px ; } .star-rating a.five-stars:hover{ width : 150px ; } .star-rating li.current-rating{ background : url (star_rating.gif) left bottom ; position : absolute ; height : 30px ; width : 90px ; display : block ; text-indent : -9000px ; z-index : 1 ; } </style> |
下載下面的星級效果圖片保存下來,注意圖片名稱改成:star_rating.gif,不過需要注意一下CSS中的圖片路徑修改成自己的實際路徑。
在需要添加評分投票功能的地方添加以下代碼
1 2 3 4 5 6 7 8 9 10 | < span id = "showpf" >< script type = "text/javascript" src = "[!--news.url--]e/public/ViewClick/?classid=[!--classid--]&id=[!--id--]&down=3" ></ script > </ span >分 < ul class = "star-rating" > < li class = "current-rating" ></ li > < li >< a href = "JavaScript:makeRequest('[!--news.url--]e/enews/?enews=AddInfoPfen&classid=[!--classid--]&id=[!--id--]&doajax=1&ajaxarea=showpf&fen=1','EchoReturnedText','GET','');" class = "one-star" >1</ a ></ li > < li >< a href = "JavaScript:makeRequest('[!--news.url--]e/enews/?enews=AddInfoPfen&classid=[!--classid--]&id=[!--id--]&doajax=1&ajaxarea=showpf&fen=2','EchoReturnedText','GET','');" class = "two-stars" >2</ a ></ li > < li >< a href = "JavaScript:makeRequest('[!--news.url--]e/enews/?enews=AddInfoPfen&classid=[!--classid--]&id=[!--id--]&doajax=1&ajaxarea=showpf&fen=3','EchoReturnedText','GET','');" class = "three-stars" >3</ a ></ li > < li >< a href = "JavaScript:makeRequest('[!--news.url--]e/enews/?enews=AddInfoPfen&classid=[!--classid--]&id=[!--id--]&doajax=1&ajaxarea=showpf&fen=4','EchoReturnedText','GET','');" class = "four-stars" >4</ a ></ li > < li >< a href = "JavaScript:makeRequest('[!--news.url--]e/enews/?enews=AddInfoPfen&classid=[!--classid--]&id=[!--id--]&doajax=1&ajaxarea=showpf&fen=5','EchoReturnedText','GET','');" class = "five-stars" >5</ a ></ li > </ ul > |
此時你會發現在提交評分時總是提示:您來自的連接不存在!主要是因為要使用評分功能的模型,還需要往模型數據表增加“infopfen”(評分數)和“infopfennum”(評分人數)兩個字段,詳細操作步驟如下:
后臺>系統>管理數據表>管理字段>增加字段:
評分數字段:字段名填“infopfen”、字段標識填“評分數”、字段類型選“大數值型(INT)”,其他默認,點提交;
評分人數字段:字段名填“infopfennum”、字段標識填“評分人數”、字段類型選“大數值型(INT)”,其他默認,點提交;
兩個字段增加后模型即可使用評分功能了,效果如下:
同樣我們也可以使用表單的方式實現評分投票功能,首先還是要往模型數據表增加“infopfen”(評分數)和“infopfennum”(評分人數)兩個字段,詳細操作步驟同上!
增加評分字段以后,在那個評論的模板中有兩個表單,一個是評分用的,另一個是提交評論用的。
在第一個表單(評分用的),表單提交地址,就用官方默認的:/e/enews/index.php,不能改為/e/pl/doaction.php
在第二個表單(提交評論用的),才需要把 /e/enews/index.php改為/e/pl/doaction.php
具體效果如下:
首先找到帝國cms文件中的 e/public/ViewClick,打開index.php文件,在52行左右找到以下代 碼:
1 | $shownum = $r [infopfennum]? round ( $r [infopfen]/ $r [infopfennum]):0; |
或者直接搜索 down==3,完整的代碼是:
1 2 3 4 5 6 | //評分數 elseif ( $down ==3) { $r = $empire ->fetch1( "select infopfen,infopfennum from {$dbtbpre}ecms_" . $cr [ 'tbname' ]. " where id='$id' limit 1" ); $shownum = $r [infopfennum]? round ( $r [infopfen]/ $r [infopfennum]):0;} ) |
將上面代碼中的綠色部分修改為:
1 | $shownum = $r [infopfennum]? round ( $r [infopfen]/ $r [infopfennum],1):0; |
其中的,1表示保留一個小數點,以此類推。
然后在列表頁的調用代碼為:(下面的代碼為實時調用,不需要人工刷新。)
1 | <script src=[!--news.url--]e/ public /ViewClick?classid=[!--classid--]&id=[!--id--]&down=3></script>
|
新聞熱點
疑難解答