博客目前用的是Hexo,没有后端,为静态博客,评论一般用的第三方系统,如常用的 Disqus。但众所周知的原因,在“火星”上无法正常访问Disqus。

隆重推荐一个通过api实现评论的项目:DisqusJS

这里说一下它的配置技巧。

添加DisqusJS 到 hexo主题

这里以很多人用的 Next 主题为例,其它类似。

修改_config.yml 中的disqus配置为:

1
2
3
4
5
6
7
8
# for DisqusJS, https://github.com/SukkaW/DisqusJS
disqus:
enable: true
shortname: #你的shortname
api: #https://disqus.com/api/
apikey: #你申请的public api key
admin: #你的名字
adminLabel: #你的特别标识

具体含义见DisqusJS

修改 layout/_partials/head/custom-head.swig

1
2
3
{% if theme.disqus.enable %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/disqusjs@0.2.5/dist/disqusjs.css">
{% endif %}

修改 layout/_third-party/comments/disqus.swig :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{% if not (theme.duoshuo and theme.duoshuo.shortname) and not theme.duoshuo_shortname %}
{% if theme.disqus.enable %}

{% if theme.disqus.count %}
<script id="dsq-count-scr" src="https://{{theme.disqus.shortname}}.disqus.com/count.js" async></script>
{% endif %}

{% if page.comments %}
<script type="text/javascript">
var disqusjs = {
config : {
shortname: '{{ theme.disqus.shortname }}',
identifier: '{{ page.path }}',
url: '{{ page.permalink }}',
title: '{{ page.title }}',
api: '{{ theme.disqus.api }}',
apikey: '{{ theme.disqus.apikey }}',
admin: '{{ theme.disqus.admin }}',
adminLabel: '{{ theme.disqus.adminLabel }}'
}
};
</script>
<script src="https://cdn.jsdelivr.net/npm/disqusjs@0.2.5/dist/disqus.js"></script>
{% endif %}

{% endif %}
{% endif %}

反代Disqus API

这里以 nginx 为例,在你的站点配置中添加一行:

1
2
3
location /disqus/ {
proxy_pass https://disqus.com/;
}

注意检查不要与其它配置冲突

完成后,reload nginx

1
$ service nginx reload

打开 https://DOMAIN/disqus/api/3.0/threads/list.json (DOMAIN是你nginx 配的域名)验证一下,是否配置成功:返回如下内容即可。

1
{"code":5,"response":"Invalid API key"}

那么你的api即可配置为 https://DOMAIN/disqus/api

1
2
disqus:
api: https://DOMAIN/disqus/api

修改完后记得在预览无误后再重新发布你的博客~

1
$ hexo generate --deploy

好了,现在你的博客应该可以正常显示评论了,不过发评论什么的还不支持哦,快去提pr

Have fun!