博客更新日志

主题采用next主题,这里主题的文件夹默认为next文件夹

sidebar添加RSS订阅和邮件订阅

目录:next/layout/_macro/sidebar.swing
可以看到原来就有一段,在主站_config.yml中配置即可自动生成

1
2
3
4
5
6
7
8
9
10
11
##RSS feed
feed:
type: atom
path: atom.xml
limit: 20
hub:
content:
content_limit: 140
content_limit_delim: ' '
order_by: -date
icon: icon.png

1
2
3
4
5
6
7
8
{% if theme.rss %}
<div class="feed-link motion-element">
<a href="{{ url_for(theme.rss) }}" rel="alternate">
<i class="fa fa-rss"></i>
RSS
</a>
</div>
{% endif %}

邮件订阅添加如下代码,在主站_config.yml中添加emailsubscribe: true开关

1
2
3
4
5
{% if theme.emailsubscribe %}
<div class="feed-link motion-element">
<a href="邮件订阅地址" target="_blank" title="email">Email 订阅</a>
</div>
{% endif %}

在每个文章下面添加邮件订阅链接

在next/layout/_macro/下添加email订阅的样式,我是用的mailchimp生成的

1
2
3
4
5
6
7
8
9
<div>
<link href="//cdn-images.mailchimp.com/embedcode/horizontal-slim-10_7.css" rel="stylesheet" type="text/css">
<style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:100%;}
/* Add your own Mailchimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style>
<div id="mc_embed_signup"><form action="https://126.us3.list-manage.com/subscribe/post?u=6dc0f11f3e10812c48ba02b6c&amp;id=3c20629afe" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate><div id="mc_embed_signup_scroll"><input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required><div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_6dc0f11f3e10812c48ba02b6c_3c20629afe" tabindex="-1" value=""></div><div class="clear"><input type="submit" value="邮件订阅" name="subscribe" id="mc-embedded-subscribe" class="button"></div></div></form></div>
</div>

然后在next/layout/_macro/post.swig文章的样式中,post body之后以include的方式插入刚刚的邮件订阅样式

1
2
3
4
5
6
7
{#####################}
{### END POST BODY ###}
{#####################}
{% if not is_index %}
{% include 'email-subscribe.swig' %}
{% endif %}

not is_index的作用是不让在首页折叠状态下显示

leancloud评论后台迁移到国际版

由于leancloud也要域名备案,但是国际版则不用,对我来说迁移到国际版是一个更好的选择,遇到的问题是在填写了对应的appid和key之后出现了莫名其妙的问题,说什么origin为null。
经过对发送的http请求分析后,发现发送的请求是一个不正常的域名所导致的:api.leancloud.cn。
定位发送请求的点,我们在next主题中使用valine评论系统只有两个点(搜索源码后反找对应的文件,今天试了一下git bash居然可以用find,grep等命令,给了查找带来很大帮助):
1)目录next/layout/_thrid-party/comments/valine.swing

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{% if theme.valine.enable and theme.valine.appid and theme.valine.appkey %}
<script src="//cdn1.lncld.net/static/js/3.11.1/av-min.js"></script>
<script src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script type="text/javascript">
var GUEST = ['nick','mail','link'];
var guest = '{{ theme.valine.guest_info }}';
guest = guest.split(',').filter(item=>{
return GUEST.indexOf(item)>-1;
});
new Valine({
el: '#comments' ,
verify: {{ theme.valine.verify }},
notify: {{ theme.valine.notify }},
appId: '{{ theme.valine.appid }}',
appKey: '{{ theme.valine.appkey }}',
placeholder: '{{ theme.valine.placeholder }}',
avatar:'{{ theme.valine.avatar }}',
guest_info:guest,
pageSize:'{{ theme.valine.pageSize }}' || 10,
});
</script>
{% endif %}

我在valine论坛上看到有人迁移到国际版leancloud,分析源码后发现av-min.js版本比我高,升级到新的3.11.1后问题仍然重现,说明不是这里的问题,我还是把这里升级了。
2)第二个是在配置中心里配置

1
2
3
4
leancloud_visitors:
enable: true
app_id: xxx
app_key: xxx

grep查找后,在next/layout/_third-party/lean-analytics.swig中用到了av-core-mini-0.6.4.js这个文件,

src="/js/av-core-mini-0.6.4.js">```
1
2
从名字上来看应该是av-min.js缩略吧,试了去掉这一行,评论显示正常了,但是统计阅读数的没有了,看来是缺了一部分逻辑啊。顺手搜了下这个文件,本来想看看有没有最新版本,一看有人提出了这个问题,解决思路是自己将"/js/av-core-mini-0.6.4.js"文件中的请求api.leancloud.cn该为现在实际用的地址,实际用的地址怎么查呢,
```https://app-router.leancloud.cn/2/route?appId=<替换为 appId>

通过这个地址,获取实际的api_server,前面要加上https,替换好之后,问题解决。
修改后新文件添加到了source/js/av-core-mini-0.6.4.js下,并在主站config下添加

1
2
skip_render:
- 'js/av-core-mini-0.6.4.js'

垃圾评论拦截可以自动在判定是垃圾评论后不再展示了

垃圾评论拦截可以自动在判定是垃圾评论后不再展示了,可控!

参考文献

  1. Hexo阅读量api.leancloud.cn解析失败
  2. valine评论区
坚持原创技术分享,您的支持将鼓励我继续创作!