博客添加Waline评论功能

参考: Waline 评论系统的介绍与基础配置 | 荷戟独彷徨

前端: 配置 LeanCloud

使用 LeanCloud 国际版 创建应用, 进入控制台的「设置」→「应用 Keys」界面, 记录AppID、AppKey、MasterKey 三个值。

后端: 配置 Vercel

  1. 首先是注册 Vercel 账户,用 GitHub 账户注册即可。然后使用开发者提供的快速部署链接,直接将开发者的 Waline 仓库 Clone 到 Vercel 新创建的项目中。

  2. 在环境变量(Environment Variables)中配置 LEAN_IDLEAN_KEYLEAN_MASTER_KEY 三个环境变量。它们的值分别对应在 LeanCloud 中获得的 AppID、AppKey 和 MasterKey。

  3. 点击「Deploy」就会进行部署。稍等片刻,会看到满屏的烟花庆祝你部署成功。点击「Visit」会跳转到部署好的地址上,该地址即为之后需要填入的 serverURL 地址

自定义域名

在DNS管理页面, 添加:

  1. 指向cname.vercel-dns.com的CNAME
  2. 指向76.76.21.21的A Recoder

将评论插入主题:

详见插入 MemE 主题

开启邮件提醒功能

邮件提醒功能,即当某人在文章下方进行评论的时候,博主能够收到提醒邮件;某人的评论得到新回复的时候,这个人也能收到提醒邮件。这虽然不是一个必要的功能,但能节省两个人之间沟通的间隔时间,不必天天守在后台去看是否有人评论了某篇文章。

添加Vercel环境变量

在 Vercel 的项目中添加以下新的环境变量:

  • AUTHOR_EMAIL:博主邮箱,用来区分发布的评论是否是博主本身发布的。如果是博主发布的则不进行提醒通知。
  • SMTP_SERVICE:SMTP 邮件发送服务提供商,可以在这个页面查看所有支持的运营商。如果没在列表中的可以自行配置 SMTP_HOSTSMTP_PORT
  • SMTP_HOST:SMTP 服务器地址,如果未配置 SMTP_SERVICE 的话该项必填。
  • SMTP_PORT:SMTP 服务器端口,如果未配置 SMTP_SERVICE 的话该项必填。
  • SMTP_USER:SMTP 邮件发送服务的用户名,一般为登录邮箱。
  • SMTP_PASS:SMTP 邮件发送服务的密码,一般为邮箱登录密码,部分邮箱(例如 163 邮箱)是单独的 SMTP 密码。
  • SITE_NAME:网站名称,用于在消息中显示。
  • SITE_URL:网站地址,用于在消息中显示。
  • SENDER_NAME:自定义发送邮件的发件人,选填。
  • SENDER_EMAIL:自定义发送邮件的发件地址,选填。
  • MAIL_SUBJECT:评论回复邮件标题自定义。
  • MAIL_TEMPLATE:评论回复邮件内容自定义。
  • MAIL_SUBJECT_ADMIN:新评论通知邮件标题自定义。
  • MAIL_TEMPLATE_ADMIN:新评论通知邮件内容自定义。

自定义回复邮件标题和内容

MAIL_SUBJECTMAIL_TEMPLATEMAIL_SUBJECT_ADMINMAIL_TEMPLATE_ADMIN 四个环境变量是用来自定义回复邮件标题和内容的。不过一般而言,邮件回复的时候,标题和内容都不是固定的。比如说 A 回复了某条评论,系统发送邮件通知评论作者 B 的时候,标题最好含有 B 的名字。内容也应该含有 A 对 B 的什么评论作出了什么评论。这些内容会随着评论作者和评论内容的不同进行改变,所以不能直接简单的设置成固定的内容,需要设定一个回复模板。

模板可以通过 selfparentsite 对象传递参数. 在Vercel自动创建的仓库中,

有一个index.js文件, 最初的内容为:

1
2
3
4
5
6
7
const Application = require('@waline/vercel');

module.exports = Application({
  async postSave(comment) {
    //do what ever you want after save comment
  }
});

{}中添加相关配置即可。下面是完整的代码:

 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
28
29
30
31
32
33
34
35
36
37
38
39
40
const Application = require('@waline/vercel');

module.exports = Application({
  mailSubject: '{{parent.nick}},您在博客「{{site.name}}」上的评论收到了回复',
  mailTemplate: `
    <div style="border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;margin:50px auto;font-size:12px;">
      <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;">        
        您在博客<a style="text-decoration:none;color: #12ADDB;" href="{{site.url}}" target="_blank">{{site.name}}</a>上的评论有了新的回复
      </h2>
      <div style="padding:0 12px 0 12px;margin-top:18px">
		<p>{{parent.nick}},您曾发表评论:</p>
        <div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;">{{parent.comment | safe}}</div>
        <p><strong>{{self.nick}}</strong> 回复说:</p>
        <div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;">{{self.comment | safe}}</div>
        <p>您可以点击<a style="text-decoration:none; color:#12addb" href="{{site.postUrl}}" target="_blank">前往原文查看完整的回复內容</a>,欢迎再次光临<a style="text-decoration:none; color:#12addb" href="{{site.url}}" target="_blank">{{site.name}}</a>。</p>
        <br/>
      </div>
	  <div style="border-top:1px solid #DDD; padding:13px 0 0 8px;">
		该邮件为系统自动发送的邮件,请勿直接回复。
	  </div>
	  <br/>
    </div>`,
  mailSubjectAdmin: '您的博客「{{site.name}}」收到了新评论',
  mailTemplateAdmin: `
    <div style="border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;margin:50px auto;font-size:12px;">
      <h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;">        
        有人在<a style="text-decoration:none;color: #12ADDB;" href="{{site.url}}" target="_blank">{{site.name}}</a>发表了新的评论
      </h2>
      <div style="padding:0 12px 0 12px;margin-top:18px">
		<p><strong>{{self.nick}}</strong> 评论说:</p>
		<div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;">{{self.comment | safe}}</div>
        <p>您可以点击<a style="text-decoration:none; color:#12addb" href="{{site.postUrl}}" target="_blank">前往原文查看完整的评论内容。</a></p>
        <br/>
      </div>
	  <div style="border-top:1px solid #DDD; padding:13px 0 0 8px;">
		该邮件为系统自动发送的邮件,请勿直接回复。
	  </div>
	  <br/>
    </div>`
});
updatedupdated2023-06-052023-06-05
Update https-ca.md