Hello Gitment

cover
换 Disqus 才一年,因为被 Q,本来就清静的博客更清静了,索性再也看不到任何评论,忧伤。

最近又看到一个讨论国内社会化评论系统的帖子,兴之所致接入 Gitment。

网上有不少教程,可以按照教程一步步操作。说说我的踩坑过程:


1. 更新主题

我的博客采用的是 hexo + hexo-theme-yilia,首先更新了hexo-theme-yilia主题。

2. 配置信息

发现hexo-theme-yilia主题自带支持Gitment,如下

1
2
3
4
5
gitment_owner: #      #你的 GitHub ID
gitment_repo: '#' #存储评论的 repo
gitment_oauth:
client_id: '#' #client ID
client_secret: '#' #client secret

创建一个 OAuth application,并获取相关信息填入其中。

3. 部署博客

进入博客文章详情,可以看到文章底部已经有评论模块了。

4. 初始化评论

可以自己点进博客手动点击初始化,也可以使用自动初始化 Gitalk 和 Gitment 评论

遇到一个蛋疼的问题是当文章链接过长的时候(超过 50 个字符),会报Validation Failed错误。

解决办法:

  • 如果是手动初始化的,可以考虑在 Gitment 配置里面用page.date代替url,这样就不会超出 50 个字符了。
  • 如果是使用自动初始化的 ruby 脚本,可以改下代码,思路有几种:
    1. 将 url 截取不超过 50 个字符
    2. 将 url md5 加密或者 Base64 编码
    3. 用时间来代替(估计比较蛋疼,涉及时间格式转换)
    4. 设置博客的permalink,保证 url 长度在 50 个字符以内
    5. 其它大胆的想法…
      我采用的是第 1 种方案。

FBI Warning! FBI Warning! FBI Warning!

因为 Issue 需要和文章对应,改完代码后,还需要在博客源码里面改下 Gitment 的配置,使两处生成的值一致。

Ruby 脚本修改一处:

1
req.body = { body: url, labels: [kind, url[0,48]], title: title }.to_json

Gitment 配置修改一处:

1
2
var gitment = new Gitment({
id: "<%= url %>".substring(0,48),

为方便还晕着的,再贴下原来的代码以便区分:

原 Ruby 脚本:

1
req.body = { body: url, labels: [kind, url], title: title }.to_json

原 Gitment 配置:

1
2
var gitment = new Gitment({
id: "<%=url%>",
5. 大功告成
6. 后续问题
  • 之前旧的评论不能导入:理论上可以实现,解析 Disqus 导出的评论文件,然后添加到文章的评论内。看有无必要了。
  • 后续每次添加新文章,都需要手动初始化下评论:同样可以使用脚本初始化,或者发布文章部署时自动调用以初始化。

参考资料:

Gitment:使用 GitHub Issues 搭建评论系统

自动初始化 Gitalk 和 Gitment 评论

Gitment评论功能接入踩坑教程