51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Hexo -48- 文章隐藏

Hexo 博客有时有着想要发布,但是不想过于公开的场景,本文记录隐藏 Hexo 博客的技术实现。

简介 {#简介}

之前我们介绍过 Hexo 文章加密,但有时对信息保护有不同的需求,比如需要某些信息可以访问,但又不公开让所有用户那么方便地访问,万一一不小心访问到了也没什么太大损失这种。

这种情况下基于知识的加密就比较合适了,也就是链接是有效的,但是不放在主页、Archive、Search 中,想要分享给别人直接发送链接别人就可以访问。

想要实现功能有几种方法:

  1. 修改 发布状态

  2. 存为草稿

  3. hexo-generator-indexed 插件

  4. hexo-hide-posts 插件

测试环境 {#测试环境}

为了测试文章隐藏功能,配置环境:

  1. 创建 Hexo 初始博客
  2. 创建 Foo、Bar、Test 三篇文章

后续以此为示例数据做测试。

修改发布状态 {#修改发布状态}

可以通过修改文章发布状态参数 published 来控制是否渲染该文章,如果设置为 False,则压根不会渲染,只是源文件保存在项目中。

  • 在文章 Markdown 文件 Front-Matter 部分配置 published 参数

例如我们在 Foo 文章的 Front Matter 中添加上述配置:

渲染页面后没有 Foo 这篇文章了

直接访问 Foo 所在的链接也访问不到:

存为草稿 {#存为草稿}

Hexo 自带草稿功能,草稿内容也不会发布,和 published 的区别我理解是概念上的,草稿是放在草稿箱中的文章,直接不算作 posts 的内容, publish 控制的是已经不是草稿的文章,已经属于文章范畴,功能其实是类似的。

草稿通过 Hexo 命令控制:

创建草稿:

示例:

VVDdraft.md 的内容不会在页面中展示。

以上两种方法并不完全实用,因为虽然隐藏了信息但是自己也看不到,插件可以解决一部分问题。

hexo-generator-indexed 插件 {#hexo-generator-indexed-插件}

隐藏文章 ,在文章的 Front-matter 中增加一个 hide 参数用来隐藏

还是以 Foo 为例

设置完成后,讲道理在任何地方都不应该出现 Foo 的显示信息了,但是这个效果是因主题而异的。

landscape {#landscape}

  • 首页隐藏
  • archives 没有隐藏

fluid {#fluid}

  • 首页隐藏
  • 其余页面隐藏

hexo-generator-index-custom 插件 {#hexo-generator-index-custom-插件}

改插件可以完成类似hexo-generator-indexed 的博文隐藏功能,并且同时可以支持置顶,

相当于hexo-generator-indexedhexo-generator-index-pin-top 结合。

hexo-hide-posts 插件 {#hexo-hide-posts-插件}

hexo-generator-indexed 插件隐藏时过于彻底,为了更细粒度地进行隐藏,可以使用 hexo-hide-posts 插件

Github:https://github.com/prinsss/hexo-hide-posts

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

只有知道文章链接的人才可以访问被隐藏的文章。

安装 {#安装}

使用 {#使用}

在文章的 front-matter 中添加 hidden: true 即可隐藏文章。

比如我们隐藏了 source/_posts/lorem-ipsum.md 这篇文章:

虽然首页上被隐藏了,但你仍然可以通过 https://hexo.test/lorem-ipsum/ 链接访问它。(如果想要完全隐藏一篇文章,可以直接将其设置为草稿

你可以在命令行运行 hexo hidden:list 来获取当前所有的已隐藏文章列表。

插件也在 Local Variables 中添加了 all_postshidden_posts 变量,供自定义主题使用。

配置 {#配置}

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

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

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

效果 {#效果}

改插件的效果也是不同主题不一样,在默认的 landscape 功能正常,在 fluid 则隐藏无效。

我的最佳实践 {#我的最佳实践}

我的需求是,在博客发布一些私人的博文,不想完全公开,但是别人看到了也没大事。同时有相关知识的人可以方便地查看相关文章,不知道内情的人很难察觉有这些文章。

其实 hexo-hide-posts 功能很棒,但是可惜在 fluid 主题中隐藏内容失效,但是 hexo-generator-indexed 的隐藏功能是好的,因此我同时开启二者,达到隐藏博文的同时,将其在一个小角落展示出来的效果。

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/hexo/website/48-hexo-hide/hexo-hide/

赞(0)
未经允许不得转载:工具盒子 » Hexo -48- 文章隐藏