Hexo插件:hexo-hide-posts 文章隐藏
Hexo插件:hexo-hide-posts 文章隐藏
阳小楊Hexo插件:hexo-hide-posts 文章隐藏
hexo-hide-posts
简介
hexo-hide-posts 是一款针对 Hexo 博客系统设计的插件,旨在提供文章隐藏功能,使用户能够选择性地隐藏特定的博客文章,以便仅对特定受众可见。
功能特点
- 文章隐藏: 允许用户对指定的博客文章进行隐藏处理,以限制访问权限。
- 灵活配置: 插件提供了灵活的配置选项,使用户能够根据需求定制隐藏设置。
安装和使用
通过 npm 安装插件:
npm install hexo-hide-posts --save
在 Hexo 博客的配置文件中进行相应配置。
在需要隐藏的文章的 front-matter 中添加相应标识。
重新生成博客并部署,以应用隐藏设置。
示例
1 | ---- |
结语
hexo-hide-posts 插件为 Hexo 博客系统提供了文章隐藏功能,使用户能够更好地控制博客内容的访问权限。通过该插件,您可以轻松实现对部分内容的隐藏,确保内容仅对授权用户可见。
下面内容为hexo-hide-posts作者编写的文档
Github仓库:hexo-hide-posts
hexo-hide-posts
本 Hexo 插件可以在博客中隐藏指定的文章,并使它们仅可通过链接访问。
当一篇文章被设置为「隐藏」时,它不会出现在任何列表中(包括首页、存档、分类页面、标签页面、Feed、站点地图等),也不会被搜索引擎索引(前提是搜索引擎遵守 noindex 标签)。
只有知道文章链接的人才可以访问被隐藏的文章。
安装
1 | npm install hexo-hide-posts |
使用
在文章的 front-matter 中添加 hidden: true
即可隐藏文章。
比如我们隐藏了 source/_posts/lorem-ipsum.md
这篇文章:
1 | --- |
虽然首页上被隐藏了,但你仍然可以通过 https://hexo.test/lorem-ipsum/
链接访问它。(如果想要完全隐藏一篇文章,可以直接将其设置为草稿)
你可以在命令行运行 hexo hidden:list
来获取当前所有的已隐藏文章列表。
插件也在 Local Variables 中添加了 all_posts
和 hidden_posts
变量,供自定义主题使用。
配置
在你的站点 _config.yml
中添加如下配置:
1 | hide_posts: |
举个栗子:设置 filter: secret
之后,你就可以在 front-matter 中使用 secret: true
来隐藏文章了。
高级配置
在 0.3.0 及以上版本,插件提供了更精细的黑白名单控制。
示例1:让所有隐藏文章在存档页面和分类页面中可见,其他地方不可见
1 | hide_posts: |
示例2:仅在首页和 RSS 隐藏部分文章,其他地方可见
1 | hide_posts: |
注意:不是所有插件注册的 generator 名称都与其插件名称相同。比如 hexo-generator-searchdb
插件,其注册的 generator 名称就是 xml
和 json
,而非 searchdb
。因此,在填写 allowlist_generators
和 blocklist_generators
参数时要注意使用插件实际注册的 generator 名称(可以查阅对应插件的源码来获取准确的注册名)。
Tips: 运行
hexo g --debug
,可以在调试日志中查看所有已安装的 generator 的注册名称。
示例3:使用自定义 JavaScript 函数判断白名单
在博客中添加一个插件脚本:
1 | // scripts/allowlist.js (文件名任意) |
自定义 ACL 函数
如果你需要更细粒度地控制某篇文章应该如何显示或隐藏,可以使用本插件的更高级功能:自定义 ACL 函数(需要 0.4.0 及以上版本)。
插件支持传入自定义 JavaScript 函数作为 ACL (Access Control List,访问控制列表)。ACL 函数功能十分强大,可以完全控制某一篇文章是否应该被某一个 generator 渲染。函数接受两个参数:文章对象 post
,以及当前 generator 的注册名称 generatorName
。同时,也可以访问全局变量 hexo
。
下面是一个较为复杂的例子,实现了以下功能,如有需要可自行修改使用:
- 在 front-matter 中标记为
acl: no-rss
的文章,博客中正常展示,但在 RSS 和 sitemap 中隐藏 - 标记为
acl: archive-only
的文章,仅在存档页面中展示,在其他地方隐藏 - 分类为
news
的文章,在所有地方都展示 - 发布日期早于 2020 年的文章,在所有地方都隐藏