如何建立論壇:分類、主題帖、搜尋及防垃圾訊息控制
論壇是由分類、分類內的主題帖及帖文的回覆,再加上帳戶、搜尋及管理功能所組成的網站。它與即時通訊群組不同,因為討論是按主題整理的,內容會長期有用。即使是三年前的主題帖,人們也可以透過搜尋找到,並得到所需的答案。建立論壇時,要先做好主題頁面及搜尋功能;如果論壇是公開的,還要確保搜尋引擎能讀取主題頁面;並且在第一位真正的會員註冊之前,就準備好防垃圾訊息及管理工具。
論壇需要什麼
頁面
- 分類清單:大部分論壇的首頁,顯示每個分類的說明及最新動態。
- 主題帖清單:某分類內的主題帖,按最新回覆排序,並顯示回覆數目及已解決或置頂的標記。
- 主題帖頁面:首篇帖文及之後所有回覆(按次序排列),附有引用、反應按鈕及回覆框。
- 發布新主題帖表格:標題、分類、內容及(可選)標籤。
- 搜尋:涵蓋標題及帖文內容,可按分類篩選。
- 用戶資料頁:名稱、頭像、加入日期、帖文數目及最近帖文。
- 管理佇列:被舉報的帖文及等待批核的帖文。
資料
| 資料表 | 主要欄位 |
|---|---|
| 用戶 | 名稱、頭像、角色、信任等級、加入日期、狀態 |
| 分類 | 名稱、slug、說明、排序、可發帖的人 |
| 主題帖 | 標題、slug、分類、作者、是否置頂、是否鎖定、是否已解決、最後回覆時間 |
| 帖文 | 主題帖、作者、內容、建立時間、編輯時間、是否隱藏 |
| 反應 | 帖文、用戶、類型 |
| 舉報 | 帖文、舉報人、原因、狀態、版主的決定 |
| 訂閱 | 用戶、主題帖(有新回覆時通知) |
把「最後回覆時間」及「回覆數目」儲存在主題帖本身,可以令主題帖清單保持快速;否則每次載入頁面都要重新計算帖文數目。
權限
- 訪客可以閱讀公開分類。
- 會員可以發帖及回覆,並在限定時間內編輯自己的帖文。
- 版主可以隱藏、移動、鎖定、置頂、合併主題帖,以及暫停用戶。
- 管理員管理分類及角色。
私人分類必須在伺服器上對每個請求進行檢查。主題帖頁面、搜尋結果、RSS 及通知全部都需要相同的檢查,否則私人帖文會從其他途徑外洩。參閱如何加入角色存取控制。
決定與取捨
**平面式或樹狀式回覆。**平面式主題帖(按時間排列回覆,並可引用)較易閱讀,也是大部分論壇的標準做法。樹狀式回覆(類似 Reddit)適合辯論,但在手機上較難追蹤。除非有特別理由,否則選擇平面式。
**問答模式。**對於支援或求助類論壇,讓發問的人把其中一則回覆標示為採納答案,並顯示在問題之下。單是這項功能,就能令舊主題帖更有價值。
**為搜尋引擎而公開,或保持私人。**公開的主題帖頁面可以帶來穩定的搜尋流量,但前提是搜尋引擎能夠讀取它們。這意味著每個主題帖都要有乾淨的獨立網址、真正的 <title>,而且帖文內容要直接出現在 HTML 中,而不是之後才由 JavaScript 載入。如果搜尋流量對你很重要,應要求使用伺服器渲染或預渲染的主題帖頁面。詳情參閱 AI 建立網站的 SEO。
**富文字或 Markdown。**附有預覽的 Markdown 易於安全儲存。視覺編輯器則對非技術會員較友善。無論採用哪一種,顯示前都要清理 HTML,以免有人在帖文中注入腳本。
**搜尋。**Postgres 全文搜尋在論壇的首幾年已經足夠。只有在規模很大時,專用的搜尋服務才值得考慮。參閱如何為應用程式加入搜尋。
上線前的防垃圾訊息及管理
論壇吸引自動化垃圾訊息的速度,幾乎比任何其他網站都快,因為每則帖文都是可以公開瀏覽的頁面,並可能附有連結。從一開始就應做好準備:
- **信任等級。**新帳戶不能發布連結或圖片,而其首兩三篇帖文需要等待批核。之後便可自由發帖。
- **發帖頻率限制。**為新帳戶設定每分鐘及每日的發帖上限。
- 發帖前電郵驗證。
- 每則帖文都有舉報按鈕,並把舉報送入管理佇列。
- 用戶連結加上 nofollow,令垃圾訊息發布者無法從搜尋引擎獲益。
- 管理記錄,讓版主可以看到誰在何時做了什麼、為何這樣做。
- 每個分類都置頂清楚的規則。
首個範例提示
為家用濃縮咖啡愛好者建立一個公開的問答論壇。分類:Machines、Grinders、Technique、Beans、Buy and Sell。任何人都可以閱讀;會員以電郵及密碼註冊,並在發帖前驗證電郵。主題帖頁面網址為 /t/[slug],必須以伺服器渲染,並有獨特的標題及 meta 描述,讓搜尋引擎能夠讀取。回覆採用平面式、按時間排列,並支援引用及讚好反應。發起主題帖的人可以把一則回覆標示為採納答案,並顯示在問題之下。新會員的首三篇帖文需待版主批核,在獲批准前不能發布連結。版主可以隱藏、鎖定、置頂及移動主題帖,查看被舉報帖文的佇列,而且每項操作都會被記錄。加入可按分類篩選、涵蓋標題及帖文的搜尋功能,並為我關注的主題帖加入應用程式內的新回覆通知。所有資料都儲存在資料庫中。
建立步驟
- **先建立主題帖頁面。**預先放入幾個分類及五十個貼近真實情況的主題帖。先在手機上把閱讀、引用及回覆的操作做好。
- **分類及主題帖清單。**按最新動態排序、置頂主題帖置於頂部,並加入已解決的標記。
- **帳戶及驗證。**參閱如何為應用程式加入登入功能。
- **管理及信任等級。**批核佇列、舉報、隱藏、鎖定、移動及記錄。以一個全新帳戶試圖發布連結,進行測試。
- **搜尋。**嘗試會員真正會輸入的搜尋詞。
- **SEO。**發布後打開一個主題帖,查看網頁原始碼,確認帖文已在 HTML 中。並加入主題帖的網站地圖。
- **加入真實內容。**自己撰寫最初的二十個有用主題帖,或邀請幾位專家參與。空白的論壇不會吸引第一篇帖文。
常見錯誤
- **空著就推出。**沒有人願意率先發帖。應先放入真實的問題與答案。
- **分類過多。**五個活躍的分類勝過二十個冷清的分類。日後再拆分。
- **新帳戶不需批核。**垃圾訊息機械人很快就會發現新論壇。
- **未經過濾的帖文 HTML。**帖文中的腳本可能會接管其他用戶的登入狀態。必須清理用戶內容。
- **私人分類外洩。**要檢查搜尋結果及通知,而不只是主題帖頁面。
- **每次載入頁面都計算回覆數目。**應把數目儲存在主題帖上,並在帖文改變時更新。
- **沒有刪除帳戶的方法。**應決定離開的會員其帖文會如何處理。
何時論壇軟件較合適
Discourse 等開源及代管的論壇軟件,已經花了多年時間完善信任等級、防垃圾訊息、電郵整合、管理及手機版介面。如果你需要一個通用論壇,而且它不必成為其他應用程式的一部分,安裝或訂閱其中一款通常比自行建立更快、更安全。即時通訊工具適合快速交談,但不擅長令答案容易被找到。
當論壇是你產品的一部分時,例如 SaaS 內的支援論壇、市集中的問答區,或你需要把自訂資料附加在主題帖上(機器型號、訂單、課程單元),又或者你希望論壇的設計及網址完全屬於你自己時,才值得自行建立。如果你需要的是包含個人檔案及活動的較廣泛會員空間,請參閱如何建立社群平台。
使用 Mythex 建立
在 Mythex 上,你可以在對話中描述論壇,在即時預覽中試用,然後發布到公開網址;如果使用 Pro 方案,還可以使用自己的網域。當應用程式需要儲存用戶、主題帖及帖文時,Mythex 會加入專用的 Postgres 資料庫,並為頭像及圖片提供檔案儲存空間。預設技術棧是以瀏覽器渲染的 Vite 及 React 應用程式,因此如果公開論壇需要伺服器渲染的主題帖頁面,請要求代理使用這種方式(也可以選擇 Next.js),並遵循 SEO 指南。會員登入及電郵由你自行選擇:選定做法及服務供應商,把金鑰以專案機密形式儲存,代理便會接駁它們。開放註冊前,請使用 /test 讓代理在發布前測試發帖及管理操作,並閱讀我們的 AI 建立應用程式安全清單。
常見問題
論壇網站需要什麼功能?
分類、附有回覆的主題帖、用戶帳戶、搜尋,以及版主管理工具。大部分論壇還需要回覆通知、在問答主題中標示最佳答案的方法,以及針對新帳戶的防垃圾訊息保護。
論壇應該公開還是私人?
公開論壇可以帶來搜尋流量,因為每個主題帖都是人們可以在 Google 找到的頁面。私人論壇較適合敏感話題或付費會員。很多論壇會保持閱讀公開,只要求發帖時才需要帳戶。
如何防止論壇出現垃圾訊息?
限制新帳戶的權限:首幾篇帖文需等待批核,在帳戶活躍一段時間前不允許附上連結,限制發帖頻率,並為會員提供舉報按鈕。註冊時驗證電郵地址,並記錄版主的操作。
使用 Discourse 等論壇軟件會更好嗎?
如果你需要盡快推出功能齊全的論壇,成熟的論壇軟件是較安全的選擇,因為它已經過多年的管理及防垃圾訊息功能考驗。當論壇是一個更大應用程式的一部分,或需要一般論壇軟件沒有的資料及工作流程時,才值得自行建立。