构建选项
构建选项存储在名为 build
的保留前言对象中,具有以下默认值
content/example/index.md
---
build:
list: always
publishResources: true
render: always
---
+++
[build]
list = 'always'
publishResources = true
render = 'always'
+++
{
"build": {
"list": "always",
"publishResources": true,
"render": "always"
}
}
- list
- 何时将页面包含在页面集合中。指定以下选项之一
-
always
- 将页面包含在所有页面集合中。例如,
site.RegularPages
、.Pages
等。这是默认值。
-
local
- 将页面包含在本地页面集合中。例如,
.RegularPages
、.Pages
等。使用此选项创建完全可导航但无头的内容部分。
-
never
- 不要将页面包含在任何页面集合中。
-
- publishResources
- 适用于页面包,确定是否发布关联的页面资源。指定以下选项之一
-
true
- 始终发布资源。这是默认值。
-
false
- 仅当在模板中调用其
Permalink
、RelPermalink
或Publish
方法时才发布资源。
-
- render
- 何时渲染页面。指定以下选项之一
-
always
- always
-
始终将页面渲染到磁盘。这是默认值。
- link
-
never
- 不要将页面渲染到磁盘,但分配
Permalink
和RelPermalink
值。
-
永远不要将页面渲染到磁盘,并将其从所有页面集合中排除。
任何页面,无论其构建选项如何,始终可以通过使用.Page.GetPage
或.Site.GetPage
方法获得。
content/
├── headless/
│ ├── a.jpg
│ ├── b.jpg
│ └── index.md <-- leaf bundle
└── _index.md <-- home page
创建一个未发布的页面,其内容和资源可以包含在其他页面中。
---
build:
list: never
publishResources: false
render: never
title: Headless page
---
+++
title = 'Headless page'
[build]
list = 'never'
publishResources = false
render = 'never'
+++
{
"build": {
"list": "never",
"publishResources": false,
"render": "never"
},
"title": "Headless page"
}
在前言中设置构建选项
content/headless/index.md
{{ with .Site.GetPage "/headless" }}
{{ .Content }}
{{ range .Resources.ByType "image" }}
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
{{ end }}
{{ end }}
在主页上包含内容和图像
public/
├── headless/
│ ├── a.jpg
│ └── b.jpg
└── index.html
layouts/_default/home.html
- 发布的站点将具有以下结构
- 在上面的示例中,请注意
Hugo 没有为该页面发布 HTML 文件。
尽管在前言中将 publishResources
设置为 false
,但 Hugo 发布了页面资源,因为我们在每个资源上调用了RelPermalink
方法。这是预期的行为。
content/
├── headless/
│ ├── note-1/
│ │ ├── a.jpg
│ │ ├── b.jpg
│ │ └── index.md <-- leaf bundle
│ ├── note-2/
│ │ ├── c.jpg
│ │ ├── d.jpg
│ │ └── index.md <-- leaf bundle
│ └── _index.md <-- branch bundle
└── _index.md <-- home page
创建一个未发布的部分,其内容和资源可以包含在其他页面中。
---
cascade:
- build:
list: local
publishResources: false
render: never
title: Headless section
---
+++
title = 'Headless section'
[[cascade]]
[cascade.build]
list = 'local'
publishResources = false
render = 'never'
+++
{
"cascade": [
{
"build": {
"list": "local",
"publishResources": false,
"render": "never"
}
}
],
"title": "Headless section"
}
在前言中设置构建选项,使用 cascade
关键字将值“级联”到后代页面。
在前言中设置构建选项
content/headless/index.md
{{ with .Site.GetPage "/headless" }}
{{ range .Pages }}
{{ .Content }}
{{ range .Resources.ByType "image" }}
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
{{ end }}
{{ end }}
{{ end }}
在主页上包含内容和图像
public/
├── headless/
│ ├── note-1/
│ │ ├── a.jpg
│ │ └── b.jpg
│ └── note-2/
│ ├── c.jpg
│ └── d.jpg
└── index.html
layouts/_default/home.html
- 发布的站点将具有以下结构
- content/headless/_index.md
在上面的前言中,请注意我们将 list
设置为 local
,以便将后代页面包含在本地页面集合中。
尽管在前言中将 publishResources
设置为 false
,但 Hugo 正确发布了页面资源,因为我们在每个资源上调用了RelPermalink
方法。这是预期的行为。
content/
├── glossary/
│ ├── _index.md
│ ├── bar.md
│ ├── baz.md
│ └── foo.md
└── _index.md
---
build:
render: always
cascade:
- build:
list: local
publishResources: false
render: never
title: Glossary
---
+++
title = 'Glossary'
[build]
render = 'always'
[[cascade]]
[cascade.build]
list = 'local'
publishResources = false
render = 'never'
+++
{
"build": {
"render": "always"
},
"cascade": [
{
"build": {
"list": "local",
"publishResources": false,
"render": "never"
}
}
],
"title": "Glossary"
}
发布一个章节页面,但不发布后代页面。例如,创建一个词汇表
content/glossary/_index.md
<dl>
{{ range .Pages }}
<dt>{{ .Title }}</dt>
<dd>{{ .Content }}</dd>
{{ end }}
</dl>
在主页上包含内容和图像
public/
├── glossary/
│ └── index.html
└── index.html
渲染词汇表
layouts/glossary/list.html
content/
├── books/
│ ├── _index.md
│ ├── book-1.md
│ └── book-2.md
└── _index.md
---
build:
list: never
render: never
title: Books
---
+++
title = 'Books'
[build]
list = 'never'
render = 'never'
+++
{
"build": {
"list": "never",
"render": "never"
},
"title": "Books"
}
在主页上包含内容和图像
public/
├── books/
│ ├── book-1/
│ │ └── index.html
│ └── book-2/
│ └── index.html
└── index.html
发布一个章节的后代页面,而不发布章节页面本身。
content/books/_index.md
与其为短代码提供外部文档,不如包含一个“内部”部分,该部分在构建生产站点时会被隐藏。
content/
├── internal/
│ ├── shortcodes/
│ │ ├── _index.md
│ │ ├── shortcode-1.md
│ │ └── shortcode-2.md
│ └── _index.md
├── reference/
│ ├── _index.md
│ ├── reference-1.md
│ └── reference-2.md
├── tutorials/
│ ├── _index.md
│ ├── tutorial-1.md
│ └── tutorial-2.md
└── _index.md
在 front matter 中设置构建选项,使用 cascade
关键字将值“级联”到子页面,并使用 target
关键字来定位生产环境。
content/internal/_index.md。
cascade:
- _target:
environment: production
build:
list: never
render: never
title: Internal
title = 'Internal'
[[cascade]]
[cascade._target]
environment = 'production'
[cascade.build]
list = 'never'
render = 'never'
{
"cascade": [
{
"_target": {
"environment": "production"
},
"build": {
"list": "never",
"render": "never"
}
}
],
"title": "Internal"
}
生产站点将具有以下结构
public/
├── reference/
│ ├── reference-1/
│ │ └── index.html
│ ├── reference-2/
│ │ └── index.html
│ └── index.html
├── tutorials/
│ ├── tutorial-1/
│ │ └── index.html
│ ├── tutorial-2/
│ │ └── index.html
│ └── index.html
└── index.html