本人是web前端小白。以下给出配置hexo yalia主题的文章阅读量的步骤
1. ejs相关了解
因为参考的文章配置之后,阅读量显示有bug,所以,稍微看了下ejs相关的东西,之后,修复了bug。(为自己点赞!)
参考ejs的简要介绍,可以知道一下几点内容:
- 1.ejs是一个JavaScript模板库,用来从Json数据库中生存html字符串
- 2.在html中引入ejs,以使javascript能够使用它
简单来说,就是可以和html混着用,可以调用js代码生成html,或者是调用js代码调用函数,将结果生成到html中 - 3.简单的ejs语法
<% code %> 执行其中的javascript代码
<%= code %> 会对code的内容进行转义
<%- code %> 不会对code内容进行转义
稍微知道点ejs语法,就可以读懂代码了。
2. 存储库申请和配置(leancloud)
leancloud是一个云数据库,用来存储文章阅读量的查询。
根据这篇博客申请配置leancloud。
注意,创建应用时候,应用名称可以自己随意起,但是创建存储Class的时候,名字也要叫Counter,后面配置hexo的时候会用到,如果名字不叫Counter记得去修改。
看完创建API类就可以了,后面的内容在下面会给出配置成功的方法。
3. 配置Hexo
1.在yilia主题下修改_config.yml,最后添加是否使用leancloud进行阅读量统计的相关配置:
填上你在leancound创建的应用的 appid和appkey1
2
3
4
5
6
7
8
9
10# 添加浏览量
leancloud_visitors:
enable: true
app_id: ************** # 填上你在leancound创建的应用的 appid和appkey
app_key: ************
#添加一下js插件的 CDN地址
js_cdn:
jquery: https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js
av : //cdn1.lncld.net/static/js/2.5.0/av-min.js
2.在主题下的layout_parial\post文件夹里面,新建leancloud.ejs文件,内容如下:
1 | <script src="<%- theme.js_cdn.av %>"></script> |
根据我们刚才稍微了解到的ejs知识,可以阅读代码。这里就是调用显示阅读数量和阅读数量+1的地方
注意1:代码中isIndex为ture的时候,是在主页中显示的列表。这里只需要显示阅读数量,不需要阅读数量+1
注意2:AV.Object.extend(“Counter”); 的意思是,在leanclound查询ClassName叫做 Counter 的查询,如果之前创建存储Class的时候,不叫Counter,这里要换成你的命名
3.在主题下的layout_parial\post 找到 title.ejs 文件,添加显示阅读量的html代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23<% if (post.link){ %>
<h1 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.link) %>" target="_blank" itemprop="url"><%= post.title %></a>
</h1>
<% } else if (post.title){ %>
<% if (index){ %>
<h1 itemprop="name">
<a class="<%= class_name %>" href="<%- url_for(post.path) %>"><%= post.title %></a>
</h1>
<% } else { %>
<h1 class="<%= class_name %>" itemprop="name">
<%= post.title %>
</h1>
<% } %>
<% } %>
<!-- 上面是 yilia 主题的标题 下面是添加阅读量代码 -->
<!-- span 给的 id 是文章的 url 作为唯一的 key 值 -->
<% if (theme.leancloud_visitors.enable){ %>
<a href="javascript:;" class="archive-article-date">
<i class="icon-smile icon"></i> 阅读数:<span id="<%- url_for(post.path) %>" class="pageViews">0</span>次
</a>
<% } %>
<!-- 自己添加结束 -->
4.添加js代码, 在layout_parial找到after.footer.ejs,在后面再添加一段script代码: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<script>
var yiliaConfig = {
mathjax: <%=theme.mathjax%>,
isHome: <%=is_home()%>,
isPost: <%=is_post()%>,
isArchive: <%=is_archive()%>,
isTag: <%=is_tag()%>,
isCategory: <%=is_category()%>,
open_in_new: <%=theme.open_in_new%>,
toc_hide_index: <%=theme.toc_hide_index%>,
root: "<%=config.root%>",
innerArchive: <%=theme.smart_menu.innerArchive ? true : false%>,
showTags: <%=(theme.slider && theme.slider.showTags) ? true : false%>
}
</script>
<!--上面是 yilia 主题配置自带 下面是自己添加的 -->
<script src="<%- theme.js_cdn.jquery %>"></script>
<% if (theme.leancloud_visitors.enable){ %>
<%- partial('post/leancloud') %>
<% } %>
<!--自己添加结束 -->
<%- partial('script') %>
<% if (theme.mathjax){ %>
<%- partial('mathjax') %>
<% } %>
这里添加的内容是说,如果leancloud_visitors.enable是ture,就调用post文件加下的leancloud.ejs。
怎么样,稍微懂了一点ejs知识,一下子就明了了吧?
以上。