Hugo框架中文文档 页面包 Page Bundles
Contents
页面包是组织Page Resources的方式
一个页面包可能是:
- 叶子包Leaf Bundle (叶子意味着没有子元素)
- 分支包Branch Bundle (主页、区块、标签条目、标签列表)
| 叶子包 | 分支包 | |
|---|---|---|
| 用法 | 单一页面的内容和附件的集合 | 区块页面的附件的集合(主页、区块、标签页、标签条目列表) |
| Index文件名 | index.md 1 | _index.md 1 |
| 允许的资源 | 页面和非页面(比如图片、pdf、等)类型 | 仅仅非页面类型(如图片、pdf文档等) |
| 资源所在位置? | 在页子包目录下的任何目录层次内 | 仅在分支包所在目录, 即包含_index.md (参考 ref)的目录 |
| 布局类型 | single | 列表 |
| 允许嵌套 | 不允许在下面包含更多嵌套的包 | 允许下面包含嵌套更多叶子包和分支包 |
| 举例 | content/posts/my-post/index.md | content/posts/_index.md |
| 引用非索引页资源… | 可以作为页面资源访问 | 只能作为常规页面访问 |
叶子包
叶子包 是指在content/目录中任何层次的目录, 改目录必须包含一个 index.md 文件.
叶子包目录/文件组织例子
| |
上面/content目录中,包含了4个叶子包:
- about
- 这个包在根部(直接在
content目录下面)仅有一个索引文件index.md. - my-post
- 这个包有
index.md文件, 另外两个markdown内容文件和两张图片文件。 - image1
- 此图片作为
my-post页面资源 仅仅在my-post/index.md的资源内可以访问 - image2
- 此图片作为
my-post页面资源 仅仅在my-post/index.md的资源内可以访问 This image is a page resource ofmy-postand only available inmy-post/index.mdresources. - my-other-post
- 这个叶子包仅仅具有
index.md. - another-leaf-bundle
- 这个叶子包嵌套在多个目录下面。页仅仅具有一个
index.md.
无名包 Headless Bundle
无名包是配置成不会在任何地点发布的包:
- 没有
Permalink, 不会在public/目录中生成HTML文件 - 不会成为
.Site.RegularPages等变量的一部分.
但是您可以通过 .Site.GetPage访问它. 下面是一个列子:
| |
这个例子中, 我们假设some-headless-bundle 是一个无名包, 它包含一个或者多个 页面 资源,这写资源的.Name 名称和"author*"匹配.
上面例子的解释:
- 获得
some-headless-bundle页面 “对象”. - 对这个 页面包 使用
.Resources.Match获得匹配"author*"的资源的列表切片 - 对资源的列表切片循环, 输出它们的
.Title和.Content.
叶子包可以通过在front matter(在文件index.md中)添加如下配置来设置:
| |
使用无名包的用例有很多,比如:
- 共享的媒体库
- 可重用的页面内容小块 “snippets”
分支包
A Branch Bundle is any directory at any hierarchy within the
content/ directory, that contains at least an _index.md file.
分支包 是指在content/目录中任何层次的任何目录, 该目录必须包含至少一个 _index.md 文件.
这个 _index.md 也可以直接置于content/目录下
分支包组织的例子
| |
上面例子 content/ 目录中, 有两个分支包(还有一个叶子包):
branch-bundle-1- 这个分支包具有
_index.md, 另外两个Markdown内容文件和两个图片文件. branch-bundle-2- 这个分支包具有
_index.md和一个内嵌的叶子包.