前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hexo -48- 文章隐藏

Hexo -48- 文章隐藏

作者头像
为为为什么
发布2023-06-18 16:00:31
2670
发布2023-06-18 16:00:31
举报
文章被收录于专栏:又见苍岚又见苍岚

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 参数

12

# 设置 published 为 false,则不会在网页中渲染published: false

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

123456

---title: Foodate: 2023-06-15 12:04:20published: falsetags:---

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

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

存为草稿

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

草稿通过 Hexo 命令控制:

创建草稿:

1

hexo new draft <title>

示例: 1 2 3$ hexo new draft VVDdraft INFO Validating config INFO Created: E:\test_hexo\TestHexo\source\_drafts\VVDdraft.md

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

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

hexo-generator-indexed 插件

12

$ npm uninstall hexo-generator-index$ npm install hexo-generator-indexed

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

还是以 Foo 为例 1 2 3 4 5 6--- title: Foo date: 2023-06-15 12:04:20 hide: true tags: ---

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

landscape
  • 首页隐藏
  • archives 没有隐藏
fluid
  • 首页隐藏
  • 其余页面隐藏

hexo-generator-index-custom 插件

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

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

hexo-hide-posts 插件

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

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

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

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

安装

1

$ npm install hexo-hide-posts --save

使用

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

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

1234567

---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 中添加如下配置:

12345678910

# hexo-hide-postshide_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 名称(可以查阅对应插件的源码来获取准确的注册名)。

效果

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

我的最佳实践

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

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

参考资料

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年6月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 测试环境
  • 修改发布状态
  • 存为草稿
  • hexo-generator-indexed 插件
    • landscape
      • fluid
      • hexo-generator-index-custom 插件
      • hexo-hide-posts 插件
        • 安装
          • 使用
            • 配置
              • 效果
              • 我的最佳实践
              • 参考资料
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com