前置格式
前置格式允许您将元数据附加到[内容类型]的实例中-即嵌入在内容文件中,并且是Hugo赋予其强大功能的众多特性之一。
前置格式格式
Hugo支持四种前置格式格式,每种格式都有其自己的标识标记。
- TOML
- 标识符为开放和关闭的
+++
。 - YAML
- 标识符为开放和关闭的
---
。 - JSON
- 由单个由
{
和}
括起来的JSON对象组成,后跟一个新行。 - ORG
- Org模式关键字组,格式为
#+KEY: VALUE
。任何不以#+
开头的行都会结束前置格式部分。 关键字值可以是字符串(#+KEY: VALUE
)或以空格分隔的字符串列表(#+KEY[]: VALUE_1 VALUE_2
)。
示例
categories:
- Development
- VIM
date: "2012-04-06"
description: spf13-vim是适用于Vim的跨平台vim插件和资源分发。
slug: spf13-vim-3-0-release-and-new-website
tags:
- .vimrc
- plugins
- spf13-vim
- vim
title: spf13-vim 3.0版本发布和新网站
categories = ['Development', 'VIM']
date = '2012-04-06'
description = 'spf13-vim是适用于Vim的跨平台vim插件和资源分发。'
slug = 'spf13-vim-3-0-release-and-new-website'
tags = ['.vimrc', 'plugins', 'spf13-vim', 'vim']
title = 'spf13-vim 3.0版本发布和新网站'
{
"categories": [
"Development",
"VIM"
],
"date": "2012-04-06",
"description": "spf13-vim是适用于Vim的跨平台vim插件和资源分发。",
"slug": "spf13-vim-3-0-release-and-new-website",
"tags": [
".vimrc",
"plugins",
"spf13-vim",
"vim"
],
"title": "spf13-vim 3.0版本发布和新网站"
}
前置格式变量
预定义
Hugo有一些预定义的变量。请参阅页面变量了解如何在模板中调用这些预定义变量的方法。
- aliases
- 一个包含一个或多个别名(例如已重命名内容的旧发布路径)的数组,这些别名将在输出目录结构中创建。有关详细信息,请参阅别名。
- audio
- 与页面相关的音频文件路径数组;
opengraph
内部模板使用它来填充og:audio
。 - cascade
- 一组前置格式键的映射,其值会传递给页面的子页,除非被自身或更近的祖先级别的cascade覆盖。有关详细信息,请参阅前置格式级联 。
- date
- 分配给此页面的日期时间。通常从前置格式的
date
字段获取此值,但此行为是可配置的。 - description
- 内容的描述。
- draft
- 如果为
true
,则只有在向hugo
命令传递了--buildDrafts
标志时,内容才会被呈现。 - expiryDate
- 内容不再由Hugo发布的日期时间;过期内容只有在向
hugo
命令传递了--buildExpired
标志时才会呈现。 - headless
- 如果为
true
,则将叶子包设置为无头。 - images
- 与页面相关的图像文件路径数组;用于内部模板,如
_internal/twitter_cards.html
。 - isCJKLanguage
- 如果为
true
,Hugo将明确将内容视为CJK语言;在CJK语言中.Summary
和.WordCount
都能正确工作。 - keywords
- 内容的元关键字。
- layout
- 当渲染内容时,Hugo应从查找顺序中选择的布局。如果在前置格式中未指定
type
,Hugo将在与内容部分对应的布局目录中查找相同名称的布局。请参阅内容类型。 - lastmod
- 内容最后修改的日期时间。
- linkTitle
- 用于创建到内容的链接;如果设置了,Hugo默认使用
title
前的linkTitle
。 - markup
- 实验性; 指定
"rst"
以获取reStructuredText(需要rst2html
)或"md"
(默认)以获取Markdown。 - outputs
- 允许您指定特定于内容的输出格式。请参阅输出格式。
- publishDate
- 如果发布日期在未来,只有在向
hugo
命令传递了--buildFuture
标志时才会呈现内容。 - resources
- 用于配置页面包资源。请参阅页面资源。
- series
- 此页面所属系列的数组,作为
series
分类法的子集;被opengraph
内部模板用于填充og:see_also
。 - slug
- 覆盖URL路径的最后一段。不适用于部分页面。有关详细信息,请参阅URL管理。
- summary
- 在
.Summary
页面变量中提供文章摘要时使用的文本;有关详细信息,请参阅内容摘要部分。 - title
- 内容的标题。
- type
- 内容的类型;如果未在前置格式中指定,此值将自动从目录(即[部分])中派生。
- url
- 覆盖整个URL路径。适用于常规页面和部分页面。有关详细信息,请参阅URL管理。
- videos
- 与页面相关的视频文件路径数组;
opengraph
内部模板使用它来填充og:video
。 - weight
- 用于对内容排序。较低的权重会更优先显示。如果设置了权重,则权重应为非零,因为0会被解释为未设置的权重。
- <taxonomies>
- 索引的复数形式的字段名称。请参阅上述前置格式示例中的
tags
和categories
。请注意,用户定义的分类法的复数形式不能与任何预定义的前置格式变量相同。
用户定义的
您可以将字段任意添加到前置格式中,以满足您的需求。这些用户定义的键值对被放置在单个.Params
变量中,用于在模板中使用。
include_toc
和 show_comments
可以通过 .Params.include_toc
和 .Params.show_comments
使用。有关在模板中使用Hugo的页面级和站点级变量的更多信息,请参阅[变量]章节。
include_toc: true
show_comments: false
include_toc = true
show_comments = false
{
"include_toc": true,
"show_comments": false
}
前置格式级联
只要在保留的cascade
前置格式键下方定义,任何节点或部分都可以将一组前置格式值传递给其子代。
针对特定页面
cascade
块可以是一个带有可选_target
关键字的片段,允许多个cascade
值针对不同的页面集进行定位。
cascade:
- _target:
kind: page
lang: en
path: /blog/**
background: yosemite.jpg
- _target:
kind: section
background: goldenbridge.jpg
title: Blog
title = 'Blog'
[[cascade]]
background = 'yosemite.jpg'
[cascade._target]
kind = 'page'
lang = 'en'
path = '/blog/**'
[[cascade]]
background = 'goldenbridge.jpg'
[cascade._target]
kind = 'section'
{
"cascade": [
{
"_target": {
"kind": "page",
"lang": "en",
"path": "/blog/**"
},
"background": "yosemite.jpg"
},
{
"_target": {
"kind": "section"
},
"background": "goldenbridge.jpg"
}
],
"title": "Blog"
}
可用于 _target
的关键字:
- path
- Glob模式,用于匹配/content下方的内容路径。期望的是类Unix的斜杠。匹配支持双星号,因此可以匹配像
/blog/*/**
这样的模式,以匹配三级及以下的内容。 - kind
- 匹配页面的类型的Glob模式,例如
{home,section}
。 - lang
- 匹配页面的语言的Glob模式,例如
{en,sv}
。 - environment
- 匹配构建环境的Glob模式,例如
{production,development}
。
上述的任何一个都可以省略。
示例
在content/blog/_index.md
中
cascade:
banner: images/typewriter.jpg
title: Blog
title = 'Blog'
[cascade]
banner = 'images/typewriter.jpg'
{
"cascade": {
"banner": "images/typewriter.jpg"
},
"title": "Blog"
}
有了上面的示例,当调用.Params.banner
时,Blog部分页面及其子页面将返回images/typewriter.jpg
,除非:
- 该子页面设置了自己的
banner
值 - 或更近的祖先节点设置了自己的
cascade.banner
值。
通过前置格式排序内容
您可以在内容的前置格式中为其分配特定的weight
。这些值对于列表视图中的排序特别有用。您可以使用weight
对内容进行排序,并使用<TAXONOMY>_weight
的惯例来对分类法内的内容进行排序。有关如何使用weight
来组织列表视图中的内容的详细信息,请参阅Hugo列表排序和分组。
覆盖全局Markdown配置
可以在内容的前置格式中设置一些Markdown渲染选项,作为项目配置中设置的渲染选项的覆盖。