WordPress 最新留言外掛
2005 年 四月 28 日 (星期四) 3:19 pm分類:電腦
標籤:blog, wordpress
在 blog 裡,「最新留言」列表是很受歡迎的功能。以我所用的 WordPress 架站系統為例,很容易搜尋到一大堆名為 “recent comments” 的外掛,可惜,它們總是與我想要的有點差距。
以外觀而言,我所期望的「最新留言」功能,不只是能以時間先後順序條列,還要能以文章歸類排列。用以下的圖形來解釋吧:
![[圖例 1]](/pic-blog/recent-comments-1.png)
右半邊的圖是以時間先後依序列出最近的留言,這也是目前最常見的方式。左半邊則是先將「對同一篇文章」的最近留言歸類在一起,可清楚看出各留言的脈絡,也很清楚看出哪一篇文章的討論較熱烈。
以工程角度而言,我所期望的「最新留言」外掛,還要有以下的特性:
- 在不修改「最新留言」外掛源碼的前提下,自訂留言輸出的參數,如:留言篇數、留言摘要字數等。
- 在不修改「最新留言」外掛源碼的前提下,自訂留言輸出的 XHTML 格式,如:
<a>~</a>裡面要擺留言者、留言日期、文章標題,還是留言摘要?<a>的title屬性要擺什麼?可否自訂<li>的 CSS style 屬性? - 盡量讓使用者不必具備太多 PHP 知識,就能自訂上述功能。
截至目前為止,我所試用過的 WordPress 最新留言外掛計有:
- Krischan Jodies 的 Recent Comments:依時間排列。
- Jared Bangs 的 Recent Comments List:依文章歸類。
- Denis de Bernardy 的 Fuzzy Recent Comments:依文章歸類。
它們都各有特色。
以第 1 項 Krischan Jodies 的 Recent Comments 來說,最大特色在於:高度的客製化彈性,以及完整的工程品質。像留言輸出的參數、XHTML 格式,都能如下圖般自訂調整。較新的版本也整合至 WordPress 的 GUI 管理畫面,設定起來更為方便,工程水準一流。
![[圖例 2]](/pic-blog/recent-comments-2.png)
此外,它的留言摘要字數限制功能,對於像中文這種不以空格做為詞界的文字來說,效果最好。
據我初步觀察,這可能是最受歡迎的 WordPress 最新留言外掛。要是它有支援「依文章歸類」的功能就更好了……
以第 2 項 Jared Bangs 的 Recent Comments List 來說,我喜歡它依文章歸類的輸出方式,畫面也相當簡潔清爽。可惜,它無法在不修改外掛源碼的前提下,自訂留言輸出的 XHTML 格式;而且留言摘要字數限制功能對中文不夠友善。
我曾經建議作者,看看能否加入像 Krischan 的 “Recent Comments” 那種自訂功能。作者回覆說:正在構思如何妥善分隔 “content options” 和 “presentation options”。嗯,我了解,這是件不容易的事 ── 容易定義的話,我早就自己動手了,呵。
以第 3 項 Denis de Bernardy 的 Fuzzy Recent Comments 來說,可調參數數量僅次於 Krischan 的 “Recent Comments”,加上又支援依文章歸類的輸出方式,讓我頗為心動。雖然它的 XHTML 輸出形式我不太喜歡,幸運的是,我們可叫它改而傳回一個 XML 字串:
<tile id="recent_comments">
<name>Latest comments</name>
<post>
<permalink>http://...</permalink>
<date>2005-04-06</date>
<comment>
<author>william</author>
<permalink>http://...</permalink>
<date>2005-04-27</date>
<excerpt>謝謝你的經驗分享。...</excerpt>
</comment>
<comment>
...
</comment>
</post>
<post>
...
</post>
</tile>
如此一來,進一步處理便不是難事,這真是程式員的好消息呀!
據作者說,他希望未來能加上一個 XSLT 參數,讓自訂輸出格式更直覺。嗯,這的確是最正規的做法,不過在此過渡階段,就姑且先用 PHP 的 Perl-compatible regular expression (PCRE) 函數群來剖析 XML 字串吧,反正這份 XML 並沒有太複雜的遞迴結構,用簡單的兩層 foreach 及 regular expressions 就輕而易舉搞定。
Regular expressions 萬歲!
如果你有興趣的話,可到此處下載我製成的外掛,再將副檔名改為 .php。


