hexo-butterfly-文章隐藏

1,596 阅读3分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

前言

博客构建初衷是作为个人知识库整理,构建一个能够及时进行复盘、归纳总结的个人空间,但考虑到部分文章内容是日常学习碎碎念和BUG收录合集概念,希望某些文章内容可以自定义隐藏,参考了许多方式构建,总结如下内容所示(下述内容是基于hexo、butterfly主题进行构建,其余主题配置可相应参考思路获取相应的解决方案)

文章隐藏思路

<1>"草稿箱"概念(将文章移动到草稿箱)

<2>首页文章渲染结合文章front-matter页面属性联动控制

方式1:“草稿箱”概念

针对一些编辑好的文章,则可将其移动到草稿箱目录即可,对应文章目录说明如下。(在创建文章的时候亦可通过指定[layout]从而构建相应的内容)

Hexo 有三种默认布局:postpagedraft。在创建者三种不同类型的文件时,它们将会被保存到不同的路径;而自定义的其他布局和 post 相同,都将储存到 source/_posts 文件夹。如果不想文章被处理,可将 Front-Matter 中的layout: 设为 false

布局路径
postsource/_posts
pagesource
draftsource/_drafts
自定义布局source/_posts:与_posts文件夹相同
# 方式1:指令控制-创建指定草稿文件
# 文章生成目录:source/_drafts目录
hexo new draft <filename> 

# 文章生成目录:source/_posts目录,文章页面属性front-matter中layout指定为drafts
hexo new drafts <filename> 

# 方式2:手动调整
# 思路a.对应source/_drafts目录下存储的是草稿信息,只需将需要隐藏文件移动至指定的文件夹即可
# 思路b.通过front-matter指定layout属性为drafts
front-matter配置文件页面属性layout实现配置
---
layout: drafts
---

预览草稿内容

# 方式1:通过修改主配置文件,强制预览草稿
render_drafts: false  # true 草稿预览配置

# 方式2:通过下述方式启动服务可预览草稿
hexo server --drafts

方式2:自定义属性配置

基于butterfly主题的hexo博客隐藏,此处借助设定页面属性和修改主题插件配置结合调整(不同主题调整的插件配置不同,但原理可以理解为修改post展示的规则,隐藏配置的隐藏文章)

调整步骤

<1>修改主题资源themes/butterfly/layout/includes/mixins/post-ui.pug,过滤指定配置文章内容

<2>在需要隐藏的文章页面中设置页面属性

参考示例

post-ui.pug修改

在开头处.recent-post-item语句前面添加if article.isHide !== true语句,后续所有语句都以tab缩进一格。isHide属性用于标识当文章的isHide属性为true的时候则不渲染文章内容(即不展示在recent-post-item指定的区域),其构建思路类似drafts的配置

mixin postUI(posts)
  each article , index in page.posts.data
    if article.isHide !== true
      .recent-post-item
页面属性配置
# 在需要隐藏的文章的front-matter处添加指定配置
---
  ... 文章front-matter属性配置 ....
  isHide: true # true 隐藏 
---

基于这种方式构建文章隐藏,但只是在首页展示处隐藏文章内容,实际文章还是会通过渲染生成,并且可通过url直接访问(/post/固定链接),基于这种概念可以参考“草稿”的方式为这些需要隐藏的文章构建自定义分类,通过自定义页面配置相应导航进行配置,或者借助其他的配置进行访问限制。