用Gitment替换多说来为基于hexo的静态网站提供评论功能
本站一直使用多说(duoshuo)来作为外挂的评论服务,但不幸的是,多说将于2017年6月1日正式关停服务。技术到底还是需要Money支撑,无论多么美好的技术。。。
一个多说倒下去,万能的Github站出来,感谢imsun同学,及时的搞出来Gitment这个插件,将Github的Issue讨论和发布功能玩儿活了,变成的博客的评论功能。愚以为此乃想象力配合生产力的完美碰撞!
经过一个多小时的配置和尝试,本站的评论系统成功切换到了Github。基本上参考这篇说明就可以配置好,这里着重说明一下过程中遇到的几个问题。
引入Gitment
其实这一步在npm install --save gitment
完之后,在node_modules/gitment/dist
下,这两个文件拷贝到:
1 | $ cp <mysite>/node_modules/gitment/dist/style/default.css <mysite>/themes/jacman/source/js/gitment-theme-default.css |
要注意,<mysite>
是本网站的目录,而本网站使用的是jacman这个主题。
修改网站主题,启用Gitment
首先需要引入Gitment的CSS样式文件和JS文件,修改<mysite>/themes/jacman/layout/after_footer.ejs
这个文件,在文件头部加入如下内容:
1 | <link rel="stylesheet" href="<%- config.root %>js/gitment-theme-default.css"> |
在文件末尾加入如下内容:
1 | <!-- Gitment Start --> |
注意上面的引入方式中,在gitment.render
调用时,我自作聪明,额外加入了两个if判断:
- 第一个
if( page.comments)
保证了Gitment只在容许评论的页面中出现 - 第二个
if($('#commentContainer'))
保证了只有在ID为commentContainer
的tag存在的前提下,才执行render
函数,避免了找不到对象是发生JS错误
接着,把Gitment自动生成的评论界面插入到页面中。由于在jacman主题中,页面布局被进一步细化到了这个文件夹<mysite>/themes/jacman/layout/post
,所以这一步需要编辑<mysite>/themes/jacman/layout/post/comment.ejs
文件,在文件末尾加入如下内容:
1 | <% if( page.comments) { %> |
重新生成静态网站,并部署到Github上,查看效果
1 | $ hexo d -g |
出错了?检查有没有初始化评论!
这里把Gitment文档中的内容在重复一下:
页面发布后,你需要访问页面并使用你的 GitHub 账号登录(请确保你的账号是第二步所填 repo 的 owner),点击初始化按钮。之后其他用户即可在该页面发表评论。
(END)