Hugo 配置 front matter
日期
Page 对象上有四种方法返回日期。
| 方法 | 描述 |
|---|---|
Date |
返回给定页面的日期。 |
ExpiryDate |
返回给定页面的过期日期。 |
Lastmod |
返回给定页面的最后修改日期。 |
PublishDate |
返回给定页面的发布日期。 |
Hugo 根据此配置确定返回的值:
frontmatter:
date:
- date
- publishdate
- pubdate
- published
- lastmod
- modified
expiryDate:
- expirydate
- unpublishdate
lastmod:
- :git
- lastmod
- modified
- date
- publishdate
- pubdate
- published
publishDate:
- publishdate
- pubdate
- published
- date
[frontmatter]
date = ['date', 'publishdate', 'pubdate', 'published', 'lastmod', 'modified']
expiryDate = ['expirydate', 'unpublishdate']
lastmod = [':git', 'lastmod', 'modified', 'date', 'publishdate', 'pubdate', 'published']
publishDate = ['publishdate', 'pubdate', 'published', 'date']
{
"frontmatter": {
"date": [
"date",
"publishdate",
"pubdate",
"published",
"lastmod",
"modified"
],
"expiryDate": [
"expirydate",
"unpublishdate"
],
"lastmod": [
":git",
"lastmod",
"modified",
"date",
"publishdate",
"pubdate",
"published"
],
"publishDate": [
"publishdate",
"pubdate",
"published",
"date"
]
}
}
例如,ExpiryDate 方法返回 expirydate 值(如果存在),否则返回 unpublishdate。
您还可以使用自定义日期参数:
frontmatter:
date:
- myDate
- date
[frontmatter]
date = ['myDate', 'date']
{
"frontmatter": {
"date": [
"myDate",
"date"
]
}
}
在上面的示例中,Date 方法返回 myDate 值(如果存在),否则返回 date。
要回退到默认日期序列,使用 :default 标记:
frontmatter:
date:
- myDate
- :default
[frontmatter]
date = ['myDate', ':default']
{
"frontmatter": {
"date": [
"myDate",
":default"
]
}
}
在上面的示例中,Date 方法返回 myDate 值(如果存在),否则返回 date、publishdate、pubdate、published、lastmod 和 modified 中的第一个有效日期。
别名
一些 front matter 字段有别名。
| Front matter 字段 | 别名 |
|---|---|
expiryDate |
unpublishdate |
lastmod |
modified |
publishDate |
pubdate、published |
默认 front matter 配置包含这些别名。
标记
Hugo 提供以下 标记 来帮助您配置 front matter:
:default- 默认有序日期字段序列。
:fileModTime- 文件的最后修改时间戳。
:filename- 从文件名提取日期,前提是文件名以以下格式之一的日期开头:
YYYY-MM-DDYYYY-MM-DD-HH-MM-SSNew in v0.148.0
在
YYYY-MM-DD-HH-MM-SS格式中,日期和时间值可以用任何字符分隔,包括空格(例如2025-02-01T14-30-00)。Hugo 将提取的日期解析为站点配置中定义的
timeZone,如果未定义则回退到系统时区。提取日期后,Hugo 使用文件名的剩余部分生成页面的slug,但前提是您尚未在页面的 front matter 中指定 slug。例如,如果您将文件命名为
2025-02-01-article.md,Hugo 将日期设置为2025-02-01,slug 设置为article。 :git- 文件最后修订的 Git 作者日期。要启用对 Git 作者日期的访问,将
enableGitInfo设置为true,或在构建站点时使用--enableGitInfo标志。
示例
考虑此站点配置:
frontmatter:
date:
- :filename
- :default
lastmod:
- lastmod
- :fileModTime
publishDate:
- :filename
- :default
[frontmatter]
date = [':filename', ':default']
lastmod = ['lastmod', ':fileModTime']
publishDate = [':filename', ':default']
{
"frontmatter": {
"date": [
":filename",
":default"
],
"lastmod": [
"lastmod",
":fileModTime"
],
"publishDate": [
":filename",
":default"
]
}
}
要确定 date 和 publishDate,Hugo 尝试从文件名提取值,回退到默认有序日期字段序列。
要确定 lastmod,Hugo 查找 front matter 中的 lastmod 字段,回退到文件的最后修改时间戳。