前言

由于此博客不仅仅用于发布文章,还有日志记录与学习记录的需求,并且日志也是发布为文章来记录的,这样就会导致日志的内容出现在博客首页,特别影响博客的美观性。

故此想增加文章隐藏的功能,在网络上搜索了一下,有修改主题源代码的,还有替换首页生成器插件的

但作为一名开发者,为了降低博客的维护难度,还是想使用增量更新,而不是修改原来的内容,稍微筛选了一下搜索结果。

终于!找到了hexo-hide-posts这个Hexo 插件,它能够隐藏指定的文章,并使它们仅可通过链接访问。

开始

可以直接参考README_ZH | hexo-hide-posts来进行配置,这里记录我的配置步骤。

安装

在项目目录执行以下命令安装插件:

1
npm install hexo-hide-posts

安装完成后在项目根目录的_config.yml中添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 文章隐藏:https://github.com/prinsss/hexo-hide-posts
hide_posts:
enable: true # 是否启用 hexo-hide-posts
filter: hidden # 隐藏文章的 front-matter 标识,也可以改成其他你喜欢的名字
noindex: true # 为隐藏的文章添加 noindex meta 标签,阻止搜索引擎收录
# 设置白名单,白名单中的 generator 可以访问隐藏文章
# 常见的 generators 有:index, tag, category, archive, sitemap, feed, etc.
# allowlist_generators: []
allowlist_generators: ['*']

# 设置黑名单,黑名单中的 generator 不可以访问隐藏文章
# 如果同时设置了黑名单和白名单,白名单的优先级更高
# blocklist_generators: ['*']
blocklist_generators: ['index', 'feed']

使用

基本使用

如果在_config.yml中的配置为filter: hidden,则在文章的 front-matter 中添加 hidden: true 即可隐藏文章,如:

1
2
3
4
5
---
title: '被隐藏的文章'
date: '2024-07-20 00:21:14'
hidden: true
---

高级使用

插件提供了黑白名单控制,只需要在_config.yml中配置allowlist_generatorsblocklist_generators参数即可,案例如下:

示例1:让所有隐藏文章在存档页面和分类页面中可见,其他地方不可见

1
2
3
hide_posts:
enable: true
allowlist_generators: ['archive', 'category']

示例2:仅在首页和 RSS 隐藏部分文章,其他地方可见

1
2
3
4
hide_posts:
enable: true
allowlist_generators: ['*']
blocklist_generators: ['index', 'feed']

更多黑白名单的高级配置示例,可以在 isGeneratorAllowed.test.js 文件中查看。

参考文章

README_ZH | hexo-hide-posts