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 的方法都一样,可能就是在哪个文件引入的区别,照猫画虎就可以。