Hugo构建站点时页面的构建选项

构建选项都存储在保留的名为_build_的前言设定对象中,具有如下默认值:

1
2
3
4
_build:
  render: always
  list: always
  publishResources: true

render

如果设置成always,页面会作为一个发布的页面处理,保持它专用的输出文件(index.html等) 和 永久链接。

从Hugo版本0.76.0开始我们将这个属性从boolean值扩张成了enum枚举值,有效的值包括是:

never
页面不会被任何页面集合包括。
always (default)
页面部署输出到磁盘,也不会获得相对链接RelPermalink等.
link
页面不会输出到disk,但是会获得一个RelPermalink.

list

从Hugo版本0.68.0开始我们将这个属性从boolean值扩展成了enum枚举值,

有效的值有:

never
页面不会被任何页面集合包括
always (default)
页面会被所有页面集合包括,比如 site.RegularPages$page.Pages
local
页面会被任何 local 页面结合包裹,比如 $page.RegularPages, $page.Pages. 一个案例是创建这个页面可以导航,但是它是无名内容区块。

如果设置为真,页面会处理成项目集合的一部分,在合适的时候,由Hugo的列表方法返回(.Pages, .RegularPages 等)。

publishResources

如果此参数设置为真,包资源会被发布,可以访问。

设置为假,hugo仍然按需发布内容资源(比如,模板调用了资源的.Permalink.RelPermalink函数),不过会忽略其他资源。

任何页面,不论构建选项如何设置,在函数.GetPage中都是可以访问的

说明用例

不发布一个页面

项目需要一个提供“我们是谁”的内容文件来提供前端信息和body部分给主页使用,别的地方不需要使用这个页面。

1
2
3
4
5
# content/who-we-are.md`
title: Who we are
_build:
 list: false
 render: false
1
2
3
4
5
6
{{/* layouts/index.html */}}
<section id="who-we-are">
{{ with site.GetPage "who-we-are" }}
  {{ .Content }}
{{ end }}
</section>

列表展示页面, 而不发布这些页面

网页需要显一些,几百个"感言"作为内容文件但是不发布它们任何一个。

为避免为每个感言设置构建选项,您可以使用[cascade]在感言区块的内容文件设置中级联设置.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#content/testimonials/_index.md
title: Testimonials
# section build options:
_build:
  render: true
# children build options with cascade
cascade:
  _build:
    render: false
    list: true # default
1
2
3
4
5
6
7
8
{{/* layouts/_defaults/testimonials.html */}}
<section id="testimonials">
{{ range first 5 .Pages }}
  <blockquote cite="{{ .Params.cite }}">
    {{ .Content }}
  </blockquote>
{{ end }}
</section>