指南

如何建立論壇:分類、主題帖、搜尋及防垃圾訊息控制

論壇是由分類、分類內的主題帖及帖文的回覆,再加上帳戶、搜尋及管理功能所組成的網站。它與即時通訊群組不同,因為討論是按主題整理的,內容會長期有用。即使是三年前的主題帖,人們也可以透過搜尋找到,並得到所需的答案。建立論壇時,要先做好主題頁面及搜尋功能;如果論壇是公開的,還要確保搜尋引擎能讀取主題頁面;並且在第一位真正的會員註冊之前,就準備好防垃圾訊息及管理工具。

論壇需要什麼

頁面

  • 分類清單:大部分論壇的首頁,顯示每個分類的說明及最新動態。
  • 主題帖清單:某分類內的主題帖,按最新回覆排序,並顯示回覆數目及已解決或置頂的標記。
  • 主題帖頁面:首篇帖文及之後所有回覆(按次序排列),附有引用、反應按鈕及回覆框。
  • 發布新主題帖表格:標題、分類、內容及(可選)標籤。
  • 搜尋:涵蓋標題及帖文內容,可按分類篩選。
  • 用戶資料頁:名稱、頭像、加入日期、帖文數目及最近帖文。
  • 管理佇列:被舉報的帖文及等待批核的帖文。

資料

資料表主要欄位
用戶名稱、頭像、角色、信任等級、加入日期、狀態
分類名稱、slug、說明、排序、可發帖的人
主題帖標題、slug、分類、作者、是否置頂、是否鎖定、是否已解決、最後回覆時間
帖文主題帖、作者、內容、建立時間、編輯時間、是否隱藏
反應帖文、用戶、類型
舉報帖文、舉報人、原因、狀態、版主的決定
訂閱用戶、主題帖(有新回覆時通知)

把「最後回覆時間」及「回覆數目」儲存在主題帖本身,可以令主題帖清單保持快速;否則每次載入頁面都要重新計算帖文數目。

權限

  • 訪客可以閱讀公開分類。
  • 會員可以發帖及回覆,並在限定時間內編輯自己的帖文。
  • 版主可以隱藏、移動、鎖定、置頂、合併主題帖,以及暫停用戶。
  • 管理員管理分類及角色。

私人分類必須在伺服器上對每個請求進行檢查。主題帖頁面、搜尋結果、RSS 及通知全部都需要相同的檢查,否則私人帖文會從其他途徑外洩。參閱如何加入角色存取控制。

決定與取捨

**平面式或樹狀式回覆。**平面式主題帖(按時間排列回覆,並可引用)較易閱讀,也是大部分論壇的標準做法。樹狀式回覆(類似 Reddit)適合辯論,但在手機上較難追蹤。除非有特別理由,否則選擇平面式。

**問答模式。**對於支援或求助類論壇,讓發問的人把其中一則回覆標示為採納答案,並顯示在問題之下。單是這項功能,就能令舊主題帖更有價值。

**為搜尋引擎而公開,或保持私人。**公開的主題帖頁面可以帶來穩定的搜尋流量,但前提是搜尋引擎能夠讀取它們。這意味著每個主題帖都要有乾淨的獨立網址、真正的 <title>,而且帖文內容要直接出現在 HTML 中,而不是之後才由 JavaScript 載入。如果搜尋流量對你很重要,應要求使用伺服器渲染或預渲染的主題帖頁面。詳情參閱 AI 建立網站的 SEO。

**富文字或 Markdown。**附有預覽的 Markdown 易於安全儲存。視覺編輯器則對非技術會員較友善。無論採用哪一種,顯示前都要清理 HTML,以免有人在帖文中注入腳本。

**搜尋。**Postgres 全文搜尋在論壇的首幾年已經足夠。只有在規模很大時,專用的搜尋服務才值得考慮。參閱如何為應用程式加入搜尋。

上線前的防垃圾訊息及管理

論壇吸引自動化垃圾訊息的速度,幾乎比任何其他網站都快,因為每則帖文都是可以公開瀏覽的頁面,並可能附有連結。從一開始就應做好準備:

  1. **信任等級。**新帳戶不能發布連結或圖片,而其首兩三篇帖文需要等待批核。之後便可自由發帖。
  2. **發帖頻率限制。**為新帳戶設定每分鐘及每日的發帖上限。
  3. 發帖前電郵驗證。
  4. 每則帖文都有舉報按鈕,並把舉報送入管理佇列。
  5. 用戶連結加上 nofollow,令垃圾訊息發布者無法從搜尋引擎獲益。
  6. 管理記錄,讓版主可以看到誰在何時做了什麼、為何這樣做。
  7. 每個分類都置頂清楚的規則。

首個範例提示