追蹤留言回應:以
引用通告 (trackback):![[add to funP]](http://william.cswiz.org/blog/wp-content/themes/william/images/add-funp.png)
![[add to HEMiDEMi]](http://www.hemidemi.com/sticker/user/roxytom.bluecircus.net.gif)
![[add to udn bookmark]](http://bookmark.udn.com/html/help/80_20_02.gif)

2005 年 四月 30日 於 10:08 am
您好, 我想請教一下, 有關這個留言外掛要如何掛上, 並使用, 謝謝
2005 年 四月 30日 於 10:17 am
安裝方法比照一般的 WordPress 外掛方式辦理:先擺在
wp-content/plugins目錄,再去 WordPress 的管理畫面啟用之。使用方法,請見程式開頭的註解:
2005 年 四月 30日 於 11:53 am
不好意思還是看不太懂下面這兩行的使用方式
$xml_output = sem_recent_comments( 'display=xml&……' );
yeh_recent_comments( $xml_output );
2005 年 四月 30日 於 12:09 pm
請進入 WordPress 的管理畫面 → 外觀 → 佈景主題編輯器 → 資訊方塊列模版 (
sidebar.php),將上述兩行程式碼塞到你想秀出最新留言的地方。2005 年 四月 30日 於 12:24 pm
出現:
Parse error: parse error, unexpected ‘&’, expecting T_VARIABLE or ‘$’ in D:\**\wp-content\plugins\yeh-recent-comments.php on line 62
謝謝您
2005 年 四月 30日 於 3:41 pm
你的 PHP 可能是很舊的 3.x 版,不認得 4.0 版新增的 reference 語法(相關的說明:英文版、中文版)。
請更新你的 PHP,否則就要將程式裡第 62、67、68、81、85、86、87、88 行的
&符號刪掉。2005 年 四月 30日 於 7:32 pm
我剛才也試了一下,不過卻出現以下訊息:
Warning: Unexpected character in input: ' in /home/eelll/public_html/chen/wp-content/plugins/yeh-recent-comments.php on line 91
真奇怪!
2005 年 四月 30日 於 11:16 pm
現在問題出在不管我下面程式碼放在那裡, 頁面都會出現:
$xml_output = sem_recent_comments( 'display=xml&……' ); * yeh_recent_comments( $xml_output )
2005 年 五月 1日 於 8:49 pm
To 盒子 & fisher:
Sorry,從你們的敘述,實在想不出來問題出在哪。
換做是我,我會先試著隔離問題:先單獨使用 sem_recent_comments( '……' ) 看看是否正常,然後再加上我新增的部份。
2005 年 七月 16日 於 4:57 pm
問題就在於他們沒裝 sem_recent_comments 啦\r
william 老大做的是 xml 美化工作,但是 xml 本身還是要靠 sem_recent_comments 才生得出來
2006 年 二月 24日 於 10:37 pm
你好, 請問你的 Fuzzy Recent Comments 2.0 版還有原始檔嗎? 因為, 它網站上的 Fuzzy Recent Comments 已經出到 4.3 版, 不提供 xml 的輸出了, 所以, 你的程式, 基本上, 就沒法搭配它的新版本說.
謝謝.
2006 年 二月 24日 於 11:05 pm
OK,請到這裡下載 Fuzzy Recent Comments 2.0 b14 版。
2006 年 九月 28日 於 12:41 pm
想請問一下, 您這個留言系統是用那一套呢??
2006 年 九月 28日 於 1:54 pm
我用的是第一套:Krischan Jodies 的 Recent Comments,以及第三套:Denis de Bernardy 的 Fuzzy Recent Comments。
2008 年 一月 6日 於 5:33 pm
我的空間沒wp-content/plugins 的文件夾…所以自己開了…
把yeh-recent-comments.php上傳進去
接著你說進去管理介面
我就打http://域名/wp-content/plugins/yeh-recent-comments.php
結果什麼都沒?
能教我麼?
2008 年 四月 6日 於 2:52 pm
感谢分享哦,我用啦,推你!