經過了一天的折騰,我終於為自己的博客添加上了評論系統。坦率的講,為什么網上那么多方案我還要自己寫一篇博客,那就是因為他們說的都有bug,所以我要自己總結一下。
我選用的是gitalk評論系統,原因是因為它可以直接在github上管理評論,不需要在別的平台注冊,特別方便。下面我來詳細說一下hexo博客是如何添加gitalk評論的。
先看一下效果:
一、配置github
首先進入github
,點擊右上角頭像【Settings】->【Developer settings】->【OAuth Apps】->【New OAuth App】進行基本配置(一定要細心,看清截圖中的紅字)。
上面的填寫成功之后進入,我們需要的是生成的Client ID
和Client Secret
二、博客配置
上面的確認無誤后,我們進行配置博客,引入gitalk。
首先進入主題的配置文件_config.yml
(注意是主題的配置文件,不是博客根目錄下的配置文件),添加gitalk配置(一定要仔細,缺一不可)。
gitalk:
enable: true 開啟gitalk評論,不需要配置
owner: github用戶名
admin: github用戶名
repo: 博客的倉庫名稱(注意不是地址)
ClientID: 上面生成的Client ID
ClientSecret: 上面生成的Client Secret
labels: 'gitalk' github issue 對應的issue標簽(新建一個)
distractionFreeMode: true 無干擾模式,不需要更改
下面是我的配置:
上面配置完畢后,進入主題目錄->【layout】->【_partial】->【post】目錄,在當前目錄下新建一個gitalk.ejs
文件,寫入如下代碼:
<link rel="stylesheet" href="https://unpkg.com/gitalk@latest/dist/gitalk.css">
<script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script>
<script src="https://priesttomb.github.io/js/md5.min.js"></script>
<script type="text/javascript">
new Gitalk({
clientID: '手動馬賽克',
clientSecret: '手動馬賽克',
repo: 'qisi007.github.io',
owner: 'qisi007',
admin: 'qisi007',
id: md5(location.pathname),
distractionFreeMode: true
}).render('gitalk-container')
</script>
里邊的配置我就我說了,和上面的一摸一樣,然后進入上一級的目錄,路徑是
主題目錄->【layout】->【_partial】下的article.ejs
文件最后面加入下邊的代碼:
<% if (theme.gitalk.enable){ %>
<div id="gitalk-container"></div>
<%- include post/gitalk.ejs %>
<% } %>
好了,到此為止,所有的配置就完成了。
執行命令hexo d -g
打包發布,過幾分鍾應該能看到效果了,應該能看到效果了。
評論管理頁面在倉庫的issue里邊。
三、問題
大部分問題都是因為Homepage URL
和Authorization callback URL
這兩個地址錯誤引起的,比如服務器錯誤,或者是點擊登錄跳轉到博客主頁等等。
還有個問題是進入博客詳情頁后,評論插件上面顯示Error: Validation Failed
, 這是因為文章名稱經URL編碼后添加到issues的label里,但是label的長度上限是50個字符,所以文章名有些長的都會生成label失敗,也就沒辦法評論了。
所以上面我們用到了md5
,文章名經URL編碼后轉MD5,然后再生成label,這樣就不會超過長度了。
四、寫在最后
我的博客主題用的是freemind
,這是一個復古風格的主題,這個主題本身不帶評論插件的,本人進行了二次封裝,修改了一些樣式和bug,並上傳到了自己的github
中,歡迎star。 傳送門