PHPCMS V9 內建評論模組功能完整,但預設樣式較簡陋。本文提供兩種客製化評論顯示樣式的方法:一、使用 {pc:get} 標籤自行查詢資料表循環輸出(彈性最高);二、直接修改模板檔 comment/show_list.html(最快速)。
適用情境:需要完全不同的 HTML 結構、整合 Bootstrap、加入頭像、自訂分頁等。
{php $commentid = 'content_'.$catid.'-'.$id.'-'.$modelid;}
{pc:get sql="SELECT * FROM v9_comment_data_1 WHERE commentid = '$commentid'" cache="0" return="data"}
注意:資料表名稱v9_comment_data_1中的1為站點 ID,多站點請動態調整。
{loop $data $key $val}
comment/show_list.html適用情境:僅需調整 CSS、微調 HTML 結構、保留原有分頁、最新/最熱切換功能。
phpcms/templates/default/comment/show_list.html
{pc:comment action="lists" commentid="$commentid" siteid="$siteid" page="$_GET['page']" hot="$hot" num="20"}
{if !empty($data)}
{loop $data $r}
{direction($r[direction])}
{format::date($r[creat_at], 1)}
{if $r[userid]}{get_nickname($r[userid])}{else}{$r[username]}{/if}
{/loop}
{$pages}
{/if}
{/pc}
<font>、align 等舊式屬性改為 CSS 類別。.media、.list-group 等結構。{get_member_avatar($r[userid])} 或 Gravatar。{date('Y-m-d H:i', $r[creat_at])}。{$pages} 保留即可。pid 欄位並修改遞迴輸出邏輯。$.post() 取得 HTML 片段替換容器。contenteditable 編輯器或 textarea + 表情選擇器,內容儲存時過濾 XSS。$r[status] 區分已審/待審,前端顯示不同標籤。| 維度 | 方法一 {pc:get} | 方法二 修改模板 |
|---|---|---|
| 彈性 | 極高(任意 SQL、任意 HTML) | 中(受限於 comment 標籤輸出變數) |
| 維護性 | 需懂 SQL 與模板語法 | 僅改 HTML/CSS,升級較不易衝突 |
| 功能完整度 | 需自行實作分頁、最新/最熱切換 | 保留原生所有互動功能 |
| 適用場景 | 深度客製、異質系統整合 | 樣式微調、快速上線 |
依專案需求選擇:若只要換裝樣式、保留功能,直接改 show_list.html 最划算;若需重構評論結構、對接前端框架,使用 {pc:get} 完全掌控輸出。兩種方法皆可在不修改核心程式碼下完成客製化,符合 PHPCMS 模板分離設計精神。