Ghost 內建留言該留還是該換,判準只有一條
一邊要先註冊成會員,一邊有 Google 帳號就能開口。挑完之後,要貼的只有一行。
Ghost 從 2022 年 8 月起就內建留言,而且設計上就限定會員:讀者得先註冊成你站上的會員並登入,回覆框才會出現。對一份收費電子報來說這筆交易划得來,對一個開放的部落格來說剛好相反,因為真正有話想說的人,多半不會為了一句話去辦帳號。想讓路過的讀者也留得下一句,就另外掛一個第三方評論小工具:Settings > Advanced > Code Injection 裡一段 script 標記,留言該落在哪裡就放一個 <div>,事前不必先升上哪一個 Ghost(Pro) 方案。
Ghost 早就有留言,問題在它替誰開門
內建那一套跑在你的會員名單上。Ghost 自己寫得直白:能留言的是已登入的會員。開關在 Settings > Membership > Access,按下 Edit 之後可選的只有 All members 和 Paid-members only 兩項。沒有第三個選項留給匿名讀者,而 Ghost 的說明文件也把這扇門關上了:真要匿名留言,它請你去找第三方整合。
如果留言區本來就是讀者付錢買的一部分,這道門檻是功能而不是缺陷。付費長文底下訂閱者互相過招是個好場子,要求登入正好把場子守住。換到開放的部落格上,同一道門檻就反著作用:有人從別處連進你那篇效能實測,想告訴你數字算錯了,他不會為了這句話去註冊。留言區一直空著,你於是以為沒人在讀。
按你的讀者組成挑一邊
| Ghost 內建留言 | BootSignal 留言 | |
|---|---|---|
| 誰寫得了 | 你站上的會員,而且要登入。匿名留言不支援。 | 任何有 Google 帳號的人。不必是你站上的會員。 |
| 從哪裡打開 | Settings > Membership > Access,設成 All members 或 Paid-members only | Code Injection 裡一段載入器,加上一個掛載用的 <div> |
| 對佈景主題的要求 | 版本跟得上的官方佈景主題,或在自訂佈景主題的文章範本裡補上 {{comments}} | 沒有。<div> 貼在哪裡就畫在哪裡。 |
| 管理 | 在 Ghost 後台隱藏、還原、置頂,附篩選和全文搜尋 | 在 BootSignal 控制台刪掉一則留言,或封鎖寫的人 |
| 資料放在誰那裡 | 你自己的 Ghost 站 | BootSignal,綁在你登記的網域上 |
| 費用 | 社群留言列在每一個 Ghost(Pro) 方案裡 | 每個已登記網域每月 $20 或每年 $200,全部小工具都含在內 |
有件事得講明白:Ghost 內建的管理工具做得好。編輯團隊可以隱藏留言、再放回來、把某一則釘在最上面,還能依文章、作者、可見度或日期篩選,並且全文搜尋。你想聽見的人如果本來就是會員,別把這套換掉。等到他們不是會員、將來也不會是,再加小工具。
這裡的方案門檻卡在佈景主題,不在指令碼
Code Injection 不是加價購。Ghost(Pro) 的方案對照表裡根本沒有 code injection 這一列:Site Header 和 Site Footer 兩個欄位在每個方案的 Settings > Advanced 底下都在,自架的 Ghost 更沒有方案可以拿來擋。社群留言同樣列在每一個方案裡,所以這兩套系統都不是你會為了解鎖而升級的東西。
被擋住的是佈景主題檔案。Ghost(Pro) 把自訂佈景主題和市集佈景主題標成 Starter 不提供、Publisher 以上才有,所以下面那條 post.hbs 路線在 Ghost(Pro) 上要 Publisher 起跳。HTML card 和單篇 code injection 這兩條在任何方案都走得通,自架的話三條全開。動手前先決定走哪一條,程式碼片段不會因此改變,變的只是它該貼到哪裡。
文章底下實際會長成什麼樣
2 則評論
- M
真的一行就搞定,沒想到安裝這麼簡單!
- J
連登入都是共用的,不用再額外接入。👍
div 放好之後,文章底下多出來的就是這個。裡面的留言是示範資料。
一段載入器,貼一次,位置在 Site Footer
Ghost(Pro) 和自架版的起點主機名稱不一樣
在 BootSignal 控制台 打字之前,先弄清楚讀者實際上連到哪個位址,因為 Ghost 對這件事有兩個答案。每個 Ghost(Pro) 站開站時都附一個免費的
ghost.io子網域,自訂網域要之後用 CNAME 記錄接上去,所以 Pro 刊物的頭幾週通常是在yourpublication.ghost.io上回覆讀者,等 DNS 就緒才搬家。自架的 Ghost 沒有這個備胎:它就在你安裝時給的主機名稱上回應,常見的是掛在既有行銷網站旁邊的blog.子網域。把讀者現在所在的那一個登記進去,Pro 站搬到一半就兩個都登記,因為小工具會拿location.hostname去比對你網站 ID 底下的清單,比不到就整個安靜。比對時兩邊開頭的www.都會被去掉,所以www.example.com不必另外登記,登記主網域也一併涵蓋它的子網域。控制台回給你的是一組網站 ID,接下來 Ghost Admin 要的就是這串字。把載入器貼進 Site Footer
在 Ghost Admin 裡打開 Settings > Advanced > Code Injection。Site Header 的內容會輸出在
<head>裡面,Site Footer 的內容則緊接在收尾的</body>之前,而 Ghost 自己的教學就是把 JavaScript 交給 Site Footer,讓它正常載入。這兩個欄位吃的是原始 HTML,不是純 JS,所以<script>標記要你自己寫。注入的程式碼排在佈景主題的樣式和指令碼之後才跑,那正是你要的位置,標記上的defer又讓它避開解析和第一次繪製。一份刊物從頭到尾只需要一段載入器,之後再掛的東西都是標記,不是第二個請求。<script src="https://bootsignal.com/bootsignal.js" data-site-id="YOUR_SITE_ID" data-lang="zh-tw" defer></script>
掛載用的 div 有三個地方可放
Code Injection 只寫得進 <head> 或收尾的 </body> 之前,光這一條限制就決定了這一節。丟進 Site Footer 的掛載 div 會畫在頁面最下方、你的網站頁尾底下,而且首頁、標籤彙整、作者彙整通通有一份,因為全站注入在每一頁都會觸發。所以載入器留在 code injection,div 要換到對位置有主張的地方。
HTML card,一次管一篇
在編輯器裡按 +,或在新的一行打 /,選 HTML card,把 div 貼進去。Ghost 的文件把 HTML card 定位成嵌入外部內容、串接第三方工具的地方,它自己的 Typeform 整合用的就是同一招。這張卡片坐在文章內文裡,所以討論串會接在你最後一段之後,而不是網站頁尾底下。
<div data-bootsignal="comments" data-thread-id="my-post-slug"></div>post.hbs,每篇文章都在同一個位置
Ghost 官方的 Disqus 整合就是可以照抄的樣板,這裡原封不動適用:把 div 放進 post.hbs 的內文之後,若是官方佈景主題,就移掉 {{#if comments}} 區塊,把 {{comments}} helper 換成你的標記。改完上傳佈景主題並重啟 Ghost,或按 Edit code 進到瀏覽器裡的佈景主題編輯器直接改。這條路線要動到自訂佈景主題的權限,所以 Ghost(Pro) Starter 上是關著的。
{{!-- post.hbs, where {{comments}} used to be --}}
<div data-bootsignal="comments" data-thread-id="{{slug}}"></div>單篇 code injection,給一次性的頁面
每篇文章在編輯器側邊欄都有自己的 Code Injection 區塊,Header 和 Footer 兩個欄位只作用在那一篇,這是 Ghost 1.5 就有的東西。位置規則沒變,所以討論串會落在頁面最底部而不是文章底下:放在到達頁上還行,放在部落格文章上就錯了。想給某一頁一個討論串又不想動佈景主題時,才拿它出來用。
每篇文章給一組自己的 thread id
data-thread-id 這個屬性負責把這一頁的留言和那一頁分開。小工具認的是這個值,不是網址,所以兩篇文章帶同一組 id 就共用一場對話,而某篇文章的 id 一改,看起來就像留言全丟了。在 HTML card 裡你是手打這個值,這沒問題,因為你人已經在那篇文章裡。在 post.hbs 裡你身處文章脈絡,把文章自己的 slug 印進屬性,改一次範本就讓每篇文章各自成串。
slug 的麻煩在改名。已發佈的文章一改網址,討論串的鍵也跟著搬,所以你若常改標題,就把屬性綁在不會動的東西上,例如文章 id。也不是每個小工具都要:留言、評分、投票、留言板、按讚、表情回應、瀏覽數、電子報和意見回饋都吃 thread id,而閱讀進度條或目錄沒有什麼要按頁存的東西。
兩個留言框就是多了一個
所有官方 Ghost 佈景主題預設都支援會員留言,所以只要留言功能開著,同一篇文章底下就可能疊著內建討論串和你的小工具。挑一個。到 Settings > Membership > Access 把內建留言關掉最快,而且每個方案都做得到。用自訂佈景主題的話,也可以改成把文章範本裡的 {{#if comments}} 區塊刪掉,那正是 Disqus 樣板要求的同一處修改。在 Starter 上沒有自訂佈景主題,設定裡那個開關就是你唯一的槓桿。
有一種情況兩套並存是說得通的:付費文章維持會員限定的回覆,免費文章放公開討論串。Ghost 的 HTML card 和 code injection 都是按篇生效的,這種切法不必另外分岔佈景主題。
我們這邊收多少
留言含在 BootSignal 訂閱裡:每個已登記網域每月 $20 或每年 $200,38 個付費小工具全部包含,沒有一項跟著流量長。下個月再加一條閱讀進度條不會動到帳單,你訂閱之後才推出的小工具也一樣含著。網域要多加就在控制台另外買,這一點在搬完家還把 ghost.io 位址一起留著登記的人身上特別值得記一筆。價格頁有細節,替代方案那邊則是各家代管留言系統彼此的比較。
Site Footer 一行,HTML card 裡一個 div。
Ghost 長文還配得上另外兩個小工具
這兩個要在會引來留言的那種長文上才划得來,掛法跟討論串一模一樣:文章裡一張 HTML card,或範本裡一行。兩個都不吃 thread id,也都不多一個請求,因為 Site Footer 那段載入器已經在頁面上了。
隨閱讀填充的頂部細條
閱讀進度:一條細長的橫條,隨著讀者往下捲而填滿。
自動目錄 · 高亮目前章節
目錄由你的標題長出來,並標出正在讀的那一節。
<div data-bootsignal="reading"></div>
<div data-bootsignal="toc"></div>Ghost 站安靜下來的六種樣子
- 哪裡都畫不出來:你看的是編輯器,不是發佈出去的頁面。更新文章,然後打開線上網址。
- 在
yoursite.ghost.io上會動,自訂網域上不會,或者反過來:小工具先看location.hostname,每一個主機名稱都得掛到你的網站 ID 底下。 - 你看得到討論串,登出的讀者看不到:檢查 HTML card 上的眼睛圖示。限定會員的卡片對一般訪客是整個藏起來的。
- 兩篇文章顯示同一串留言:它們共用一組
data-thread-id。各給一個值,或在範本裡把屬性綁到文章 slug。 - 討論串畫在頁面最底部、頁尾底下:div 進了 code injection 欄位,那裡只寫得到
</body>之前。把它搬進 HTML card 或post.hbs。 - 留言讀得到卻沒人寫得了:回覆框要 Google 登入,這個登入在你網域上的每個 BootSignal 小工具之間共用。
常見問題
- 裝評論小工具需要付費的 Ghost 方案嗎?
- 不用。Ghost(Pro) 的方案對照表沒有 code injection 這一列,Settings > Advanced 底下的 Site Header 和 Site Footer 每個方案都有,Starter 也在內,自架版更沒有方案這回事。真正被擋的是改
post.hbs,因為自訂佈景主題和市集佈景主題在 Starter 上標的是不提供。在那個方案上,改用 HTML card 或單篇 code injection 掛小工具。 - Ghost 的 page 也放得了討論串,不是只有 post 嗎?
- 放得了。HTML card 在 page 裡和在 post 裡行為一樣,所以關於頁或更新紀錄底下要一串留言,只需要它自己的
data-thread-id。接不過去的是範本那條路:post.hbs畫的是文章,頁面走的是自己的範本檔,兩邊都要有討論串就得靠卡片一頁一頁掛,或在頁面範本上再改一次。Ghost 的文件把內建留言寫成文章層級的功能,也沒有任何一處說它在頁面上畫不畫得出來,所以這一處反而是小工具的行為比較好預料。 - 我的文章同時會寄成電子報,收信的人在信裡看得到討論串嗎?
- 看不到,而且沒有哪個小工具改得了。電子郵件用戶端不跑 JavaScript,所以掛載 div 到了信裡只是一段不會動的標記,載入器根本不會執行,Ghost 在信件內文裡放什麼都一樣。對話只存在於文章的網頁版。如果你的讀者多半在收件匣裡讀,那就是選 HTML card 的理由:在卡片正上方寫一句話,請從信裡讀的人想回覆時到瀏覽器打開這篇。
- 內建的會員留言和公開小工具可以同時留著嗎?
- 技術上可以,而且在官方佈景主題上,你不動手的話兩串都會畫在同一篇文章底下。這件事有用的版本是按篇分:付費文章保留內建的會員留言,免費文章用 HTML card 換上小工具。若你只想全站用一套,就到 Settings > Membership > Access 把內建留言關掉。
- 讀者一定要加入我的會員才留得了言嗎?
- 用小工具就不用。他們用 Google 登入,而這個登入在你網域上的每個 BootSignal 小工具之間是共用的。Ghost 內建留言剛好相反:要先成為會員再登入,第一次留言時還會問名字和專長。
- 我換了佈景主題,討論串不見了,留言是不是跟著沒了?
- 沒有。留言是存在
data-thread-id這個值底下的,不是存在你的佈景主題裡,所以新主題沒有掛載 div 只是把討論串藏起來,一個字都沒動到。把 div 用同一組 id 放回去,整場對話就都在。這也是要緊的文章寧可用 HTML card 的實際理由:卡片的標記屬於文章本身,換佈景主題也帶得走,而post.hbs上的修改屬於佈景主題檔,不會跟著你換過去的新主題走。 - 別人寫的東西我要怎麼管?
- 在 BootSignal 控制台,你可以刪掉一則留言或封鎖寫的人。如果你正拿它和留在內建那套比較:Ghost 後台給的是隱藏和取消隱藏、置頂、依文章與作者與可見度與日期篩選,還有留言全文搜尋。
登記完拿到的網站 ID,就是 Site Footer 那段要填的東西。
數據來源
- Ghost Help: Adding styles with code injection (Settings > Advanced, header and footer output) (核對 2026-08-25)
- Ghost Tutorials: How to use Code Injection in Ghost (wrap JavaScript in a script tag, Site Footer) (核對 2026-08-25)
- Ghost Changelog: Post Code Injection (per-post header and footer fields, Ghost 1.5) (核對 2026-08-25)
- Ghost Help: Editor cards (HTML card, the + button and / command, card visibility) (核對 2026-08-25)
- Ghost: Official Ghost + Typeform integration (paste the JavaScript snippet into an HTML card) (核對 2026-08-25)
- Ghost: Official Ghost + Disqus integration (div in post.hbs, replace the comments helper, re-upload the theme) (核對 2026-08-25)
- Ghost Help: Comments (Settings > Membership > Access, All members or Paid-members only, moderation) (核對 2026-08-25)
- Ghost Changelog: Comments for Ghost (15 August 2022 launch, members only, comments helper) (核對 2026-08-25)
- Ghost(Pro) pricing (free ghost.io subdomain and CNAME custom domains, Custom themes No on Starter, Community comments on every tier, no code injection row) (核對 2026-08-25)