Hexo博客 Maupassant 主题设置 Gitment 评论功能
Nick Yam Lv7

因为博客的评论系统不太完善,第三方系统不是被Q就是容易关停,所以很长一段时间,我都没有加载评论模块。当然也因为博客访客较少的缘故。今天心血来潮,还是把博客搞得完整一些,选来选去看中了 Gitment 这一 GitHub 生态的东西,应该稍微靠谱一些。

Gitment 是基于 GitHub Issues 的评论系统。支持在前端直接引入,不需要任何后端代码。可以在页面进行登录、查看、评论、点赞等操作,同时有完整的 Markdown / GFM 和代码高亮支持。尤为适合各种基于 GitHub Pages 的静态博客或项目页面。

安装 Gitment

安装模块

  • 在blog的根目录安装
    1
    npm i --save gitment

申请应用

首先去New OAuth App 为你的博客申请密钥。

1
2
3
4
Application name: 自行确定
Homepage URL: 你的博客地址 #如 https://www.nickyam.com
Application description: 应用描述
Authorization callback URL: 这个必须写你的博客地址 #如 https://www.nickyam.com

申请完成点注册,生成ClientID和Client Secret,设置的时候需要填写。

博客配置

1
2
3
4
5
6
7
8
# Gitment
# Introduction: https://imsun.net/posts/gitment-introduction/
gitment:
enable: true
github_user: {你的 GitHub ID} #可以是你的GitHub用户名,也可以是github id,建议直接用GitHub用户名就可以。
github_repo: {存储评论的 github repo} #这个是你要存储评论内容的仓库名,可以与博客下的仓库,也可以新建一个仓库专门存储评论内容的。
client_id: {刚才申请的ClientID}
client_secret: {刚才申请的Client Secret}

开通评论

将配置上传到 GitHub 后,刷新博客已经能够显示评论模块。博主需要登陆 GitHub 账号,手动初始化每篇博客的评论功能。

问题汇总

在折腾的过程中,可能碰到的一些问题,在这里记录和大家分享。

Error: Not Found问题

  • owner或者repo配置错误了,注意名字和仓库名字的大小写。

Error: Comments Not Initialized

  • 在注册OAuth Application步骤中,给Authorization callback URL指定的地址错误。
  • 未在网页的 Gitment 评论区登陆 GitHub 账号

Error:validation failed

因为issue的标签label有长度限制,最大长度限制是50个字符。因为id太长,导致初始化失败,用文章的时间,这样长度是保证在50个字符内,完美解决!

如果你使用的是 Maupassant 主题,则在 comments.pug 文件中找到,

并添加id: '#{ page.date }',字段,最终如下:

1
2
3
4
5
6
7
8
9
10
var gitment = new Gitment({
id: '#{ page.date }', #新增部分
owner: '#{theme.gitment.owner}',
repo: '#{theme.gitment.repo}',
oauth: {
client_id: '#{theme.gitment.client_id}',
client_secret: '#{theme.gitment.client_secret}',
},
})
gitment.render('container')

Error:[object ProgressEvent]

在母版中调用的js文件中,有访问 gitment 作者的服务器代码,而作者的服务器不好使了。需要自己搭建一个服务器或采用网上现成的服务。所以需要修改 comments.pug 的另一段,最终如下(下面的服务暂时可用)。如需了解最新情况,可访问 issue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if theme.gitment.enable == true
#container
link(rel='stylesheet', href='https://jjeejj.github.io/css/gitment.css')
script(src='https://jjeejj.github.io/js/gitment.js')
script.
var gitment = new Gitment({
id: '#{ page.date }',
owner: '#{theme.gitment.owner}',
repo: '#{theme.gitment.repo}',
oauth: {
client_id: '#{theme.gitment.client_id}',
client_secret: '#{theme.gitment.client_secret}',
},
})
gitment.render('container')

以上设置后,博客的评论系统就正式上线了。

 评论