页面捆绑
页面捆绑是一种将页面资源进行分组的方法。
页面捆绑可以是以下之一:
- 叶子捆绑(leaf 表示其没有子级)
- 枝捆绑(主页、部分、分类术语、分类列表)
| 叶子捆绑 | 枝捆绑 | |
|---|---|---|
| 使用情况 | 用于单个页面的内容和附件集合 | 用于部分页面(主页、部分、分类术语、分类列表)的附件集合 | 
| 索引文件名 | index.md1 | _index.md1 | 
| 允许的资源类型 | 页面和非页面类型(如图片、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和一个嵌套的叶子捆绑。