如何优雅隐藏 Hexo 文章
延迟发布
_config.yml
( Hexo配置文件)关闭显示未来文章(即将future
配置为 false,这样如果你手动指定日期晚于当前时间,就不会生成,当你想要发布文章时修改一下发布时间,或者到了预定发布的时间时重新部署一次即可展示文章
1 | # Writing |
发布状态
- 在文章 Markdown 文件
Front-Matter
部分配置published
参数
1 | --- |
即可达到与上面一样的效果,这样当我们认为文章可以公开时,再设为true
或者删掉这个配置即可,同样由于是静态博客,仍需要重新部署一次才会显示
首页隐藏
- 前两种方式如果你的源码仓库闭源的话,是完全隐藏的,只有你知道,但是有时候我们只想在首页隐藏部分文章,而不是不公开文章,我们需要更换首页生成插件,执行以下命令
1 | $ npm uninstall hexo-generator-index |
隐藏文章 ,在文章的 Front-matter 中增加一个 hide 参数用来隐藏
1 | --- |
隐藏特定分类中的文章,在 Hexo 的 `_config.yml` 中可以通过 `hide_categories` 选项设置隐藏某个分类下的文章,例如:
1 | hide_categories: |
存为草稿
对于我来说,由于我使用的是语雀,在未发布前,都储存在草稿箱所以不会有这个问题,而我发布后文章会同步到源代码仓库posts
分支;但总有小伙伴那么几篇文章不想让别人看到,所以水了这篇文章;并且生成后的代码仓库大多数情况下是公开的,所以还是推荐没写完就不要发布了,留在草稿箱,即使你指定一个只有你自己知道的路径,虽然一般人不会闲得慌去看你仓库,但并没有达到不想公开的效果,因此可以在博客目录.gitignore
文件添加忽略草稿目录
1 | .DS_Store |
当然在使用草稿功能前,注意检查_config.yml
Hexo 配置文件是否关闭显示(渲染)草稿
1 | render_drafts: false |
此外,在最开始的Hexo
的Writing部分配置项中我们知道default_layout: post
,即默认布局为post
文章类别,又因为new
可以简写为n
,因此默认情况下以下 3 条新建文章命令等效
1 | $ hexo new post <title> |
同理,在 Hexo 官方文档中也有提到,如果要新建草稿,可使用如下命令
1 | $ hexo new draft <title> |
当然我们还要知道默认的 layout 模板文件存在根目录/scaffolds
下(我们可以自行新建或修改模板,这里不做展开),草稿存在根目录/source/_drafts
下,文章存在根目录/source/_posts
下 刚刚提到了 Hexo
的一种特殊布局:draft
,这种布局在建立时会被保存到 source/_drafts
文件夹,您可通过publish
命令将草稿移动到 source/_posts
文件夹,该命令的使用方式与 new
十分类似,您也可在命令中指定 layout 来指定布局。
1 | $ hexo publish [layout] <title> |
那么如果我们要发布草稿即可使用如下命令
1 | $ hexo publish <title> |
草稿默认不会显示在页面中,您可在执行时加上 --draft
参数,或是把 render_drafts
参数设为 true 来预览草稿。
1 | $ hexo s --draft |
若日后想将正式文章转为为草稿,只需手动将文章从source/_posts
目录移动到source/_drafts
目录即可。
source
资源文件夹,除了模板以外的 Asset,例如 CSS、JavaScript 文件等,都应该放在这个文件夹中。文件或文件夹开头名称为 _(下划线线)或隐藏的文件会被忽略。如果文件可以被渲染的话,会经过解析然后储存到 public 文件夹,否则会直接拷贝到 public 文件夹。
资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
官方其实考虑到这个问题,事实上我们在_post
(文章)文件夹内可以按照类别来存放文章,这样做既方便我们查找,也能形成系统性文档,所以可以建立不同的子文件夹存放不同类别的文章,说到这可能你想到了,如果我建立一个文件夹_还未准备好发布的文章
,或者把文件夹设置为隐藏,那这样也能跳过渲染实现和草稿一样的效果。
题外话
而对于加密这个操作,我觉得是没有必要了,但也有对应的使用场景,各取所需吧。