背景

在搭好博客之后,想把每天的日记,主要是短小的随想写到博客里。但是,我又不想让这些日记出现在首页,毕竟首页要放一些更加有价值的东西。于是,我就想把日记在首页隐藏起来,并且可以在另一个菜单内打开。我在知乎及github里搜索到了为数不多的方法,自己理解并整合了一下,暂且写在这里。

准备

  • 已经初步配置好的Hexo框架
  • Next主题

个人理解及思路

Next主题在处理博客时,会调用\themes\next\layout\index.swig作为其首页的框架。在未进行配置时,此文件内会有以下语句:

1
2
3
4
5
<section id="posts" class="posts-expand">
{% for post in page.posts %}
{{ post_template.render(post, true) }}
{% endfor %}
</section>

其中for循环的意思是,把_posts下的所有文件都在首页进行展示。那么,如果不想让某些博客在首页被展示,只要加一个判断语句,把含有某关键字(比如说,标签)的博客屏蔽就可以了。而且这样做,博客仍然能在Archives/Tags等里面找到。

具体操作

我这里选择的关键字是标签Tags,把Tags为DIARY的博客过滤掉。

修改以上代码如下:

1
2
3
4
5
6
7
8
9
<section id="posts" class="posts-expand">
{% for post in page.posts %}
{% for tag in post.tags %}
{% if tag.name !== 'DIARY' %}
{{ post_template.render(post, true) }}
{% endif %}
{% endfor %}
{% endfor %}
</section>

注意,这里要再嵌套一个for循环用于检索tag。个人理解是,Tags是一个集合,包含了多个元素,故不能直接if post.tags !== 'DIARY'

然后,把你的日记的Tags改成DIARY,就不会在首页显示了。

把所有日记整合到一个菜单中

这里有知乎大神的现成的教程,点击传送门

弊端

如果某博客有多个标签,那么可能会导致其在首页多次显示。(本人未测试)