页面捆绑
页面捆绑是一种将页面资源进行分组的方法。
页面捆绑可以是以下之一:
- 叶子捆绑(leaf 表示其没有子级)
- 枝捆绑(主页、部分、分类术语、分类列表)
叶子捆绑 | 枝捆绑 | |
---|---|---|
使用情况 | 用于单个页面的内容和附件集合 | 用于部分页面(主页、部分、分类术语、分类列表)的附件集合 |
索引文件名 | 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/
目录中,有四个叶子捆绑:
about
- 这个叶子捆绑位于根级目录(直接在
content
目录下)并且只有一个index.md
。 my-post
- 这个叶子捆绑有
index.md
,另外还有两个内容 Markdown 文件和两个图片文件。
-
图片1、图片2: 这些图片是
my-post
的页面资源,仅在my-post/index.md
的资源中可用。 -
内容1、内容2: 这些内容文件是
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
是一个无头捆绑,其中包含一个或多个名称与 "author*"
匹配的页面资源。
上面示例的解释:
- 获取
some-headless-bundle
页面的“对象”。 - 使用
.Resources.Match
收集该 Page Bundle 中与"author*"
匹配的资源的 slice。 - 循环遍历嵌套页面的 slice,并输出它们的
.Title
和.Content
。
要使叶子捆绑成为无头捆绑,在正文(即 index.md
)的前置元数据中添加以下内容:
content/headless/index.md
---
headless: true
---
+++
headless = true
+++
{
"headless": true
}
无头页面捆绑有许多用例:
- 共享媒体库
- 可重用的页面内容“片段”
枝捆绑
_枝捆绑_是 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/
目录中,有两个枝捆绑(和一个叶子捆绑):
branch-bundle-1
- 此枝捆绑有
_index.md
,另外还有两个其他内容 Markdown 文件和两个图片文件。 branch-bundle-2
- 此枝捆绑具有
_index.md
和一个嵌套的叶子捆绑。