front-matter
song

在hexo中,Front-matter 是每篇文章或页面的元数据部分。它位于 Markdown 文件的顶部,用于定义文章的各种属性,如标题、发布日期、分类、标签等。Front-matter 是用三条短横线(---)包裹起来的 YAML 格式的数据块。

Front-Matter 的结构

1
2
3
4
5
6
7
8
9
--- 
title: "My First Post"
date: 2024-11-03 12:00:00
categories:
- Programming
tags:
- Hexo
- Blogging
----

常见的 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
2
3
4
5
6
7
## 单个分类 直接使用一个字符串。
categories: Blogging

## **多个分类(多级分类)**:使用数组结构。 `Web Development` 是 `Technology` 的子分类。
categories:
- Technology
- Web Development

创建分类页面

创建分类页面

1
hexo new page categories

***编辑 source/categories/index.md 文件:

1
2
3
4
5
---
title: "Categories"
type: "categories"
layout: "categories"
---

确保主题支持 categories 布局,如果没有,你可能需要手动添加模板文件 categories.ejs

分类展示

1
2
3
4
5
6
7
<% if (post.categories.length) { %>
<p>Categories:
<% post.categories.forEach(function(category) { %>
<a href="<%= url_for(category.path) %>"><%= category.name %></a>
<% }); %>
</p>
<% } %>

在分类页面,会自动列出所有文章的分类及其对应的文章数量。你也可以在文章详情页中显示分类。

Tags(标签)

  • 扁平化:标签是非层次化的,没有父子关系。
  • 灵活性:标签可以自由标记文章的内容,数量通常较多,如“Hexo”、“教程”、“前端”。
  • 关联性:标签用于连接具有相似特性的文章,帮助读者发现相关内容。

在 Front-matter 中设置标签

1
2
3
4
5
6
7
8
## 单个标签:可以是一个字符串。
tags: Blogging

## 多个标签:使用数组结构。
tags:
- Hexo
- Blogging
- Tutorial

创建标签页面

创建标签页面

1
hexo new page tags

编辑 source/tags/index.md 文件:

1
2
3
4
5
---
title: "Tags"
type: "tags"
layout: "tags"
---

确保主题支持 tags 布局,如果没有,你可能需要手动添加模板文件 tags.ejs。

标签展示

1
2
3
4
5
6
7
<% if (post.tags.length) { %>
<p>Tags:
<% post.tags.forEach(function(tag) { %>
<a href="<%= url_for(tag.path) %>"><%= tag.name %></a>
<% }); %>
</p>
<% } %>

在标签页面,会列出所有文章的标签及其对应的文章数量。你也可以在文章详情页中显示标签。

自定义 Front-matter

除了 Hexo 提供的默认字段,还可以根据需要在 Front-matter 中添加自定义字段。例如:

1
2
3
4
5
---
title: "Custom Fields Example"
date: 2024-11-03 18:00:00
custom_field: "This is a custom value"
---

然后可以在主题模板中通过 post.custom_field 访问和显示这个自定义值。

Front-matter 的作用

  1. 定义文章属性:通过 Front-matter 定义文章的标题、时间、分类、标签等基本信息。
  2. 控制布局和显示:可以指定使用哪个布局模板来渲染文章,例如 postpagecategories 等。
  3. 文章组织:利用 categoriestags 来组织和分类文章,方便用户浏览和搜索。
  4. SEO 优化:通过设置自定义的 titlepermalink,优化文章的 SEO 表现。

总结

Hexo 会自动解析每篇文章的 Front-matter,并将其数据传递给主题模板,供生成页面时使用。因此,Front-matter 是 Hexo 中文章管理和页面渲染的核心部分。

由 Hexo 驱动 & 主题 Keep