给 Hexo 博客集成 gitalk 评论系统
条评论之前博客用的是 Valine, 选择它的原因是可以匿名评论. Valine 的缺点是没有办法对新的评论发邮件提醒, 虽然官方文档说是可以的, 但一直没能按文档配置成功.
Gitalk 是一款基于 github issue 的评论系统, 它的缺点是没办法匿名评论, 但鉴于我的博客是技术博客, 大部分读者应该都是有 github 账号的, 这个缺点还是可以忍受的.
如何集成 Gitalk
Gitalk 官网有详细的安装介绍, 这儿 是 maupassant 主题的一个集成示例.
这儿 是我的 maupassant 主题中 Gitalk 的配置示例.
使用 md5 解决 label 过长的问题
Gitalk 中每篇博客都是和一个 issue 对应的, 博客的评论内容就是存储在对应的 issue 中:
- 每篇博客都会有一个 id, 这个 id 是以 issue label 的形式存储的
- id 默认是博客的链接地址
- Github 对 label 的长度有限制, 最多只能是 50 个字符
当博客的标题比较长时, 很容易就会超过 50 个字符的限制, 这时就会出现 “Error: Validation Failed.” 这样的错误.
为了解决这个问题, 我们可以使用博客链接地址的 md5 值作为博客的 id. 这需要我们修改 gitalk 的集成脚本:
script(type='text/javascript' src='//cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js') |
这儿 是完整的示例代码.
这里我们使用 window.location.pathname
作为计算 md5 的输入, 它不包括链接中的 host 部分, 这样当我们的博客存在不同的镜像时, 可以让不同主机上的相同博客共享同一套评论.
初始化所有博客的评论系统
这篇博客详细介绍了如何对之前的博客初始化评论系统, 这里我们只介绍如何通过 sitemap 的方法来进行初始化.
环境准备
在开始之前需要我们准备好一下环境:
- 生成了博客的 sitemap.xml 文件
- 在 Personal Access Tokens 界面中创建一个新的 token, 需要选中所有 repo 的权限
- 安装依赖的 gem 包:
sudo gem install faraday activesupport sitemap-parser
上面的环境准备好了之后, 把对应的信息填到下面的 ruby 脚本并执行即可:
username = "hiberabyss" # GitHub 用户名 |
在这个脚本中我们也是用博客链接的 md5 值作为 id 的.
References
- 本文链接:https://hiberabyss.github.io/2018/03/19/hexo-gitalk-integration/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!