Ghost改造篇三——评论迁移Gitalk
好久没有更新博客了,整个站疏于搭理,最近才刚刚发现之前接入的多言评论系统免费版植入了N多的广告。除此之外,也是一堆一堆的bug,总觉得自己的账号跟其他人的账号莫名其妙的绑定到了一起,头像很怪异,并且修改不了,各种个人设置也不能更新,用起来非常地不爽。然而国外老牌disqus国内始终不能使用。经过一番比较后,才发现有基于GitHub Issues的评论系统。感觉上这个还是会比较稳定的,也不会担心突然死掉。查了一下发现有Gitment和Gitalk可以使用。两者的star数差求不多,原理基本上是一样的,而Gitment有一年多没有更新维护了,看了下UI也比较丑,于是决定使用Gitalk
前言
好久没有更新博客了,整个站疏于搭理,最近才刚刚发现之前接入的多言评论系统免费版植入了N多的广告。除此之外,也是一堆一堆的bug,总觉得自己的账号跟其他人的账号莫名其妙的绑定到了一起,头像很怪异,并且修改不了,各种个人设置也不能更新,用起来非常地不爽。然而国外老牌disqus国内始终不能使用。经过一番比较后,才发现有基于GitHub Issues的评论系统。感觉上这个还是会比较稳定的,也不会担心突然死掉。查了一下发现有Gitment和Gitalk可以使用。两者的star数差求不多,原理基本上是一样的,而Gitment有一年多没有更新维护了,看了下UI也比较丑,于是决定使用Gitalk。
安装
1.首先在GitHub上创建一个OAuth Application,必填项只需要注意Authorization callback URL填写为自己博客的域名即可,其他必选项随便填写,一路下一步。完成后保存好Client ID和Client Secret信息,后面要用到
2.然后在GitHub上创建用来保存评论的Repo
3.在Ghost管理后台settings-design中下载当前的theme,解压后修改post.hbs文件,在post-full-comments位置添加如下代码:
<section class="post-full-comments">
{{!-- gittalk --}}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
clientID: '修改:之前保存的Client ID',
clientSecret: '修改:之前保存的Client Secret',
repo: '修改:之前创建的repo名称,注意是名称,不是repo地址',
owner: '修改:GitHub的个人名称',
admin: ['修改:GitHub的个人名称'], //这里可以填写具有写权限的用户名列表,用来初始化Issues的
id: '{{comment_id}}',
distractionFreeMode: false // Facebook-like distraction free mode
});
gitalk.render('gitalk-container');
</script>
</section>
使用
这里需要注意的是,每发布一篇post,需要以owner的身份登录GitHub,并且访问post地址用来创建一个Issue,才能让其他人在post下评论。
更多自定义设置项,可以参考参数设置
关于使用风险
此评论插件需要将Client Secret暴露在前端,这是OAuth过程并不推荐的做法。由于OAuth还需要设置callback域名,对于域名的校验化解了这样的风险,因此安全性相对还好。在Gitment的README中也有相关的风险分析