為家用濃縮咖啡愛好者建立一個公開的問答論壇。分類:Machines、Grinders、Technique、Beans、Buy and Sell。任何人都可以閱讀;會員以電郵及密碼註冊,並在發帖前驗證電郵。主題帖頁面網址為 /t/[slug],必須以伺服器渲染,並有獨特的標題及 meta 描述,讓搜尋引擎能夠讀取。回覆採用平面式、按時間排列,並支援引用及讚好反應。發起主題帖的人可以把一則回覆標示為採納答案,並顯示在問題之下。新會員的首三篇帖文需待版主批核,在獲批准前不能發布連結。版主可以隱藏、鎖定、置頂及移動主題帖,查看被舉報帖文的佇列,而且每項操作都會被記錄。加入可按分類篩選、涵蓋標題及帖文的搜尋功能,並為我關注的主題帖加入應用程式內的新回覆通知。所有資料都儲存在資料庫中。

建立步驟

  1. **先建立主題帖頁面。**預先放入幾個分類及五十個貼近真實情況的主題帖。先在手機上把閱讀、引用及回覆的操作做好。
  2. **分類及主題帖清單。**按最新動態排序、置頂主題帖置於頂部,並加入已解決的標記。
  3. **帳戶及驗證。**參閱如何為應用程式加入登入功能。
  4. **管理及信任等級。**批核佇列、舉報、隱藏、鎖定、移動及記錄。以一個全新帳戶試圖發布連結,進行測試。
  5. **搜尋。**嘗試會員真正會輸入的搜尋詞。
  6. **SEO。**發布後打開一個主題帖,查看網頁原始碼,確認帖文已在 HTML 中。並加入主題帖的網站地圖。
  7. **加入真實內容。**自己撰寫最初的二十個有用主題帖,或邀請幾位專家參與。空白的論壇不會吸引第一篇帖文。

常見錯誤

  • **空著就推出。**沒有人願意率先發帖。應先放入真實的問題與答案。
  • **分類過多。**五個活躍的分類勝過二十個冷清的分類。日後再拆分。
  • **新帳戶不需批核。**垃圾訊息機械人很快就會發現新論壇。
  • **未經過濾的帖文 HTML。**帖文中的腳本可能會接管其他用戶的登入狀態。必須清理用戶內容。
  • **私人分類外洩。**要檢查搜尋結果及通知,而不只是主題帖頁面。
  • **每次載入頁面都計算回覆數目。**應把數目儲存在主題帖上,並在帖文改變時更新。
  • **沒有刪除帳戶的方法。**應決定離開的會員其帖文會如何處理。

何時論壇軟件較合適

Discourse 等開源及代管的論壇軟件,已經花了多年時間完善信任等級、防垃圾訊息、電郵整合、管理及手機版介面。如果你需要一個通用論壇,而且它不必成為其他應用程式的一部分,安裝或訂閱其中一款通常比自行建立更快、更安全。即時通訊工具適合快速交談,但不擅長令答案容易被找到。

當論壇是你產品的一部分時,例如 SaaS 內的支援論壇、市集中的問答區,或你需要把自訂資料附加在主題帖上(機器型號、訂單、課程單元),又或者你希望論壇的設計及網址完全屬於你自己時,才值得自行建立。如果你需要的是包含個人檔案及活動的較廣泛會員空間,請參閱如何建立社群平台。

使用 Mythex 建立

在 Mythex 上,你可以在對話中描述論壇,在即時預覽中試用,然後發布到公開網址;如果使用 Pro 方案,還可以使用自己的網域。當應用程式需要儲存用戶、主題帖及帖文時,Mythex 會加入專用的 Postgres 資料庫,並為頭像及圖片提供檔案儲存空間。預設技術棧是以瀏覽器渲染的 Vite 及 React 應用程式,因此如果公開論壇需要伺服器渲染的主題帖頁面,請要求代理使用這種方式(也可以選擇 Next.js),並遵循 SEO 指南。會員登入及電郵由你自行選擇:選定做法及服務供應商,把金鑰以專案機密形式儲存,代理便會接駁它們。開放註冊前,請使用 /test 讓代理在發布前測試發帖及管理操作,並閱讀我們的 AI 建立應用程式安全清單。

常見問題

論壇網站需要什麼功能?

分類、附有回覆的主題帖、用戶帳戶、搜尋,以及版主管理工具。大部分論壇還需要回覆通知、在問答主題中標示最佳答案的方法,以及針對新帳戶的防垃圾訊息保護。

論壇應該公開還是私人?

公開論壇可以帶來搜尋流量,因為每個主題帖都是人們可以在 Google 找到的頁面。私人論壇較適合敏感話題或付費會員。很多論壇會保持閱讀公開,只要求發帖時才需要帳戶。

如何防止論壇出現垃圾訊息?

限制新帳戶的權限:首幾篇帖文需等待批核,在帳戶活躍一段時間前不允許附上連結,限制發帖頻率,並為會員提供舉報按鈕。註冊時驗證電郵地址,並記錄版主的操作。

使用 Discourse 等論壇軟件會更好嗎?

如果你需要盡快推出功能齊全的論壇,成熟的論壇軟件是較安全的選擇,因為它已經過多年的管理及防垃圾訊息功能考驗。當論壇是一個更大應用程式的一部分,或需要一般論壇軟件沒有的資料及工作流程時,才值得自行建立。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)