mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
83bef6955e
e161ea09d Add one more Chinese file to workaround reflect: Zero(nil) b595b3a21 Add more Chinese translation 56e4e95d9 Use lang.Merge to "fill in the gaps" for untranslated pages ef079406c Merge commit '650fac3a4e7d256f4505402ab44cfc3c804b8dea' 650fac3a4 Squashed 'themes/gohugoioTheme/' changes from a1768ebb..f31a3dc8 322eff899 Add Chinese language for menus d90b886e0 Fix Markdown table syntax in previous commit 737f3dfca Update the leaf bundle vs branch bundle table 09fa1bc4e Clarify that `.Now` is obsolete 879ea3f6a Make release notes somewhat more consistent 0113e2051 Move 0.40.2-relnotes into content/en/news 77578f5bf Move content/ into new contentDir content/en/ 4dcf7c709 Fix "reflect: Zero(nil)" error in showcase 63dd25505 Release 0.40.2 2076c0d56 releaser: Prepare repository for 0.41-DEV 070fe565e releaser: Add release notes to /docs for release of 0.40.2 4ce52e913 releaser: Bump versions for release of 0.40.2 41907c487 Fix typos in syntax-highlighting.md 91753ef3d Add missing backtick b77274301 Remove duplicate release notes (0.27, 0.27.1, 0.35) 6e00da316 Remove obsolete content/release-notes/ directory 00a6d8c02 Change en dash back to `--` in 0.38.2-relnotes 51b32dc00 Update archetypes.md d0e5c2307 Release 0.40.1 4538a6d5b releaser: Prepare repository for 0.41-DEV 91b391d70 releaser: Add release notes to /docs for release of 0.40.1 e0979d143 releaser: Bump versions for release of 0.40.1 7983967c2 Clean images fe3fdd77d Polish showcase for Flesland Flis e6dde3989 Showcase - Flesland Flis AS by Absoluttweb 73aa62290 Revive @spf13's special Hugo font add67b335 Release Hugo 0.40 c0a26e5a6 Merge branch 'temp40' beeabaaae releaser: Prepare repository for 0.41-DEV e67d5e985 releaser: Add release notes to /docs for release of 0.40 6cdd95273 releaser: Bump versions for release of 0.40 bee21fb9b Revive the other Hugo logos too 4f45e8fe1 Fix the link type attribute for RSS in examples 8c67dc89a Fix example in delimit doc e7f6c00d5 Revive the logo used on the forum 82b0cd26e Merge commit 'a215abf70e018f4bf40d6c09d8bd148d8684b33d' 119c8ca58 Merge commit 'd2ec1a06df8ab6b17ad05cb008d5701b40327d47' db4683bd2 Improve .Get docs 05260b886 .Get function: fix syntax signature git-subtree-dir: docs git-subtree-split: e161ea09d33e3199f4998e4d2e9068d5a850f042
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 "page" "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.
|