- About Hugo
- Getting Started
- Hugo Modules
-
Content Management
- Content Management Overview
- Organization
- Page Bundles
- Content Formats
- Front Matter
- Build Options
- Page Resources
- Image Processing
- Shortcodes
- Related Content
- Sections
- Content Types
- Archetypes
- Taxonomies
- Summaries
- Links and Cross References
- URL Management
- Menus
- Static Files
- Table of Contents
- Comments
- Multilingual and i18n
- Syntax Highlighting
-
Templates
- Templates Overview
- Introduction
- Template Lookup Order
- Custom Output Formats
- Base Templates and Blocks
- List Page Templates
- Homepage Template
- Section Templates
- Taxonomy Templates
- Single Page Templates
- Content View Templates
- Data Templates
- Partial Templates
- Shortcode Templates
- Local File Templates
- 404 Page
- Menu Templates
- Pagination
- RSS Templates
- Sitemap Template
- Robots.txt
- Internal Templates
- Alternative Templating
- Template Debugging
-
Functions
- Functions Quick Reference
- .AddDate
- .Format
- .Get
- .GetPage
- .HasMenuCurrent
- .IsMenuCurrent
- .Param
- .Render
- .RenderString
- .Scratch
- .Unix
- absLangURL
- absURL
- after
- anchorize
- append
- apply
- base64
- chomp
- complement
- cond
- countrunes
- countwords
- dateFormat
- default
- delimit
- dict
- echoParam
- emojify
- eq
- errorf and warnf
- fileExists
- findRE
- first
- float
- ge
- getenv
- group
- gt
- hasPrefix
- highlight
- hmac
- htmlEscape
- htmlUnescape
- hugo
- humanize
- i18n
- Image Functions
- in
- index
- int
- intersect
- isset
- jsonify
- lang.Merge
- lang.NumFmt
- last
- le
- len
- lower
- lt
- markdownify
- Math
- md5
- merge
- ne
- now
- os.Stat
- partialCached
- path.Base
- path.Dir
- path.Ext
- path.Join
- path.Split
- plainify
- pluralize
- printf
- println
- querify
- range
- readDir
- readFile
- ref
- reflect.IsMap
- reflect.IsSlice
- relLangURL
- relref
- relURL
- replace
- replaceRE
- safeCSS
- safeHTML
- safeHTMLAttr
- safeJS
- safeURL
- seq
- sha
- shuffle
- singularize
- site
- slice
- slicestr
- sort
- split
- string
- strings.Count
- strings.HasSuffix
- strings.Repeat
- strings.RuneCount
- strings.TrimLeft
- strings.TrimPrefix
- strings.TrimRight
- strings.TrimSuffix
- substr
- symdiff
- templates.Exists
- time
- title
- transform.Unmarshal
- trim
- truncate
- union
- uniq
- upper
- urlize
- urls.Parse
- where
- with
- Variables
- Hugo Pipes
- CLI
- Troubleshooting
- Tools
- Hosting & Deployment
- Contribute
- Maintenance
Page Bundles
Page Bundles are a way to group Page Resources .
A Page Bundle can be one of:
- Leaf Bundle (leaf means it has no children)
- Branch Bundle (home page, section, taxonomy terms, taxonomy list)
Leaf Bundle | Branch Bundle | |
---|---|---|
Usage | Collection of content and attachments for single pages | Collection of attachments for section pages (home page, section, taxonomy terms, taxonomy list) |
Index file name | index.md 1 |
_index.md 1 |
Allowed Resources | Page and non-page (like images, pdf, etc.) types | Only non-page (like images, pdf, etc.) types |
Where can the Resources live? | At any directory level within the leaf bundle directory. | Only in the directory level of the branch bundle directory i.e. the directory containing the _index.md (
ref
). |
Layout type | single |
list |
Nesting | Does not allow nesting of more bundles under it | Allows nesting of leaf or branch bundles under it |
Example | content/posts/my-post/index.md |
content/posts/_index.md |
Content from non-index page files… | Accessed only as page resources | Accessed only as regular pages |
Leaf Bundles
A Leaf Bundle is a directory at any hierarchy within the content/
directory, that contains an index.md
file.
Examples of Leaf Bundle organization
content/
├── about
│ ├── index.md
├── posts
│ ├── my-post
│ │ ├── content1.md
│ │ ├── content2.md
│ │ ├── image1.jpg
│ │ ├── image2.png
│ │ └── index.md
│ └── my-other-post
│ └── index.md
│
└── another-section
├── ..
└── not-a-leaf-bundle
├── ..
└── another-leaf-bundle
└── index.md
In the above example content/
directory, there are four leaf
bundles:
- about
- This leaf bundle is at the root level (directly under
content
directory) and has only theindex.md
. - my-post
- This leaf bundle has the
index.md
, two other content Markdown files and two image files. - image1
- This image is a page resource of
my-post
and only available inmy-post/index.md
resources. - image2
- This image is a page resource of
my-post
and only available inmy-post/index.md
resources. - my-other-post
- This leaf bundle has only the
index.md
. - another-leaf-bundle
- This leaf bundle is nested under couple of
directories. This bundle also has only the
index.md
.
Headless Bundle
A headless bundle is a bundle that is configured to not get published anywhere:
- It will have no
Permalink
and no rendered HTML inpublic/
. - It will not be part of
.Site.RegularPages
, etc.
But you can get it by .Site.GetPage
. Here is an example:
{{ $headless := .Site.GetPage "/some-headless-bundle" }}
{{ $reusablePages := $headless.Resources.Match "author*" }}
<h2>Authors</h2>
{{ range $reusablePages }}
<h3>{{ .Title }}</h3>
{{ .Content }}
{{ end }}
In this example, we are assuming the some-headless-bundle
to be a headless
bundle containing one or more page resources whose .Name
matches
"author*"
.
Explanation of the above example:
- Get the
some-headless-bundle
Page “object”. - Collect a slice of resources in this Page Bundle that matches
"author*"
using.Resources.Match
. - Loop through that slice of nested pages, and output their
.Title
and.Content
.
A leaf bundle can be made headless by adding below in the Front Matter
(in the index.md
):
headless = true
There are many use cases of such headless page bundles:
- Shared media galleries
- Reusable page content “snippets”
Branch Bundles
A Branch Bundle is any directory at any hierarchy within the
content/
directory, that contains at least an _index.md
file.
This _index.md
can also be directly under the content/
directory.
Examples of Branch Bundle organization
content/
├── branch-bundle-1
│ ├── branch-content1.md
│ ├── branch-content2.md
│ ├── image1.jpg
│ ├── image2.png
│ └── _index.md
└── branch-bundle-2
├── _index.md
└── a-leaf-bundle
└── index.md
In the above example content/
directory, there are two branch
bundles (and a leaf bundle):
branch-bundle-1
- This branch bundle has the
_index.md
, two other content Markdown files and two image files. branch-bundle-2
- This branch bundle has the
_index.md
and a nested leaf bundle.
-
The
.md
extension is just an example. The extension can be.html
,.json
or any valid MIME type. ↩︎