Hexo-next 主题首页隐藏文章或者分类

前言

做这个博客已经有一段时间了.

对我而言, 与其说是博客, 倒不如说是笔记显得更贴切. 自我感觉良好的文章也会大大方方地拿出来给别人看, 毕竟我确信那一部分文章会帮助到有需要的人. 但是还有一部分文章确实是我自己的个人笔记, 记录了一些零零散散的知识点, 想着有朝一日完全消化了这些知识之后再写一些总结性的文章. 所以, 在我有能力有时间整理这些笔记之前, 我是不希望这些笔记展现在我的博客首页的. 一眼看去, 着实碍眼, 于是, 便产生了隐藏首页文章或者分类的想法. 查了一些资料, 勉强实现, 在此记录实现过程, 还望能够帮到有需要的人.

实现

环境介绍

截止撰文, 我自己的工作环境如下:

1
2
3
4
5
6
os: Linux 4.14.0-20-generic linux 64
node: 8.10.0
npm: 3.5.2
hexo: 3.7.1
hexo-cli: 1.1.0
next: 6.4.0

理论上与工作环境关系不大, 如有差异, 举一反三.

修改首页模板

找到 next 首页模板: ${hexo_path}/themes/next/layout/index.swig :

<section id="posts" class="posts-expand"></section> 之间的代码替换如下:

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
{% for post in page.posts %}
{% set hide = false %}

{% if theme.hide.hide_post %}
{% if post.hide %}
{% set hide = true %}
{% endif %}
{% endif %}

{% if theme.hide.hide_categories.enable && !hide %}
{% for cat in post.categories %}
{% if !hide %}
{% for categorie in cat %}
{% if !hide %}
{% for item in theme.hide.hide_categories.categories %}
{% if !hide && item == categorie %}
{% set hide = true %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}

{% if !hide %}
{{ post_template.render(post, true) }}
{% endif %}
{% endfor %}

替换之后, 保存退出.

修改主题配置文件

打开 next 主题配置文件 ${hexo_path}/themes/next/_config.yml , 再合适的地方加入以下代码:

1
2
3
4
5
6
7
8
# Hide single post or posts in specific categories on the home page
hide:
hide_post: true
hide_categories:
enable: true
categories:
# - categorie1
# - categorie2
  • 如果 hide_post 设置为 true , 新建文章时设置字段 hide: true 即可隐藏指定文章, 比如本文的字段设置如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    title: Hexo-next 主题首页隐藏文章或者分类
    hide: false
    categories:
    - coding
    toc: true
    tags:
    - hexo
    - next
    date: 2018-08-11 16:00:23

    本文中 hide 字段值为 false , 所以不会在首页隐藏.

  • 如果 hide_categories 下的 enable 设置为 true 并且 categories 下有配置需要隐藏的分类, 构建博客时会在首页自动隐藏对应分类的文章.

done.

参考文献

  1. Swig » Documentation
  2. Swig » 文档 » 标签