站点根目录:就是你创建的blog文件夹目录,我的是daiyongtao.github.io。
主题目录:/theme/next。
注册Leancloud并创建应用
- 首先,前往Leancloud官网leancloud.cn进行注册,并登陆。
- 然后点击图示
1
处,进入控制台: - 接着,点击图示
1
处,创建应用: - 在弹出窗口
1
处输入应用名称(可随意输入,可更改,为演示方便取名为test),并选择2
处“开发版”,然后点击3
处创建:
到这里应用创建完成。
建立Counter类并在NexT中启用插件
粘贴
App ID
和App Key
到NexT主题配置文件_config.yml
对应位置。此时配置文件应如下:1
2
3
4leancloud_visitors:
enable: true
app_id: <<your app id>>
app_key: <<your app key>>设置Web安全域名确保域名调用安全。点击
1
处进入安全中心,然后在2
处填写自己博客对应的域名(注意协议、域名和端口号需严格一致):
到这里内容均与Doublemine的为NexT主题添加文章阅读量统计功能这篇文章相同,只不过截图为新版的Leancloud的界面。
部署云引擎以保证访客数量不被随意篡改
在弹出窗口选择
1
处Hook
类型,然后2
处选择beforeUpdate
,3
处选择刚才建立的Counter
类。在4
中粘贴下方代码后,点5
处保存。1
2
3
4
5
6
7
8var query = new AV.Query("Counter");
if (request.object.updatedKeys.indexOf('time') !== -1) {
return query.get(request.object.id).then(function (obj) {
if (obj.get("time") + 1 !== request.object.get("time")) {
throw new AV.Cloud.Error('Invalid update!');
}
})
}
至此云引擎已成功部署,任何非法的访客数量更改请求都将失败。
进一步设置权限(可选,建议设置)
打开NexT主题配置文件
_config.yml
,将leancloud_visitors下的security设置为true(如没有则新增):1
2
3
4
5
6
7leancloud_visitors:
enable: true
app_id: <<your app id>>
app_key: <<your app key>>
# Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security
security: true
betterPerformance: false对betterPerformance选项的说明:
由于Leancloud免费版的云引擎存在请求线程数和运行时间限制以及休眠机制,很多时候访客数量加载会很慢。如果设置betterPerformance
为true
,则网页则会在提交请求之前直接显示访客人数为查询到的人数+1,以增加用户体验。打开博客配置文件
_config.yml
,新增以下配置:1
2
3
4
5
6leancloud_counter_security:
enable_sync: true
app_id: <<your app id>>
app_key: <<your app key>
username:
password:打开cmd并切换至博客根目录,键入以下命令以安装
hexo-leancloud-counter-security
插件:1
npm install hexo-leancloud-counter-security --save
在相同目录键入以下命令:
1
hexo lc-counter register <<username>> <<password>>
或
1
hexo lc-counter r <<username>> <<password>>
将
<<username>>
和<<password>>
替换为你自己的用户名和密码(不必与leancloud的账号)相同。此用户名和密码将在hexo部署时使用。打开博客配置文件
_config.yml
,将<<username>>
和<<password>>
替换为你刚刚设置的用户名和密码:1
2
3
4
5
6leancloud_counter_security:
enable_sync: true
app_id: <<your app id>>
app_key: <<your app key>
username: <<your username>> #如留空则将在部署时询问
password: <<your password>> #建议留空以保证安全性,如留空则将在部署时询问在博客配置文件
_config.yml
的deploy
下添加项:1
2
3deploy:
# other deployer
- type: leancloud_counter_security_sync返回Leancloud控制台的应用内。依次点击
1
2
,检查_User表中是否出现一条记录(图示以用户名为admin为例):
至此权限已设置完成,数据库记录只能在本地增删。
每次运行hexo d
部署的时候,插件都会扫描本地source/_posts
下的文章并与数据库对比,然后在数据库创建没有录入数据库的文章记录。
如果在博客配置文件中留空username或password,则在部署过程中程序会要求输入。
后记
遇到的坑点⚠️,在博客配置文件_config.yml
的deploy
下添加项:
1 | deploy: |
如果在配置- type: leancloud_counter_security_sync后hexo运行出现文件解析错误,了解一下YAML基础语法就行了。
错误样式:
1 | deploy: |
正确样式:
1 | deploy: |
⚠:在用hexo编写markdown时,会发现##根本没法使用,然后各种搜索发现了一个可行的办法,在#后面加上一个空格就行了😓
⚠️:本文内容部分非原创,因特别详细且正确,所以就直接摘录了。