hexo给默认主题landscape添加valine评论功能

近几天用hexo学习搭建了下博客系统,同样遇到了一些坑。。。
网上搜到的资料大多数都选择next主题,所以next主题相关的解决方案比较多。我选择的是默认的主题landscape主题,可以自己稍作修改,还是不错的。。。

遇到的第一个坑就是添加评论功能不显示,valine是最好的选择,相关资料太多不多说,直接说注意事项。

配置(写在主题目录下的配置文件里)

1
2
3
4
5
6
7
8
9
10
11
12
valine:
enable: true
appid: 32131313123
appkey: 1232131312
notify: false # valine mail notify (true/false) https://github.com/xCss/Valine/wiki
verify: false # valine verify code (true/false)
pageSize: 10 # comment list page size
avatar: mm # gravatar style https://valine.js.org/#/avatar
lang: zh-cn # i18n: zh-cn/en
placeholder: 请输入
guest_info: nick,mail,link #valine comment header info
visitor: true

注意:参数大小写对应很重要appid、appkey,网上复制过来的可能appId、appKey

在next主题下默认已经配置好了不用改文章模板,到这步应该已经成功了。但是其他模板还需要手动来添加。

文章模板代码

下面代码插入到文件最后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<% if(theme.valine.enable && theme.valine.appid && theme.valine.appkey){ %>
<script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script>
var GUEST_INFO = ['nick','mail','link'];
var guest_info = '<%= theme.valine.guest_info %>'.split(',').filter(function(item){
return GUEST_INFO.indexOf(item) > -1
});
var notify = '<%= theme.valine.notify %>' == true;
var verify = '<%= theme.valine.verify %>' == true;
new Valine({
el: '.vcomment',
notify: notify,
verify: verify,
appId: "<%= theme.valine.appid %>",
appKey: "<%= theme.valine.appkey %>",
placeholder: "<%= theme.valine.placeholder %>",
pageSize: '<%= theme.valine.pageSize %>',
avatar: '<%= theme.valine.avatar %>',
lang: '<%= theme.valine.lang %>',
visitor: 'true'
});
</script>
<% } %>

注意看这里的属性是appId、appKey,而调用的变量要和上面配置时候对应(我就是因为大小写不对应坑了好久,网上复制来的有很多细节问题要注意)

目录(/_partial/article.ejs)

下面代码插入到文件最后

1
2
3
4
<% if (!index && post.comments && theme.valine.enable && theme.valine.appid && theme.valine.appkey){ %>
<section id="comments" class="vcomment">
</section>
<% } %>

到此landscape主题评论功能OK。

appid、appkey怎么获取的,百度一堆大同小异,一般不会遇到问题。
Leancloud
Leancloud