开启NexT主题多说主动评论邮件通知

经过一段时间的折腾多说,博主发现原来多说是不支持主动评论提醒的。也就是说如果在一篇博客中有人主动评论留言的话,多说是不会邮件通知的。除非他回复了你,那么多说才会邮件通知。(怪不得博主觉得一会儿有邮件提醒一会儿没有咋个这么奇怪。。)


去多说的官方一番折腾,找到了官方文档,有说到使用data-author-key可以设置主动邮件提醒,以下给出多说官网说明的传送门:

通过上面的链接查看多说的API说明,不难看要想实现评论主动邮件通知,只需要:

  • 自定义同步一个用户到多说的服务器。
  • 将这个同步的用户在站点中的身份设置为作者。
  • 取得自定义用户在站点中的ID。
  • 将这个ID作为data-author-key的值加在站点的多说评论框中即可。

实现上述操作之后,当其他用户评论带有data-author-key标示的文章时,多说服务器会默认为在向我们自定义的作者用户评论,便会向我们自定义用户的邮箱发送邮件提醒啦~


分析了原理之后,我们具体应该怎么做呢?

很简单,只需要向多说提供的同步用户接口发个POST就行了。语言不限,不过既然我们用的是Hexo,那就以NodeJS为例吧:

  • 随便在哪个地方新建一个文件夹(就是这么随意~)
  • 进入该文件夹,执行以下命令:
1
npm install --save-dev request
  • 新建一个adduser.js文件,将下面的代码粘贴进去,并修改data中的数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var http = require('request');

var data = {
'short_name' : '', // 你的short_name,后台管理那里可以看到
'secret' : '', // 密钥,后台管理那里可以看到
'users[0][user_key]' : '1', // 用户在站点的ID,就是后面需要设置的 data-author-key值,可以随意设置,这里默认为1吧
'users[0][name]' : '', // 显示的名字
'users[0][email]' : '', // 提醒的邮箱
'users[0][role]' : 'author'// 用户的类型,设置为作者
};

http.post({url:'http://api.duoshuo.com/users/import.json', form: data}, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log('Post data to Duoshuo success');
}
else{
console.log('Post data to Duoshuo fail');
}
});

将上面的代码中data中的数据按照自己的多说账户设置好之后,执行以下命令完成数据同步到多说服务器:

1
node adduser.js

  • 如果输出为Post data to Duoshuo fail,那么检察一下data数据是否修改正确,或者直接给我留言排查问题。
  • 如果输出为Post data to Duoshuo success,那么就可以登录到多说的后台,在用户那里看到新添加的用户了,类似这样:

如果角色不是作者的话,手动更改为作者。然后我们找到NexT主题的layout/_layout.swig文件,打开并找到这段代码:

1
2
3
4
5
6
{% if page.comments %}
<div class="comments" id="comments">
{% if (config.duoshuo and config.duoshuo.shortname) or config.duoshuo_shortname %}
<div class="ds-thread" data-thread-key="{{ page.path }}"
data-title="{{ page.title }}" data-url="{{ page.permalink }}">
</div>

将其修改为:

1
2
3
4
5
6
{% if page.comments %}
<div class="comments" id="comments">
{% if (config.duoshuo and config.duoshuo.shortname) or config.duoshuo_shortname %}
<div class="ds-thread" data-thread-key="{{ page.path }}"
data-title="{{ page.title }}" data-url="{{ page.permalink }}" data-author-key="{{ theme.duoshuo_info.data_author_key }}">
</div>

然后在主题的配置文件_config.yml文件中增加以下一行配置:

1
2
duoshuo_info:
data_author_key: 1 #此处填写上面js脚本中的data变量中的users[0][user_key]的值,因为上面为1,这里我就填写为1了。

当然你可以也可直接写死为1,像这个样子:

1
2
3
4
5
6
{% if page.comments %}
<div class="comments" id="comments">
{% if (config.duoshuo and config.duoshuo.shortname) or config.duoshuo_shortname %}
<div class="ds-thread" data-thread-key="{{ page.path }}"
data-title="{{ page.title }}" data-url="{{ page.permalink }}" data-author-key="1">
</div>

然后重新博客文件并发布,这样在就可以当其他人评论你的博客的时候主动发邮件通知啦~像这个样子的:

像这样子,就让我们的NexT支持多说主动评论邮件通知啦,感谢@arao的友情出镜~

PS:这种邮件提醒不是实时提醒,而是每天一封汇总邮件。如果你中途查看了这个评论的话,也是不会邮件提醒的~

0%