最近用dedecms做了個站,覺得dede的評論系統不太好用,就自己對它進行了一番改造,增加了表情、QQ秀、ajax無刷新等功能。國內有一大批站長用的是dede,今天我先分享下怎樣為評論加上表情。
首先大家思考一下怎樣才能讓dede評論里面顯示表情圖片?直接內容里面寫<img src="********" />肯定是不行的,dede會在保存評論前把它轉換成普通的文本。我們要的是要保證以后能順利升級,所以盡量不改dede的系統文件。
現在換個思路,看看那些論壇,它們添加表情的時候都是添加的一個表情標記,發帖后就變成表情圖片了??磥硎窃诒4嫣拥臅r候對表情標記做了轉換。咱們也來依葫蘆畫瓢。
先找一個表情圖片傳到服務器上,假設是在http://www.qqsvr.com/01.gif,表情標記假設為[em01],現在我只要讓dede在保存評論的時候把[em01]轉換成<img src="http://www.qqsvr.com/01.gif" />就行了。
這里又涉及到2個問題,是先轉換之后再保存,還是直接保存,顯示的時候再轉換?
如果轉換之后再保存,也就是說你的數據庫里存的是<img src="http://www.qqsvr.com/01.gif" />,這個鏈接就固定了,你的表情目錄就不能變了,而且這必需改dede的系統文件才行。
如果是顯示的時候再轉換,那你的數據庫里就保存的是[em01]這樣的表情標記,顯示的時候根據模板規則進行轉換,非常靈活,而且不用改dede的系統文件,只需要改模板就行了。只是顯示一次就要轉換一次,會增加一點兒系統負擔。
我們用第二種方法。打開templets/plus/feedback_templet.htm,這個是dede的評論系統模板,我們發現它里面是可以直接寫php代碼的,<?php echo $row['msg']?>這里就是輸出的評論內容。先把它改成<?php echo convertem($row['msg']) ?>。
convertem()就是轉換表情的方法,就是用它把[em01]轉換成<img>標記,現在我們要給這個方法寫點內容,讓它按我們的意思來轉換。
還是這個文件,在頂部添加
<?php
function convertem($message){
$message = str_replace('[em01]','<img src="http://www.qqsvr.com/01.gif" />', $message );
return $message;
}
?>
這里的str_replace可以進行替換操作,比如str_replace(A,B,C)大概意思就是把C里面的A替換成B。
所以我們用convertem($row['msg'])就能把$row['msg']里面的[em01]給替換了。
現在你在評論里輸入[em01],發表,應該能看到顯示的圖片了。不過這還沒完,你總不可能讓用戶也要輸入代碼才能發表情吧?所以你還得找個合適的地方,加上
<img src="http://www.qqsvr.com/01.gif" onclick="javascript:document.getElementById('msg').value+='[em01]';" />
用戶點擊這個圖片后,會自動在評論框里加上[em01]。
這就大功告成了,其實從頭到尾只改了feedback_templet.htm這個模板就實現了表情功能。
附圖
給Dedecms評論增加表情功能.
新聞熱點
疑難解答