前面用heo方案隐藏文章试了下,如洪哥所言会首页隐藏了,但任然会计数,首页隐藏位置会一片空白。这样的话比较影响页面内容的展示和美观,所以最后还是换插件了。

我的需求并不高,只要首页不显示隐藏的文章,并且不影响布局就可以。我用的插件是 hexo-hide-posts,可以在博客中隐藏指定文章,并只能通过文章的链接来访问,也可以让所有隐藏的文章在特定页面可见。

当一篇文章设置为隐藏时,不会出现在任何列表中(包括首页、存档、分类页面、标签页面、Feed、站点地图等),也不会被搜索引擎索引(前提是搜索引擎遵守 noindex 标签)。

安装

1
$ npm install hexo-hide-posts --save

使用

在文章的 front-matter 中添加 hidden: true 即可隐藏文章。比如隐藏了source/_posts/lorem-ipsum.md 这篇文章:

1
2
3
4
5
6
---
title: 'Lorem Ipsum'
date: '2019/8/10 11:45:14'
hidden: true
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit.

完成设置后即可发现首页和其他分类上文章都被隐藏了,但可以通过https://hexo.test/lorem-ipsum/ 链接访问它。(如果想要完全隐藏一篇文章,可以直接将其设置为草稿

可以在命令行运行 hexo hidden:list 来获取当前所有的已隐藏文章列表。插件也在 Local Variables 中添加了 all_postshidden_posts 变量,供自定义主题使用。

配置

在站点 _config.yml 中添加如下配置:

1
2
3
4
5
6
7
8
9
10
# hexo-hide-posts
hide_posts:
enable: true
# 可以改成其他你喜欢的名字
filter: hidden
# 指定你想要传递隐藏文章的 generator,比如让所有隐藏文章在存档页面可见
# 常见的 generators 有:index, tag, category, archive, sitemap, feed, etc.
public_generators: []
# 为隐藏的文章添加 noindex meta 标签,阻止搜索引擎收录
noindex: true

比如:设置 filter: secret 之后,你就可以在 front-matter 中使用 secret: true 来隐藏文章了。

注意:不是所有插件注册的 generator 名称都与其插件名称相同。比如 hexo-generator-searchdb 插件,其注册的 generator 名称就是 xmljson,而非 searchdb。因此,在填写 public_generators 参数时要注意使用插件实际注册的 generator 名称(可以查阅对应插件的源码来获取准确的注册名)。