本章目的
在我的靜態 Blog 上新增一個簡潔、易用、無廣告的評論區/留言版
我從一開始使用 Gitalk 作我的留言版、再轉到了 Disqus ,最後選了 Valine
這裡記錄一下我為什麼會有這樣的轉換,還有我做了哪些的抉擇
吐槽
我會把吐槽寫在一開始,表示我本身是很喜歡 Gitalk 或者 Disqus 的,可以說是逼不得已我才要把評論系統改變,也希望我日後不用再為評論系統折騰太多的時間。
如果想了解我當初如何折騰設定 Gitalk 和 Disqus ,可以點這裡
放棄 Gitalk
先說我放棄 Gitalk 作為作論區的原因,是因為我有一天發現了 Gtalk 出現了 Error: Request failed with status code 403
錯誤,在爬文後得知,大概是從2021年1月31日起,開發者為了降低訪問量,限制了部分功能。雖然可以透過搭建 proxy 去解決該問題,但這也成為了我放棄 Gitalk 的導火線。我本來十分喜歡 Gitalk 的風格 ,實在非常可惜。
放棄 Disqus
Disqus 可以說是功能最全面,而且比較穩定可以安心長期使用的評論系統,至於放棄 Disqus 的原因也十分簡單,就是 它 有 廣 告 !
我建這個 Blog 的初衷,就是我想建立一個無廣告的簡潔部落格,所以這是我無法忍受的一點,雖然可以升級成付費版的 Disqus 來取消廣告,但我選擇了放棄 Disqus。
Valine 的優點
簡潔
- 留言板完全沒有多餘的東西,十分的簡潔。
可匿名留言/無需登入
- 如果要先登入,或者要做什麼驗證才能留言是十分反人性的,搞不好原來想留個什麼言到最後都不想留了。
- 不過同時也要弊端,無法阻擋惡意/垃圾言論。無法得知對方留言和回覆時對方無法得知。
無廣告
- 這對我來說可是十分重要的。
依賴少
- 基本上它只依賴 leancloud ,像 Gitalk 就是要依賴 issue 這個 API 導致目前受到了限制。依賴少表示出毛病的機率也低。
Valine 的安裝和配置
1. 註冊 leancloud
它有區分 國際版 和 國內版,如果選擇國內版的話,好像需要經過備案。不過我是選擇了國際版(international)
特別要留意,註冊 leancloud 後需要驗證 Email 和 Phone number 才可以開始 Create app
2. Create App on Leancloud
a. 填入App name ,選擇 Developer (免費)
b. Setting -> App keys ,得到你的 AppID 和 AppKey
c. 到 server 端,編輯你 jekyll 的 _config.yml
文檔
comments:
provider: valine # false (default), "disqus", "gitalk", "valine", "custom"
...(內容略)
## Valine
# please refer to https://valine.js.org/en/ for more info.
valine:
app_id : TypeYourAppIDHere # LeanCloud App id
app_key : TypeYourAppKKeyHere # LeanCloud App key
placeholder : 歡迎討論和加入你想法 # Prompt information
visitor : # false (default)
meta : # "[nick, mail, link]" (default) nickname, E-mail, Personal-site
記得在你寫的 .md 文章裡面,加入 key : XXX
這樣的頭信息屬性來開啟該頁評論。
2022/01 更新: 有關於 valine 因國際版域名問題導致失效
其實我留意到 valine 失效了已經有一段時間,一直沒修,今天爬了一下文章看到了解決辦法。
其實失效原因是 LeanCloud 官方的 us.avoscloud.com 域名已經下線,如果繼續使用國際版 LeanCloud 作為 Valine 評論的後端的話,則必須指定自定義服務器 URL 才能正常使用。
但由於我是用 jekyll,所以解法稍微有點不一樣,怕我日後忘記所以這邊記錄一下:
1.先登入 LeanCloud 後台找出 REST API 服務器地址
2.編譯 jekyll 的 valine 設定文件
位置在 : jekyll-TeXt-theme-tech/_includes/comments-providers/valine.html
別人都是編譯 _config.yml 便可,但因為我的 _config.yml 文件對 valine 的定義是來自 valine.html 這個文件
添加 serverURLs :
var _config = {
el: '#vcomments',
appId: '',
appKey: '',
serverURLs: 'https://xxxxxxxx.api.lncldglobal.com', # xxxxxxxx 其實就是 appID 的前 8 位#
verify: true,
};
重新進入你所寫的文章網站,更新一下:
看到 Valine 的評論區,大功告成!!
Valine 的擴充
可以說是優化 Valine ,但又可以是解決 Valine 的便宜性所帶來的另一個問題,安全性。
這裡也記錄一下我以後需要優化 Valine 的一些地方
- 頭像
- 我想每一則留言都有個頭像,即便是 Anonymous。
- 必填選項
- 想加入一些必填選項,比如說 NickName 和 E-mail。
- 安全性
- 沒有登入系統就無法區分留言的用戶,包括無法區分管理員的留言。
- 目前知道刪除留言的其中一個方法,是進入 Leancloud 的後台進行管理。