在使用 Hexo 搭建博客的过程中,每次新建文章(hexo new post "文章标题"),我们都会在 Markdown 文件的顶端看到由 --- 包裹的区域,这就是 Front-matter。它使用 YAML 或 JSON 语法,为 Hexo 和主题提供了关于这篇文章的配置信息。
理解这些字段,能帮助我们更好地控制文章的表现形式。下面我将详细介绍其中最常用和核心的字段。
核心字段
这些是 Hexo 内置支持的、最基本的配置项。
| 字段 | 描述 | 默认值 |
|---|---|---|
layout |
布局。指定文章使用的模板,例如 post(文章页)、page(独立页)或 draft(草稿)。 |
config.default_layout (通常是 post) |
title |
标题。文章的标题,会显示在页面标题和链接中(取决于你的配置)。 | 文章的文件名 |
date |
建立日期。文章的发布日期,格式通常为 YYYY-MM-DD HH:MM:SS。 |
文件建立日期 |
updated |
更新日期。文章的修改日期,Hexo 会在此字段更新时重新生成页面。 | 文件更新日期 |
comments |
评论功能。是否开启文章的评论功能。 | true |
tags |
标签。为文章添加标签,仅适用于文章(post),不适用于独立页面(page)。 | 无 |
categories |
分类。为文章添加分类,仅适用于文章(post)。分类具有层次性和顺序性。 | 无 |
permalink |
覆盖文章的默认永久链接。例如,如果你想为一篇文章设置一个独立的短链接,可以使用此字段。链接应以 / 或 .html 结尾。 |
null |
excerpt |
页面摘要。用于在首页显示文章摘要的纯文本。你也可以在文章正文中使用 <!-- more --> 标签来手动截取摘要。 |
无 |
published |
是否发布。true 表示发布,false 表示文章为草稿状态(相当于存在 _drafts 目录)。 |
true (对于 _posts 下的文章) |
disableNunjucks |
禁用 Nunjucks 标签渲染。如果设置为 true,文章中的 {{ }} 或 {% %} 这类 Nunjucks 标签插件将不会被解析,而是作为纯文本显示。 |
false |
深入理解:分类和标签
这是很多新手容易混淆的地方。Hexo 官方文档明确指出,分类具有顺序性和层次性,而标签没有顺序和层次。
分类(Categories):就像你电脑里的文件夹,可以有父分类和子分类。例如,一篇关于“篮球比赛”的文章,你可以将其分类为
Sports->Ball->Basketball。在 Front-matter 中,层次结构通过列表的缩进来表示。categories: - Sports - Ball - Basketball如果你需要一篇文章同时属于多个互不相关的分类体系,可以使用列表的列表。例如,一篇文章既是关于
Sports的,又是关于Life的:categories: - [Sports, Baseball] # 这是一个独立的分支:Sports/Baseball - [Life, Weekend] # 这是另一个独立的分支:Life/Weekend标签(Tags):就像给文章贴的便签,它们之间是并列关系,没有父子级。你可以任意顺序排列它们,用于快速检索内容。
tags: - Diary - 生活感悟 - 旅行
进阶用法与主题定制
除了 Hexo 核心字段,你使用的主题通常也会扩展自己的 Front-matter 字段来实现特定功能。例如,许多主题(如 Butterfly, Volantis)都支持以下字段:
| 字段 | 描述 | 适用场景 |
|---|---|---|
cover |
缩略图/封面图。用于在文章列表页显示的图片链接。 | 文章列表美化 |
top_img |
顶部图片。文章页顶部显示的大图(通常是 banner)。 | 文章页个性化 |
toc |
是否显示文章目录。控制是否在侧边栏生成当前文章的目录结构。 | 长文章导航 |
copyright |
是否显示版权信息。控制文章底部是否展示作者、链接等版权声明。 | 内容版权保护 |
mathjax / katex |
是否启用数学公式渲染。当文章包含复杂公式时启用。 | 技术/学术写作 |
pin |
是否置顶。将文章固定在首页最前面。 | 重要公告或精选文章 |
注意:这些主题扩展字段并非 Hexo 核心功能,你需要查阅你所使用的 Hexo 主题的官方文档来确认它们是否支持以及具体的字段名和用法。
总结
Front-matter 是连接你与 Hexo 及主题配置的桥梁。掌握这些字段,就像给你的文章贴上了清晰的名片和说明书,让静态站点生成器知道如何更好地展示它们。
希望这篇文章能帮助你更好地理解和使用 Hexo 的 Front-matter,开始你的博客写作之旅!