Hexo NexT 新增阅读排行页面

[TOC]

本文基于 leancloud 的数据实现了一个阅读排行页面

新建页面

hexo n page top 新建页面,会生成 top 目录,编辑其中自动生成的 index.md 文件,将其中的代码替换如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div id="top"></div>
<script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.4.js"></script>
<script>AV.initialize("leancloud_appid", "leancloud_appkey");</script>
<script type="text/javascript">
var time=0
var title=""
var url=""
var query = new AV.Query('Counter');
query.notEqualTo('id',0);
query.descending('time');
query.limit(1000);
query.find().then(function (todo) {
for (var i=0;i<1000;i++){
var result=todo[i].attributes;
time=result.time;
title=result.title;
url=result.url;
var content="<p>"+"<font color='#1C1C1C'>"+"【文章热度:"+time+"℃】"+"</font>"+"<a href='"+"https://tding.top"+url+"'>"+title+"</a>"+"</p>";
document.getElementById("top").innerHTML+=content
}
}, function (error) {
console.log("error");
});
</script>

并将其中的 leancloud_appidleancloud_appkey页面链接替换为你的。

由于一些因素,我后面迁移到了 Leancloud 国际版,然后阅读排行榜就无法正常显示了,报出如下错误:

1
Failed to load resource: the server responded with a status of 403 () us.leancloud.cn/1.1/classes/Counter?redirectByAPI=cn:1

最后发现,美国节点需要调用 AV.useAVCloudUS(),因此以上代码需要修改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div id="top"></div>
<script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.4.js"></script>
<script>AV.initialize("leancloud_appid", "leancloud_appkey");AV.useAVCloudUS();</script>
<script type="text/javascript">
var time=0
var title=""
var url=""
var query = new AV.Query('Counter');
query.notEqualTo('id',0);
query.descending('time');
query.limit(1000);
query.find().then(function (todo) {
for (var i=0;i<1000;i++){
var result=todo[i].attributes;
time=result.time;
title=result.title;
url=result.url;
var content="<p>"+"<font color='#FAF0BB'>"+"【文章热度:"+time+"℃】"+"</font>"+"<a href='"+"https://weilining.github.io"+url+"'>"+title+"</a>"+"</p>";
document.getElementById("top").innerHTML+=content
}
}, function (error) {
console.log("error");
});
</script>

配置菜单显示

编辑主题配置文件 themes\next_config.yml,添加 top:

1
2
menu:
top: /top/ || fa fa-signal

新增菜单栏的显示名称 blog/source/_data/languages.yml,同样新增 top 对应的中文:

1
2
3
zh-CN:
menu:
top: 阅读排行

参考

Hexo-NexT 新增阅读排行页面