mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
766085c2dc
81847981f Add notes for installing "extended" Sass/SCSS version 02da3bb58 Include usage of disqus internal template 9b53380c4 Update sitemap-template.md f3417dd52 Update sitemap-template.md aae33d9a8 Update sitemap-template.md 834edc205 Release 0.45.1 fb93ab905 Merge branch 'temp451' 79f350906 releaser: Prepare repository for 0.46-DEV 25cd2352c releaser: Add release notes to /docs for release of 0.45.1 e60377c71 releaser: Bump versions for release of 0.45.1 873f6dce2 Update features.md ecc116642 Update link for Azure cb88c3185 Added .Site.Home to Site Variiables (#541) 975a88791 Document includePaths 56c4e332f Release Hugo 0.45 c22b25210 Merge branch 'temp45' 0ffad3ada releaser: Prepare repository for 0.46-DEV 08d494cc3 releaser: Add release notes to /docs for release of 0.45 ad546ba45 releaser: Bump versions for release of 0.45 971c46bb2 Fixed "Sratch" to become "Scratch" on line 44 a28255bf3 Clarify the meaning of .Pages vs .Site.Pages 127aeee09 docs: Update ref, relref, GetPage docs 350d674ec resources.Concat doesn't have an alias 1fd1219b0 docs: Document refLinksErrorLevel and refLinksNotFoundURL af2252ff6 Merge commit 'a3535c8486b2ce762b1a8a9c30b03985c3e02cee' a11486805 Merge commit 'b6b37a1f00f808f3c0d2715f65ca2d3091f36495' 1c8896cb1 Fix addkit link to account for i18n 468aef3fc releaser: Prepare repository for 0.45-DEV c6f4b97a2 releaser: Add release notes to /docs for release of 0.44 d3985afb7 releaser: Bump versions for release of 0.44 2c59a330c Adjust release notes 83966769a releaser: Prepare repository for 0.44-DEV e539613f7 releaser: Add release notes to /docs for release of 0.43 2bf648944 releaser: Bump versions for release of 0.43 d9d6e4bf7 Fix typos d6798afda Merge commit '98293eaa1570b5aff4452021c8b6d6c8560b3f06' 37cc52261 Add a newScratch template func 1f7f09613 Merge branch 'release-0.42.2' 857b0b26a releaser: Prepare repository for 0.43-DEV git-subtree-dir: docs git-subtree-split: 81847981f1f2cb1ebc83d42d275a2afb2bb22df1
185 lines
7.6 KiB
Markdown
185 lines
7.6 KiB
Markdown
---
|
||
title : "Page Bundles"
|
||
description : "Content organization using Page Bundles"
|
||
date : 2018-01-24T13:09:00-05:00
|
||
lastmod : 2018-01-28T22:26:40-05:00
|
||
linktitle : "Page Bundles"
|
||
keywords : ["page", "bundle", "leaf", "branch"]
|
||
categories : ["content management"]
|
||
toc : true
|
||
menu :
|
||
docs:
|
||
identifier : "page-bundles"
|
||
parent : "content-management"
|
||
weight : 11
|
||
---
|
||
|
||
Page Bundles are a way to group [Page Resources](/content-management/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` [^fn:1] | `_index.md` [^fn: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](https://discourse.gohugo.io/t/question-about-content-folder-structure/11822/4?u=kaushalmodi)). |
|
||
| 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 {#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 {#examples-of-leaf-bundle-organization}
|
||
|
||
```text
|
||
content/
|
||
├── about
|
||
│ ├── index.md
|
||
├── posts
|
||
│ ├── my-post
|
||
│ │ ├── content1.md
|
||
│ │ ├── content2.md
|
||
│ │ ├── image1.jpg
|
||
│ │ ├── image2.png
|
||
│ │ └── index.md
|
||
│ └── my-another-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 the `index.md`.
|
||
|
||
my-post
|
||
: This leaf bundle has the `index.md`, two other content
|
||
Markdown files and two image files.
|
||
|
||
my-another-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 {#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 in `public/`.
|
||
- It will not be part of `.Site.RegularPages`, etc.
|
||
|
||
But you can get it by `.Site.GetPage`. Here is an example:
|
||
|
||
```go-html-template
|
||
{{ $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:
|
||
|
||
1. Get the `some-headless-bundle` Page "object".
|
||
2. Collect a *slice* of resources in this *Page Bundle* that matches
|
||
`"author*"` using `.Resources.Match`.
|
||
3. 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`):
|
||
|
||
```toml
|
||
headless = true
|
||
```
|
||
|
||
{{% note %}}
|
||
Only leaf bundles can be made headless.
|
||
{{% /note %}}
|
||
|
||
There are many use cases of such headless page bundles:
|
||
|
||
- Shared media galleries
|
||
- Reusable page content "snippets"
|
||
|
||
|
||
## Branch Bundles {#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 {#examples-of-branch-bundle-organization}
|
||
|
||
```text
|
||
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 %}}
|
||
|
||
[^fn:1]: The `.md` extension is just an example. The extension can be `.html`, `.json` or any of any valid MIME type.
|