Hexo NexT LeanCloud
Hexo NexT主题 使用LeanCloud统计文章阅读次数、添加热度排行页面
使用LeanCloud记录hexo文章的阅读量,next主题对LeanCloud进行了适配,只需简单的配置。
本文综合参考了多篇文章以及自己的部署经历。并且修复了安全漏洞。
1. 注册 LeanCloud
详细注册步骤略
1.1 LeanCloud配置
进入之后点击存储,创建Class,名称必须为Counter
。
ACL权限选择无限制
,点击创建Class
按钮。
记录相关App ID
和App Key
1.2配置域名绑定
前提:个人已备案
域名
进入LeanCloud设置
->域名绑定
->API 访问域名
->绑定新域名
输入域名后配置CNAME解析
系统会自动检测备案、解析、以及配置SSL证书
2.配置
2.1 主题配置
若同时安装了Valine评论系统会产生冲突,请参考:Hexo Next阅读次数不正常、显示多个阅读次数
修改主题配置
文件,修改以下字段,每一项都需要修改
1 | # Show number of visitors to each article. |
2.2 站点配置
打开站点配置
文件,新增以下内容
2.2.1 配置安全访问
1 | leancloud_counter_security: |
前两项的 id 与 key 为网站提供。后两项username和 password 自己定义。
2.2.2 配置deploy
1 | deploy: |
注意:存在多项 deploy,需要在 type 前加上-
例如:
1 | deploy: |
3.安装
打开命令终端,切换到博客根目录。安装hexo-leancloud-counter-security
插件
1 | npm install hexo-leancloud-counter-security --save |
等待安装结束之后,注册一个用户
1 | hexo lc-counter r username password |
这里的用户名和密码与2.2.1
中配置的一致
注:若出现异常,提示
1 | Error: Cannot find module 'babel-runtime/regenerator' |
可以运行
1 | npm i babel-runtime --save |
4.部署云引擎以保证访客数量不被随意篡改
依次点击左侧云引擎
-> 部署
-> 在线编辑
:
点击创建函数
在弹出窗口选择Hook
类型,在选择 Hook
处选择beforeUpdate
,在选择 Class
处选择Counter
类。粘贴下方代码后,点保存。
1 | var query = new AV.Query("Counter"); |
然后单击创建按钮
右侧的部署
-> 生产环境
-> 部署
待显示部署完成:1 个实例部署成功
即可
5.添加热度排行页面
5.1 新建页面
在博客目录下执行hexo n page hot
新建一个hot页面,编辑其中的index.md
文件,将其中的代码替换如下
1 | --- |
将其中的YOUR_APPID
和YOUR_APPKEY
替换为 learncloud 的 id 和 key
将YOUR_URL
替换为你的博客地址,包含协议
并以/
结束,例如:https://blog.qust.cc/
5.2 配置主题侧边栏
打开主题配置
文件,搜索menu,添加
1 | hot: /hot/ || fa fa-thermometer-half |
图标预览:
或 hot: /hot/ || fa fa-signal
图标预览:
5.3 配置侧边栏中文
打开hexo/theme/next/languages/zh-Hans.yml,搜索menu,添加hot: 热度排行
即可汉化
6.异常
1 | TypeError: serverURL option is required for apps from CN region |
没有设置server_url项,或者账户不是来自https://leancloud.cn