WordPress 最新留言外掛

2005 年 四月 28 日 (星期四) 3:19 pm
分類:電腦
標籤:,

在 blog 裡,「最新留言」列表是很受歡迎的功能。以我所用的 WordPress 架站系統為例,很容易搜尋到一大堆名為 “recent comments” 的外掛,可惜,它們總是與我想要的有點差距。

以外觀而言,我所期望的「最新留言」功能,不只是能以時間先後順序條列,還要能以文章歸類排列。用以下的圖形來解釋吧:

[圖例 1]

右半邊的圖是以時間先後依序列出最近的留言,這也是目前最常見的方式。左半邊則是先將「對同一篇文章」的最近留言歸類在一起,可清楚看出各留言的脈絡,也很清楚看出哪一篇文章的討論較熱烈。

以工程角度而言,我所期望的「最新留言」外掛,還要有以下的特性:

  1. 在不修改「最新留言」外掛源碼的前提下,自訂留言輸出的參數,如:留言篇數、留言摘要字數等。
  2. 在不修改「最新留言」外掛源碼的前提下,自訂留言輸出的 XHTML 格式,如:<a></a> 裡面要擺留言者、留言日期、文章標題,還是留言摘要?<a>title 屬性要擺什麼?可否自訂 <li>CSS style 屬性?
  3. 盡量讓使用者不必具備太多 PHP 知識,就能自訂上述功能。

截至目前為止,我所試用過的 WordPress 最新留言外掛計有:

  1. Krischan Jodies 的 Recent Comments:依時間排列。
  2. Jared Bangs 的 Recent Comments List:依文章歸類。
  3. Denis de Bernardy 的 Fuzzy Recent Comments:依文章歸類。

它們都各有特色。

以第 1 項 Krischan Jodies 的 Recent Comments 來說,最大特色在於:高度的客製化彈性,以及完整的工程品質。像留言輸出的參數、XHTML 格式,都能如下圖般自訂調整。較新的版本也整合至 WordPress 的 GUI 管理畫面,設定起來更為方便,工程水準一流。

[圖例 2]

此外,它的留言摘要字數限制功能,對於像中文這種不以空格做為詞界的文字來說,效果最好。

據我初步觀察,這可能是最受歡迎的 WordPress 最新留言外掛。要是它有支援「依文章歸類」的功能就更好了……

[圖例 3]以第 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


◤建議您一併閱讀以下文章:


16 項留言回應 給 “WordPress 最新留言外掛”

  1. 1 fisher 留言:

    您好, 我想請教一下, 有關這個留言外掛要如何掛上, 並使用, 謝謝

  2. 2 william 留言:

    安裝方法比照一般的 WordPress 外掛方式辦理:先擺在 wp-content/plugins 目錄,再去 WordPress 的管理畫面啟用之。

    使用方法,請見程式開頭的註解:

    $xml_output = sem_recent_comments( 'display=xml&……' );
    yeh_recent_comments( $xml_output );

  3. 3 fisher 留言:

    不好意思還是看不太懂下面這兩行的使用方式
    $xml_output = sem_recent_comments( 'display=xml&……' );
    yeh_recent_comments( $xml_output );

  4. 4 william 留言:

    請進入 WordPress 的管理畫面 → 外觀 → 佈景主題編輯器 → 資訊方塊列模版 (sidebar.php),將上述兩行程式碼塞到你想秀出最新留言的地方。

  5. 5 fisher 留言:

    出現:
    Parse error: parse error, unexpected ‘&’, expecting T_VARIABLE or ‘$’ in D:\**\wp-content\plugins\yeh-recent-comments.php on line 62
    謝謝您

  6. 6 william 留言:

    你的 PHP 可能是很舊的 3.x 版,不認得 4.0 版新增的 reference 語法(相關的說明:英文版中文版)。

    請更新你的 PHP,否則就要將程式裡第 62、67、68、81、85、86、87、88 行的 & 符號刪掉。

  7. 7 盒子 留言:

    我剛才也試了一下,不過卻出現以下訊息:

    Warning: Unexpected character in input: ' in /home/eelll/public_html/chen/wp-content/plugins/yeh-recent-comments.php on line 91

    真奇怪!

  8. 8 fisher 留言:

    現在問題出在不管我下面程式碼放在那裡, 頁面都會出現:
    $xml_output = sem_recent_comments( 'display=xml&……' ); * yeh_recent_comments( $xml_output )

  9. 9 william 留言:

    To 盒子 & fisher:

    Sorry,從你們的敘述,實在想不出來問題出在哪。

    換做是我,我會先試著隔離問題:先單獨使用 sem_recent_comments( '……' ) 看看是否正常,然後再加上我新增的部份。

  10. 10 ijliao 留言:

    問題就在於他們沒裝 sem_recent_comments 啦\r
    william 老大做的是 xml 美化工作,但是 xml 本身還是要靠 sem_recent_comments 才生得出來 :)

  11. 11 hello 留言:

    你好, 請問你的 Fuzzy Recent Comments 2.0 版還有原始檔嗎? 因為, 它網站上的 Fuzzy Recent Comments 已經出到 4.3 版, 不提供 xml 的輸出了, 所以, 你的程式, 基本上, 就沒法搭配它的新版本說.

    謝謝.

  12. 12 william 留言:

    OK,請到這裡下載 Fuzzy Recent Comments 2.0 b14 版。

  13. 13 Gemmy 留言:

    想請問一下, 您這個留言系統是用那一套呢??

  14. 14 william 留言:

    我用的是第一套:Krischan Jodies 的 Recent Comments,以及第三套:Denis de Bernardy 的 Fuzzy Recent Comments

  15. 15 請求人 留言:

    我的空間沒wp-content/plugins 的文件夾…所以自己開了…
    把yeh-recent-comments.php上傳進去
    接著你說進去管理介面
    我就打http://域名/wp-content/plugins/yeh-recent-comments.php
    結果什麼都沒?

    能教我麼?

  16. 16 wow gold 留言:

    感谢分享哦,我用啦,推你!

留言回應

[檢核碼]  


Allowed XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

本站已啟用 spam 防護機制。為避免系統誤判,請在按下按鈕之前,先備份您的留言,以防不測。如果您一直無法順利留言,請改用 email 方式。
此外,如果您想留的言與本篇文章及討論串無關,也請轉而點選這裡。謝謝您!