文章可见性
ModernDuang 提供了文章可见性控制功能,允许你灵活地管理文章的展示范围。通过在文章的 Front Matter 中设置 visibility 字段,你可以控制文章是否出现在列表页(首页、归档、分类、标签)以及是否允许直接访问。
三种可见性级别
使用方法
在文章的 Front Matter 中设置 visibility 字段即可:
默认可见性(公开)
不设置 visibility 字段即可(默认行为):
文章正常显示在首页、归档、分类页、标签页等所有列表页面,也可以直接通过 URL 访问。
本地隐藏(visibility: local)
文章不会出现在以下列表页面:
- 首页文章列表
- 归档页面(
/archives) - 分类页面(
/categories) - 标签页面(
/tags)
但是,知道文章 URL 的人仍然可以直接访问该文章。适合用于:
- 不想让读者在列表中看到,但愿意通过链接分享的文章
- 内部参考文档
- 测试页面
全局隐藏(visibility: global)
文章完全隐藏:
- 不会出现在任何列表页面
- 即使知道 URL 直接访问,也会返回 404 页面
- 文章内容不会被渲染
适合用于:
- 真正不希望任何人看到的文章(相当于软删除)
- 暂时下架但保留源文件的内容
实现原理
visibility 功能通过主题的 scripts/visibility.js 脚本实现:
visibility: global:在after_post_render过滤器中将文章内容清空,并将布局改为404,使直接访问返回 404 页面。- 列表过滤:通过
is_visible辅助函数在生成列表页时过滤掉visibility: local和visibility: global的文章。
完整示例
注意事项
visibility字段是可选的,不需要在所有文章中都设置。只有需要控制可见性时才添加。visibility: local的文章仍然会被搜索引擎索引(如果页面可公开访问),如需屏蔽搜索引擎,建议同时设置robots: noindex。visibility: global的文章在构建后不会生成有效的 HTML 页面,但仍存在于源文件中。- 该功能仅在 Hexo 生成阶段生效,不会影响本地开发服务器(
hexo server)的行为。
相关页面
- Front Matter 配置 — 查看所有 Front Matter 选项
- 404 页面 — 自定义 404 页面
