9abd3043a Add docs for shimming JS libraries 6a1c8dcd7 Update sitemap-template.md (#1245) 37c397332 Update frontends.md a0f86f6df Update configuration.md bb00cb2c1 Update page-bundles.md 773212de6 Restructure and simplify fcba7dddf Some minor clarifications of weight sorting 759b967fc Update configuration-markup.md 56708f0b7 module import path remove slash at end 59f4f4acd Doc: Fix typo in hugo command faacf2e97 Clarify pagination documentation (#1208) d8eb60887 netlify: Bump to 0.75.1 8cedf6231 Merge branch 'temp751' 188e2bf56 releaser: Add release notes to /docs for release of 0.75.1 c96d4b7a3 Update index.md 1a9d192f7 Update index.md 32731b916 Update index.md a5bfa0c9a Restore the ... home page b6850bf96 Release 0.75.0 d6e5e624f releaser: Add release notes to /docs for release of 0.75.0 8cd6b4f47 typo: already -> already 2cb2b22bb Merge commit '534ae9c57a902aea9ed6e62390dec11fa74b7122' e3525de23 docs: Regen docs helper fd746dd83 docs: Regenerate CLI docs e20127980 Add "hugo mod npm pack" 8e82c7ce1 markup/highlight: Add support to linkable line anchors on Chroma 21e94911b markup/asciidocext: Fix AsciiDoc TOC with code 50b8dace5 modules: Add noVendor to module config d05b541fe modules: Make ignoreVendor a glob pattern c946082e7 docs: Update replaceRE func 149054341 docs: Update replace func d917567df docs: Update merge function f1e093c92 docs: Regen CLI docs c7bac967d docs: Regen docs helper 7a38f7a45 Merge commit '7d7771b673e5949f554515a2c236b23192c765c8' 1a5a7263a markup/asciidoc: Add support for .TableOfContents git-subtree-dir: docs git-subtree-split: 9abd3043a9214b390e8cc148f4588bf630620851
7.7 KiB
title | description | date | lastmod | linktitle | keywords | categories | toc | menu | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Page Bundles | Content organization using Page Bundles | 2018-01-24T13:09:00-05:00 | 2018-01-28T22:26:40-05:00 | Page Bundles |
|
|
true |
|
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
.
{{% note %}} The hierarchy depth at which a leaf bundle is created does not matter, as long as it is not inside another leaf bundle. {{% /note %}}
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.
{{% note %}}
Here md
(markdown) is used just as an example. You can use any file
type as a content resource as long as it is a content type recognized by Hugo.
{{% /note %}}
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.
{{% note %}} The hierarchy depth at which a branch bundle is created does not matter. {{% /note %}}
-
The
.md
extension is just an example. The extension can be.html
,.json
or any of any valid MIME type. ↩︎