之前我的Hexo博客中使用的是 多说
的评论插件,后来多说停止运营了之后就直接把评论功能去掉了,而后一直使用的是邮件的方式。但邮件也是很不方便的,是一种不得已的选择。
最近,看到好多博客中都添加了一个名为 Gitment
的评论插件,直接使用GitHub的 Issues
作为评论内容的存储位置,也是非常方便的。
Update:2019-04-30
Gitment
评论插件已经长时间不更新了,另外由于插件内引用的域名Https证书已经过期,导致无法提交评论。建议更换为更好用的 Gitalk
评论插件。
配置方法见:Hexo博客添加Gitalk评论系统 | IT范儿
Next主题版本
我的hexo主题使用的是 Next
主题,当前版本为 v5.1.3
。这一版是直接内置支持 gitment
功能的。关于如何升级 Next
主题,可以看我之前的文章:Hexo博客添加搜索功能
另外我发现,当前 Next
主题的最新版本为 v6.4.1
,而 v6.x.x
版本和 v5.x.x
版本又有所不同,不能平滑的升级,所以这里我就没有升级 Next
到最新,直接使用的 v5.1.3
版本。
添加Gitment评论
创建GitHub OAuth Apps
打开链接 OAuth Apps – New OAuth App
。按要求填写相应内容即可。
其中,Homepage URL
表示站点的网址。Authorization callback URL
为站点的回调地址,一般也默认为站点的网址。
最后,得到 Client ID
和 Client Secret
备用。
修改配置
在 themes/next
目录下,找到 _config.yml
配置文件,找到 gitment
配置段:
1 | # Gitment |
设置 enable
为 true
,表示启用 gitment
评论插件。
Update:2019-04-30
Gitment
评论插件已经长时间不更新了,另外由于插件内引用的域名Https证书已经过期,导致无法提交评论。建议更换为更好用的 Gitalk
评论插件。
配置方法见:Hexo博客添加Gitalk评论系统 | IT范儿
其他的必需项是 github_user
,表示你的github账号名称。 github_repo
表示保存评论数据的仓库名称,这里可以使用当前博客所在的仓库名称,也可以单独设置一个专门的仓库。client_id
和 client_secret
为上面创建的值。
修改完成后,将hexo博客文件上传到github。因为gitment功能必需在线上才能进行操作。
注意事项
点击登录github发现一直显示loading
在创建 OAuth Apps
中填写 Authorization callback URL
时,网站的地址末尾不能带有 /
。
某些文章不能生成Issues
当点击文章页面底部的 初始化本文的评论页
按钮时,页面会弹出错误信息:Error:Validation Failed
信息。
通过查看操作请求,gitment会在生成Issues时创建两个 label
标签。
一个是文章标题的路径: window.location.pathname
值,如 /2018/09/05/pip-install-locale-error-unsupported-locale-setting/
;另一个是定值 gitment
。
而由于 github 中 Issues
的 label
长度限制为最大 50
个字符,当 文章标题长度过长时,该label就会生成失败,而导致初始化错误,弹出 Validation Failed
的提示。
通过网上的搜索,发现可以使用文章创建时的时间来代替文章标题,作为这个唯一的label标签。
找到giment的配置:/themes/next/layout/_third-party/comments/gitment.swig
文件:
找到如下部分:
1 | var gitment = new {{CommentsClass}}({ |
修改为:
1 | var gitment = new {{CommentsClass}}({ |
这样,在初始化时就不会出错了。
有新的Issues时发送钉钉提醒
上面我们添加了评论功能,但是在使用中会出现不能及时响应的问题。当有人对文章做了评论或提出什么疑问后,我们并不能及时的知道或者回复,这样给人的感觉是不好的。虽然添加了评论功能,但反而不如使用邮件的方式高效了。
经过一番思考后,我发现平时工作中用到的钉钉中是可以添加GitHub的钉钉机器人的。而手机端的钉钉也能做到有新提醒后立即响应。所以,可以设置当GitHub的Issues有变动时,通过钉钉机器人提醒我们查看新的评论或作出回复。
生成Github机器人WebHook地址
钉钉机器人只有在群中才能添加,个人是无法添加的。但是一个人又无法创建群。那么该如何添加一个钉钉群机器人呢?
Update:2019-05-05
我采用的方法是 “偷梁换柱” 的方式。首先呢,在手机或PC端选择 “发起群聊”,至少选择二个人进来,此时注意不要在群里发任何信息。然后在 群设置
中的 群成员
选项中移除其他人就可以了,整个过程其他人不会接收到任何消息(有点类似于微信清理联系人的操作)。就这么简单。这样,这个群里就只有你一个人了,添加群机器人后也不会打扰到别人。
之前钉钉中组建群组至少必须是二个人,最近测试发现组建群组至少必须是三个人了。也就是必须选择另外两个好友才能组成一个群组。如果只选择一个好友,那进入的就是 “发消息” 的界面了。
然后在 群
设置中选择 群机器人
选项,选择 GitHub机器人
,按照设置流程生成GitHub机器人,即可获取到相应群的WebHook地址,其格式如下:
1 | https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx |
在GitHub中设置项目的webhook
进入 GitHub 的 Hexo 博客仓库,依次点击 Settings
– Webhooks & Services
– Add Webhook
,新增一项。
在 payload URL
中填写刚才获得的钉钉WebHook地址;
在 Content type
选项下选择 application/json
项;
在 Secret
中不填写内容,保持空值即可;
在 Event
选项下,我这里选择了 issues
相关的所有 event
事件,也可以按照自己的需求自定义。
然后,点击 Add webhook
按钮即可。
至此,当 Issues
中有新的评论时,在钉钉手机客户端就能立即接收到提醒了。