什么是 Front Matter?
Front Matter 是 Markdown 文件开头的一段元数据,用 --- 包围,采用 YAML 格式。它定义了文章的各种属性,如标题、日期、分类等。
基础必需参数
title
文章标题,必需参数。
title: "文章标题"
date
发布日期,必需参数。格式推荐使用 ISO 8601 标准。
date: 2025-01-16T21:00:00+08:00
日期格式说明:
2025-01-16:简短格式2025-01-16T21:00:00+08:00:完整格式(推荐,包含时间)2025-01-16T21:00:00Z:UTC时间
draft
是否为草稿,必需参数。
draft: false # false=发布,true=草稿
注意:草稿文章在 hugo server 需要加 -D 参数才能预览:
hugo server -D
常用可选参数
description
文章描述/摘要,显示在文章列表页和SEO中。
description: "这是一篇关于Hugo的详细介绍"
使用建议:
- 长度:50-150个字符
- 包含文章关键词
- 简洁明了地概括文章内容
weight
文章权重,用于控制文章在列表中的排序。权重越大,排序越靠前。
weight: 10
使用场景:
- 置顶重要文章
- 自定义文章顺序
- 配合分类/标签使用
slug
URL路径中的文章标识。如果不设置,Hugo会根据标题自动生成。
slug: "my-custom-url"
示例:
- 不设置slug:
https://example.com/post/hello-world/ - 设置slug:
https://example.com/post/my-custom-url/
url
完整的URL路径,可以完全自定义文章URL。
url: "/2025/01/16/my-article.html"
注意:设置url后会覆盖slug和其他URL设置。
分类和标签
categories
文章分类,层级结构(可以有子分类)。
categories:
- 技术
- 编程
或使用数组格式:
categories:
- 技术
- 编程
层级示例:
categories:
- 技术/前端
- 技术/后端
tags
文章标签,扁平结构(无层级)。
tags:
- JavaScript
- Vue
- 教程
分类vs标签:
- 分类:层级结构,用于广泛的主题分类
- 标签:扁平结构,用于具体的主题标记
一篇文章可以有多个分类和多个标签。
作者信息
author
文章作者。
author: "张三"
或使用对象格式:
author:
name: "张三"
email: "zhangsan@example.com"
url: "https://example.com"
authors
多个作者(数组格式)。
authors:
- name: "张三"
email: "zhangsan@example.com"
- name: "李四"
email: "lisi@example.com"
时间相关参数
publishDate
首次发布日期。如果不设置,使用date参数。
publishDate: 2025-01-16T21:00:00+08:00
expiryDate
内容过期日期。过期后文章不会显示在列表中。
expiryDate: 2026-01-16T21:00:00+08:00
lastmod
最后修改日期。用于SEO和读者参考。
lastmod: 2025-01-16T22:00:00+08:00
自动获取:
如果设置 enableGitInfo = true,Hugo会自动从Git获取最后修改时间。
内容管理
type
内容类型,决定使用哪个模板渲染。
type: "post"
常见类型:
post:文章page:独立页面- 自定义类型
layout
指定使用的布局模板。
layout: "blog"
使用场景:
- 覆盖默认模板选择
- 使用自定义布局
isCJKLanguage
是否为中日韩文字内容。
isCJKLanguage: true
作用:影响摘要生成和字数统计。
输出控制
outputs
输出格式配置。
outputs:
- HTML
- JSON
- RSS
常见组合:
# 仅HTML
outputs:
- HTML
# HTML + JSON(用于搜索)
outputs:
- HTML
- JSON
aliases
URL别名,用于旧URL重定向。
aliases:
- "/old-url/"
- "/2020/old-post.html"
使用场景:
- 文章URL变更
- 从其他博客迁移
- 多个URL指向同一文章
SEO相关
keywords
SEO关键词。
keywords:
- Hugo
- 静态网站生成器
- 博客
meta_description
独立的meta描述。
meta_description: "Hugo是一个快速的静态网站生成器"
images
社交分享图片。
images:
- /images/og-image.jpg
用途:
- Facebook分享
- Twitter卡片
- SEO优化
其他参数
toc
是否显示目录。
toc: true # true=显示,false=不显示
math
是否启用数学公式。
math: true
comments
是否显示评论。
comments: true # true=显示,false=不显示
hidden
是否隐藏文章(不在列表中显示,但可通过直接访问URL查看)。
hidden: true
自定义参数
你可以在Front Matter中添加任何自定义参数,在模板中使用。
定义自定义参数
---
title: "我的文章"
date: 2025-01-16
customField: "自定义值"
rating: 5
featured: true
---
在模板中使用自定义参数
{{ .Params.customField }}
{{ .Params.rating }}
{{ .Params.featured }}
完整示例
---
title: "Hugo Front Matter 完整示例"
subtitle: "这是一篇详细介绍Front Matter的文章" # 副标题
date: 2025-01-16T21:00:00+08:00
lastmod: 2025-01-16T22:30:00+08:00
publishDate: 2025-01-16T21:00:00+08:00
expiryDate: 2026-12-31T23:59:59+08:00
draft: false
description: "这是一篇详细介绍Hugo Front Matter所有参数的文章"
summary: "这是手动指定的摘要" # 如果设置,优先级高于自动摘要
# 作者信息
author: "张三"
# 或
authors:
- name: "张三"
email: "zhangsan@example.com"
# 分类和标签
categories:
- 技术
- 教程
tags:
- Hugo
- 静态网站
- 博客
# URL设置
slug: "hugo-frontmatter-example"
url: "/tutorials/hugo/frontmatter/"
aliases:
- "/old-hugo-post/"
- "/2020/hugo-guide/"
# 输出控制
type: "post"
layout: "single"
outputs:
- HTML
- JSON
# SEO
keywords:
- Hugo
- Front Matter
- 静态网站
meta_description: "学习Hugo Front Matter的所有参数"
images:
- /images/hugo-og.jpg
# 功能开关
toc: true
math: false
comments: true
isCJKLanguage: true
# 其他
weight: 10
hidden: false
featured: true # 自定义参数
readingTime: 10 # 自定义参数:阅读时间(分钟)
---
文章正文开始...
Stack主题特有参数
如果你使用的Hugo主题是Stack,还有一些特殊参数:
featuredImage
文章特色图片。
featuredImage: "/images/featured.jpg"
featuredImagePreview
首页预览图片。
featuredImagePreview: "/images/preview.jpg"
hiddenFromHomePage
是否在首页隐藏。
hiddenFromHomePage: false
hiddenFromSearch
是否从搜索中隐藏。
hiddenFromSearch: false
tocOpen
是否默认展开目录。
tocOpen: false
singleColumn
是否使用单列布局。
singleColumn: false
最佳实践
- 必需参数:始终设置 title, date, draft
- SEO优化:填写 description 和 keywords
- 分类标签:合理使用categories和tags
- 日期规范:使用 ISO 8601 格式
- 自定义参数:根据需要添加,但保持简洁
- 一致性:保持所有文章的Front Matter格式一致
常见问题
Q: 如何设置文章摘要?
有三种方式:
- 设置
description参数 - 设置
summary参数 - 在文章中使用 `
` 分隔符
Q: 为什么草稿文章看不到?
草稿需要使用 hugo server -D 启动才能预览,或者设置 draft: false。
Q: 如何置顶文章?
设置较大的 weight 值:
weight: 100
Q: 日期格式有要求吗?
推荐使用 ISO 8601 格式:2025-01-16T21:00:00+08:00
Q: 如何禁用某篇文章的评论?
comments: false
总结
Front Matter 是Hugo文章配置的核心,合理使用可以让你的博客更加灵活和强大。建议:
- 保存一个完整的Front Matter模板
- 根据实际需求选择使用哪些参数
- 保持整个博客的配置一致性
相关文章: