如果你希望在 Hexo 博客中隐藏某一篇特定的文章,可以试试hexo-hide-posts 插件。这款插件可以帮你直接在 front-matter 中标记文章为隐藏。被隐藏的文章不会出现在首页、归档、分类、标签、Feed、站点地图等任何公开列表中,并且会自动添加 noindex 元标签以防被搜索引擎收录,但知道直接链接的人仍可访问。
安装与配置
npm install hexo-hide-posts --save
在站点文件 _config.yml 中根据需要进行额外配置,例如更改默认的过滤标识符或控制文章在特定生成器中的行为。
# hexo-hide-posts
hide_posts:
# 是否启用 hexo-hide-posts
enable: true
# 隐藏文章的 front-matter 标识,也可以改成其他你喜欢的名字,例如 'secret'
filter: hidden
# 为隐藏的文章添加 noindex meta 标签,阻止搜索引擎收录
noindex: true
# 设置白名单,白名单中的 generator 可以访问隐藏文章
# 常见的 generators 有:index, tag, category, archive, sitemap, feed, etc.
# allowlist_generators: []
# 设置黑名单,黑名单中的 generator 不可以访问隐藏文章
# 如果同时设置了黑名单和白名单,白名单的优先级更高
# blocklist_generators: ['*']
filter:默认使用hidden: true来隐藏文章。如果你修改了filter(例如改为secret),后续就需要使用secret: true来隐藏文章。
使用
在想要隐藏文章的 front-matter 中添加 hidden: true 即可隐藏文章。(如果使用了自定义 filter,则对应修改)。
比如我们隐藏了 source/_posts/test-hide.md 这篇文章:
---
title: test-hide
date: '2024-02-05 09:44:02'
hidden: true # 添加此行以隐藏文章
---
虽然首页上被隐藏了,但你仍然可以通过 https://xxx/test-hide/ 链接访问它。
你可以在命令行运行 hexo hidden:list 来查看所有已隐藏的文章列表。
验证:清理并重新启动本地服务器,在浏览器中检查首页、归档页等,确认文章已隐藏。然后通过直接访问文章链接,确认其仍可被打开。
插件也在 Local Variables 中添加了 all_posts 和 hidden_posts 变量,供自定义主题使用。
注意
- 关注插件的更新和兼容性。
- 更多高级配置,如黑白名单控制,自定义 ACL 函数,详见[官方文档](hexo-hide-posts/README_ZH.md at master · prinsss/hexo-hide-posts)
- 如果想要完全隐藏一篇文章,可以将其设置为草稿(Draft)。将文章移动到
source/_drafts目录下,它们就不会被发布。但严格来说,这并非“隐藏”,而是“未发布”,其他人无法通过任何方式访问。
总结
对于大多数用户,首推使用 hexo-hide-posts 插件来隐藏博客中的文章:
- 安装插件:在博客根目录运行
npm install hexo-hide-posts --save。 - 标记文章:在需要隐藏的文章的 front-matter 里加上
hidden: true。 - 生成部署:照常运行
hexo clean && hexo g -d。