• 简体中文
  • 文章可见性

    ModernDuang 提供了文章可见性控制功能,允许你灵活地管理文章的展示范围。通过在文章的 Front Matter 中设置 visibility 字段,你可以控制文章是否出现在列表页(首页、归档、分类、标签)以及是否允许直接访问。

    三种可见性级别

    可见性Front Matter列表页显示直接 URL 访问
    默认(公开)不设置
    本地隐藏visibility: local
    全局隐藏visibility: global否(返回 404)

    使用方法

    在文章的 Front Matter 中设置 visibility 字段即可:

    ---
    title: 我的隐藏文章
    date: 2024-01-01
    categories: 技术
    visibility: local
    ---

    默认可见性(公开)

    不设置 visibility 字段即可(默认行为):

    ---
    title: 普通文章
    date: 2024-01-15
    ---

    文章正常显示在首页、归档、分类页、标签页等所有列表页面,也可以直接通过 URL 访问。

    本地隐藏(visibility: local

    ---
    title: 草稿笔记
    date: 2024-02-20
    visibility: local
    ---

    文章不会出现在以下列表页面:

    • 首页文章列表
    • 归档页面(/archives
    • 分类页面(/categories
    • 标签页面(/tags

    但是,知道文章 URL 的人仍然可以直接访问该文章。适合用于:

    • 不想让读者在列表中看到,但愿意通过链接分享的文章
    • 内部参考文档
    • 测试页面

    全局隐藏(visibility: global

    ---
    title: 私密笔记
    date: 2024-03-10
    visibility: global
    ---

    文章完全隐藏

    • 不会出现在任何列表页面
    • 即使知道 URL 直接访问,也会返回 404 页面
    • 文章内容不会被渲染

    适合用于:

    • 真正不希望任何人看到的文章(相当于软删除)
    • 暂时下架但保留源文件的内容

    实现原理

    visibility 功能通过主题的 scripts/visibility.js 脚本实现:

    • visibility: global:在 after_post_render 过滤器中将文章内容清空,并将布局改为 404,使直接访问返回 404 页面。
    • 列表过滤:通过 is_visible 辅助函数在生成列表页时过滤掉 visibility: localvisibility: global 的文章。

    完整示例

    ---
    title: 我的个人日记
    date: 2024-05-01
    categories: 生活
    tags:
      - 日记
    visibility: local
    description: 这是一篇设置了本地隐藏的文章,不会出现在列表中。
    ---
    
    ## 2024年5月1日
    
    今天天气不错,开始使用 ModernDuang 主题搭建博客。
    
    这篇文章设置了 `visibility: local`,所以不会在首页和归档页面显示,
    但如果你通过链接访问,依然可以正常阅读。

    注意事项

    • visibility 字段是可选的,不需要在所有文章中都设置。只有需要控制可见性时才添加。
    • visibility: local 的文章仍然会被搜索引擎索引(如果页面可公开访问),如需屏蔽搜索引擎,建议同时设置 robots: noindex
    • visibility: global 的文章在构建后不会生成有效的 HTML 页面,但仍存在于源文件中。
    • 该功能仅在 Hexo 生成阶段生效,不会影响本地开发服务器(hexo server)的行为。

    相关页面