ページバンドル
ページバンドルを使用したコンテンツ構成
ページバンドルは、ページリソース をグループ化するための方法です。
ページバンドルは、以下のいずれかになります。
- リーフバンドル (「リーフ」は、子がないことを意味します)
- ブランチバンドル (ホームページ、セクション、タクソノミー用語、タクソノミーリスト)
| リーフバンドル | ブランチバンドル | |
|---|---|---|
| 使用方法 | シングルページのコンテンツと添付ファイル集 | セクションページ (トップページ、セクション、タクソノミー用語、タクソノミーリスト) の添付ファイル集 |
| インデックス ファイル名 | index.md 1 |
_index.md 1 |
| 使用可能なリソース | ページと非ページ (画像、PDF など) のタイプ | 非ページ (画像、PDF など) タイプのみ |
| リソースを置く場所 | リーフバンドルのディレクトリ内の任意のディレクトリレベル。 | ブランチバンドルのディレクトリ の ディレクトリレベル、つまり _index.md を含むディレクトリのみ (参照
). |
| レイアウトタイプ | single
|
list
|
| ネスト | その下にさらにバンドルをネストできません | その下にリーフバンドルまたはブランチバンドルを入れ子にできます |
| 例 | content/posts/my-post/index.md |
content/posts/_index.md |
| 非インデックスページ ファイルからのコンテンツ… | ページリソースとしてのみアクセス可能 | 通常のページとしてのみアクセス可能 |
リーフバンドル
リーフバンドル とは、content/ ディレクトリ内の任意の階層にある、index.md ファイルを含むディレクトリのことを指します。
リーフバンドル構成の例
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
上記の例の content/ ディレクトリには、以下の 4 つのリーフバンドルがあります。
about- このリーフバンドルはルートレベル (
contentディレクトリの直下) にあり、index.mdのみを持ちます。 my-post- このリーフバンドルには、
index.mdと他の2つのコンテンツの Markdown ファイル、そして2つの画像ファイルが含まれています。
-
image1, image2: これらの画像は
my-postのページリソースであり、my-post/index.mdリソースでのみ利用可能です。 -
content1, content2: これらのコンテンツファイルは
my-postのページリソースであり、my-post/index.mdリソースでのみ利用可能です。 これらのコンテンツファイルは、個別のページとしてレンダリングされることは ありません 。
my-other-post- このリーフバンドルには
index.mdのみが含まれています。 another-leaf-bundle- このリーフバンドルは、いくつかのディレクトリの下にネストされています。このバンドルには
index.mdのみが含まれています。
ヘッドレス バンドル
ヘッドレス バンドルとは、以下のような、どこにも公開されないように設定されたバンドルのことです。
Permalinkを持たず、public/にレンダリングされた HTML を持ちません。.Site.RegularPagesなどの一部にはなりません。
しかし、.Site.GetPage で取得することができます。以下はその例です。
{{ $headless := .Site.GetPage "/some-headless-bundle" }}
{{ $reusablePages := $headless.Resources.Match "author*" }}
<h2>Authors</h2>
{{ range $reusablePages }}
<h3>{{ .Title }}</h3>
{{ .Content }}
{{ end }}
この例では、some-headless-bundle は、.Name が "author* に一致する 1 つ以上の ページ リソースを含むヘッドレス バンドルであると想定しています。
上記の例の説明::
some-headless-bundleページの “object” を取得します。- この ページバンドル に含まれるリソースのうち、
.Resources.Matchを使って"author*"にマッチするものを スライス として収集します。 - ネストされたページの スライス をループして、その
.Titleと.Contentを出力します。
リーフバンドルは、フロントマター (index.md 内) に以下を追加することでヘッドレス バンドルにすることができます。
このようなヘッドレス ページバンドルには、さまざまな使用例があります。
- メディアギャラリーの共有
- 再利用可能なページコンテンツ “スニペット”
ブランチバンドル
ブランチバンドル とは、content/ ディレクトリ内の任意の階層にある、少なくとも _index.md ファイルを含むディレクトリのことを指します。
この _index.md は、 content/ ディレクトリの直下に置くこともできます。
ブランチバンドル構成の例
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
上記の例の content/ ディレクトリには、2つのブランチバンドル(とリーフバンドル)があります。
branch-bundle-1- このブランチバンドルには、
_index.md、その他 2つのコンテンツの Markdown ファイル、2つの画像ファイルが含まれています。 branch-bundle-2- このブランチバンドルは
_index.mdとネストしたリーフバンドルが含まれています。