hugo/docs/content/en/content-management/build-options.md
2023-07-29 11:17:28 +02:00

3 KiB

title description keywords categories menu toc weight aliases
Build options Build options help define how Hugo must treat a given page when building the site.
build
content
front matter
page resources
fundamentals
content management
docs
parent weight
content-management 70
true 70
/content/build-options/

They are stored in a reserved front matter object named _build with the following defaults:

{{< code-toggle >}} _build: render: always list: always publishResources: true {{< /code-toggle >}}

render

If always, the page will be treated as a published page, holding its dedicated output files (index.html, etc...) and permalink.

Valid values are:

  • never
    The page will not be included in any page collection.
  • always (default)
    The page will be rendered to disk and get a RelPermalink etc.
  • link
    The page will be not be rendered to disk, but will get a RelPermalink.

list

Valid values are:

  • never
    The page will not be included in any page collection.
  • always (default)
    The page will be included in all page collections, e.g. site.RegularPages, .Pages.
  • local
    The page will be included in any local page collection, e.g. .RegularPages, .Pages. One use case for this would be to create fully navigable, but headless content sections.

publishResources

If set to true (default) the Bundle's Resources will be published. Setting this to false will still publish Resources on demand (when a resource's .Permalink or .RelPermalink is invoked from the templates) but will skip the others.

{{% note %}} Any page, regardless of their build options, will always be available using the .GetPage methods. {{% /note %}}

Illustrative use cases

Not publishing a page

Project needs a "Who We Are" content file for front matter and body to be used by the homepage but nowhere else.

{{< code-toggle file="content/who-we-are.md" fm=true copy=false >}} title: Who we are _build: list: false render: false {{< /code-toggle >}}

{{< code file="layouts/index.html" copy=false >}}

{{ with site.GetPage "who-we-are" }} {{ .Content }} {{ end }}
{{< /code >}}

Listing pages without publishing them

Website needs to showcase a few of the hundred "testimonials" available as content files without publishing any of them.

To avoid setting the build options on every testimonials, one can use cascade on the testimonial section's content file.

{{< code-toggle >}} title: Testimonials _build: render: true cascade: _build: render: false list: true # default {{< /code-toggle >}}

{{< code file="layouts/_defaults/testimonials.html" copy=false >}}

{{ range first 5 .Pages }}
{{ .Content }}
{{ end }}
{{< /code >}}