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-post
and only available inmy-post/index.md
resources. - 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
和一个内嵌的叶子包.
这个
.md
扩展仅仅作为示例。扩展也可以是.html
,.json
或者任何有效的 MIME 类型. ↩︎