Hexo 的 cactus 主题集成 Gitalk 评论
为什么使用 Gitalk 做评论组件
博客网站都需要支持评论系统,方便与他人交流文章细节。Gitalk 就是一款易用,易集成,支持 Markdown,使用 github 账号登录的评论组件,非常适合技术博客使用。
GItalk 评论界面如下:

Gitalk 的集成方法
Gitalk 的集成很简单,查看 Gitalk 项目的 readme,简单概述就是下面几步。
准备工作
- github 账号
- 一个仓库 repo 用于保存评论,可以用 xxx.github.io,如:al-liu.github.io
- 注册一个新的 OAuth application,点击这里注册
集成步骤
- 引用 gitalk 的 js,css,有两种方式
1 | <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css"> |
或使用 npm 安装,npm install。
- 添加一个 container 到页面,
<div id="gitalk-container"></div>。 - 生成 Gitalk 插件,
const gitalk = new Gitalk({…})其中Client ID,Client Secret来自 Github OAuth application。
查看 Client ID, Client Secret
登录 github 后:



在 Hexo 的 cactus 主题中集成 Gitalk
在 themes/cactus/_config.yml 配置文件中,配置 Gitalk。
1 | disqus: |
cactus 主题默认集成了 disqus 评论系统,将它关闭 enabled 设置成 false。
在 themes/cactus/layout/_partial/comments.ejs 中,
1 | // disqus 评论系统部分 |
<%= theme.gitalk.clientID %> 这些类似标签,对应的是 _config.yml 中的各种配置项,参考前面说到的 Gitalk 项目 readme 的集成方法,代码中先引入 Gitalk 的 js 和 css,还引入了一个 md5 的 js 库,这个后面会用到。下面是添加 container 页 <div id="gitalk-container"></div>, 添加 Gitalk 脚本 var gitalk = new Gitalk ...。需要注意的是 id: md5(window.location.pathname) 这里,是为了防止文章标题过长,导致 Error: Validation Failed. 的错误,详情请见这个issue#102
)。
在 themes/cactus/layout/post.ejs 中查看最后一行是不是 <%- partial('_partial/comments') %> 确认将 comments.ejs 引入进来。
如果hexo s 访问本地服务不能用,部署到 Github 上再试,hexo clean,hexo g, hexo d。
到此 Hexo 的 cactus 主题集成 Gitalk 评论就完成了。其他主题集成 Gitalk 的方法都一样,可能就是在哪个文件引入的区别,照猫画虎就可以。