Front matter 前言设定 允许您将元数据绑定到内容类型的实例—嵌入到内容文件中—这也是Hugo众多特性中的一个, 这些特性使得Hugo无比强大

前言设定格式

Hugo支持四种前言设定格式,每种格式都有它们自己的标记符号.

TOML
+++ 标记符号开始和结束
YAML
--- 标记符号开始和结束
JSON
一个JSO格式的对象由’{’ 和 ‘}‘包围, 后面是一新行.
ORG
一组Org mode 关键字, 格式是 ‘#+KEY: VALUE’. 任何不以 #+ 开头的一行结束前言设定部分. 键值的值可以是字符串(#+KEY: VALUE)或者由空白分隔的字符串列表(#+KEY[]: VALUE_1 VALUE_2).

例子

1
2
3
4
5
6
7
8
9
title = "spf13-vim 3.0 release and new website"
description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ]
date = "2012-04-06"
categories = [
  "Development",
  "VIM"
]
slug = "spf13-vim-3-0-release-and-new-website"

前言设定变量

预定义变量

有一些Hugo可以处理的预定义的变量。 参考页面变量 Page Variables获得 如何在模板中调用这些众多预定义变量的方法.

别名 aliases
一个或者多个将在输出目录结构中创建的别名的数组(比如, 改名后内容的原发布路径). 详细信息参考别名
音频 audio
页面相关的音频文件路径的数组; 短代码opengraph (参考internal template) 使用这些信息来填充 og:audio
级联信息 cascade
前言设定的键值对的字典,它们的值会传递给页面的后代,除非被后代改写或者被后代的近端祖先的cascade改写. 详细信息参考前言设定级联.
日期 date
页面的日期, 这通常由前言设定的date字段读取, 也是可配置的
description
内容的描述.
draft
如果设定为true, 内容不会被输出, 除非传递给hugo命令--buildDrafts标记.
expiryDate
过期日期,过了这个日期,内容不会被hugo发布。过期内容不会被发布除非给hugo命令传递了--buildExpired标记参数.
headless
设置为真,将叶子包设置为无名包.
images
页面相关的图像路径数组。内部模板internal templates_internal/twitter_cards.html 会使用这个变量.

isCJKLanguage 是否中日韩文 :设置为真,hugo会将内容作为中日韩文处理,然后.Summary and .WordCount 在中日韩语言中会正确工作.

keywords 关键字
内容的元数据关键字.
layout
hugo从布局查询顺序中选择用来呈现内容的布局。如果在前言设定中没有声明layout,hugo会在布局目录中查找和内容区块同名的布局文件。参考 “定义内容类型”
lastmod
内容最后修改时间
linkTitle
创建内容链接使用的title。如果设置了linkTitle,Hugo默认会在 title之前使用linktitle. Hugo也能够对内容列表按照linktitle排序.
markup
实验性质的设置; 声明 "rst" 为 reStructuredText (需要rst2html) 或者 "md" (默认) 为 Markdown.
outputs
允许声明内容特定的输出格式。请参考输出格式.
publishDate
发布日期. 如果此日期在未来,内容不会被呈现, 除非--buildFuture 标记被传递给hugo.
resources
配置页面包资源。参考Page Resources.
series
an array of series this page belongs to, as a subset of the series taxonomy; used by the opengraph internal template to populate og:see_also.
slug
呈现为输出的URL的尾部。在前言设定的slug值会覆盖从文件名称推断出来的URL的对应部分.

summary :在.Summary页面变量中提供文章的summary时使用的文本。细节请参考content-summaries部分文档。

title
内容的标题
type
内容的类型。这个值如果在前言设定没声明,会自动从目录(区块)推断出来
url
内容相对于web root的完整路径。这个设置不对内容文件的路径做任何假设。也忽略多语言特性中的任何语言前缀。
videos
页面相关的视频路径数组, opengraph 内部模板 使用这些信息填充 og:video.
weight
列表内容排序时使用. 值小的weight具有更高优先级。所以具有小值的内容会先出现。如果设置这个参数, weight应该是非零值, 0会被解析为未设置weight值.
<taxonomies>
复数形式的索引的域名称。参考上面前言设定例子中的 tagscategories. _注意复数形式的用户定义的标签不能和hugo预定义的任何前言设定变量相同。
1
如果 `slug`  `url` 没设置,并且在站点 `config`文件中没定义[permalinks](https://gohugo.io/content-management/urls/#permalinks),Hugo会使用内容文件的名称去创建输出的URL。参考 [内容组织](https://gohugo.io/content-management/organization) 学习Hugo中路径的解释, 以及 [URL Management](https://gohugo.io/content-management/urls/)学习如何定制Hugo的默认行为.

用户定义的设置键值

可以在前言设定中随意添加域以满足建立站点需求. 这些用户定义的键值对可以在站点模板中通过 .Params 变量访问使用.

下面的域可以相应的通过 .Params.include_toc.Params.show_comments 访问。 变量Variables 部分提供了关于使用Hugo的页面变量和站点级别变量的更多信息.

1
2
include_toc: true
show_comments: false

前言设定级联设置

任何节点和区块可以向下传递任何在只要保留在 cascade 前言设定键下面的前言设定值。

Target Specific Pages 针对特定目标的页面

从Hugo 0.76开始,cascade区块可以由可选的_target关键字切块, 允许以不同页面集合为目标设定多个cascade值.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
title ="Blog"
[[cascade]]
background = "yosemite.jpg"
[cascade._target]
path="/blog/**"
lang="en"
kind="page"
[[cascade]]
background = "goldenbridge.jpg"
[cascade._target]
kind="section"

_target 可以使用的关键词在:

path
和在/content之下的内容路径匹配的Glob模式。期望的类Unix的斜杠。请注意这是虚拟路径, 所以它从加载的根开始。模式匹配支持双星号,因此您可以使用类似 /blog/*/** 的模式去匹配任何第三级内容或它们后代。
kind
模式字符串和页面类型(比如{home, section})匹配
lang
模式字符串和页面语言(比如{en, sv})匹配

上面的任何一条可以省略.

例子

In content/blog/_index.md

1
2
3
title: Blog
cascade:
  banner: images/typewriter.jpg

上面例子中区块Blog中页面和后代页面在调用 .Params.banner 会返回 images/typewriter.jpg,除非:

  • 后代页面声明了自己的 banner 值集合
  • 或者更近的祖先声明了 cascade.banner值集合

通过前言设定对内容排序

可以通过在页面的前言设定中对页面赋值内容特定的weight. 这些值对于列表的排序ordering特别有用。 可以使用weight对内容排序,以及对标签内内容使用<TAXONOMY>_weight进行排序。 参考Ordering and Grouping Hugo Lists 获得早list视图中组织内容时 weight的应用方式.

重载全局的Markdown配置

可以在内容的前言设定中设置一些Markdown输出的选项,作为全局设定的设置覆盖。

前言设定格式规范