front-matter
在hexo中,Front-matter 是每篇文章或页面的元数据部分。它位于 Markdown 文件的顶部,用于定义文章的各种属性,如标题、发布日期、分类、标签等。Front-matter 是用三条短横线(---)包裹起来的 YAML 格式的数据块。
Front-Matter 的结构
1 | --- |
常见的 Front-matter 字段
| 设置 | 描述 | 默认值 |
|---|---|---|
| layout | 使用的布局模板 | config.default_layout |
| title | 文章的标题 | 文章的文件名 |
| date | 建立日期 | 文件建立日期 |
| updated | 更新日期 | 文件更新日期 |
| comments | 开启文章的评论功能 | true |
| tags | 文章的标签,可以是一个字符串或一个数组,通常用于更自由的内容标记。 | |
| categories | 文章所属的分类,可以是一个字符串或一个数组,支持多级分类。 | |
| excerpt | 自定义文章摘要,通常在首页或分类页面中显示。 | |
| permalink | 自定义文章的永久链接。 | |
| author | 文章的更新时间。 | |
| lang | 设置语言以覆盖 [自动检测] | 继承自 _config.yml |
| published | 文章是否发布 | 对于 _posts 下的文章为 true,对于 _draft 下的文章为 false |
Categories(分类)
- 层次性:支持多级分类,通常用于宏观上的内容组织,如“技术”、“生活”。
- 结构化:一个文章通常属于一个或少数几个分类,表示文章在网站中的位置。
- 固定性:分类的数量通常有限,主要用于划分大的内容领域。
在 Front-matter 中设置分类
1 | ## 单个分类 直接使用一个字符串。 |
创建分类页面
创建分类页面
1 | hexo new page categories |
***编辑 source/categories/index.md 文件:
1 | --- |
确保主题支持 categories 布局,如果没有,你可能需要手动添加模板文件 categories.ejs。
分类展示
1 | <% if (post.categories.length) { %> |
在分类页面,会自动列出所有文章的分类及其对应的文章数量。你也可以在文章详情页中显示分类。
Tags(标签)
- 扁平化:标签是非层次化的,没有父子关系。
- 灵活性:标签可以自由标记文章的内容,数量通常较多,如“Hexo”、“教程”、“前端”。
- 关联性:标签用于连接具有相似特性的文章,帮助读者发现相关内容。
在 Front-matter 中设置标签
1 | ## 单个标签:可以是一个字符串。 |
创建标签页面
创建标签页面
1 | hexo new page tags |
编辑 source/tags/index.md 文件:
1 | --- |
确保主题支持 tags 布局,如果没有,你可能需要手动添加模板文件 tags.ejs。
标签展示
1 | <% if (post.tags.length) { %> |
在标签页面,会列出所有文章的标签及其对应的文章数量。你也可以在文章详情页中显示标签。
自定义 Front-matter
除了 Hexo 提供的默认字段,还可以根据需要在 Front-matter 中添加自定义字段。例如:
1 | --- |
然后可以在主题模板中通过 post.custom_field 访问和显示这个自定义值。
Front-matter 的作用
- 定义文章属性:通过 Front-matter 定义文章的标题、时间、分类、标签等基本信息。
- 控制布局和显示:可以指定使用哪个布局模板来渲染文章,例如
post、page、categories等。 - 文章组织:利用
categories和tags来组织和分类文章,方便用户浏览和搜索。 - SEO 优化:通过设置自定义的
title和permalink,优化文章的 SEO 表现。
总结
Hexo 会自动解析每篇文章的 Front-matter,并将其数据传递给主题模板,供生成页面时使用。因此,Front-matter 是 Hexo 中文章管理和页面渲染的核心部分。