页面资源
页面资源只能从页面包(page bundles)访问,这些目录具有根目录下的index.md
或_index.md
文件。页面资源仅对与其捆绑的页面可用。
在这个例子中, first-post
是一个页面包,它可以访问到10个页面资源,包括音频,数据,文档,图片和视频。虽然second-post
也是一个页面包,但它没有页面资源,无法直接访问与first-post
相关联的页面资源。
content
└── post
├── first-post
│ ├── images
│ │ ├── a.jpg
│ │ ├── b.jpg
│ │ └── c.jpg
│ ├── index.md (页面包的根目录)
│ ├── latest.html
│ ├── manual.json
│ ├── notice.md
│ ├── office.mp3
│ ├── pocket.mp4
│ ├── rating.pdf
│ └── safety.txt
└── second-post
└── index.md (页面包的根目录)
属性
- ResourceType
- 资源的媒体类型的主要类型。例如,MIME类型为
image/jpeg
的文件的ResourceType为image
。一个Page
类型的资源的ResourceType的值是page
。 - Name
- 默认值是文件名(相对于所属页面)。可以在前置元数据中设置。
- Title
- 默认值与
.Name
相同。可以在前置元数据中设置。 - Permalink
- 资源的绝对URL。类型为
page
的资源没有值。 - RelPermalink
- 资源的相对URL。类型为
page
的资源没有值。 - Content
- 资源本身的内容。对于大多数资源,这返回一个包含文件内容的字符串。可以使用它来创建内联资源。
{{ with .Resources.GetMatch "script.js" }}
<script>{{ .Content | safeJS }}</script>
{{ end }}
{{ with .Resources.GetMatch "style.css" }}
<style>{{ .Content | safeCSS }}</style>
{{ end }}
{{ with .Resources.GetMatch "img.png" }}
<img src="data:{{ .MediaType.Type }};base64,{{ .Content | base64Encode }}">
{{ end }}
- MediaType.Type
- 资源的媒体类型(以前称为MIME类型)(例如
image/jpeg
)。 - MediaType.MainType
- 资源的媒体类型的主要类型(例如
image
)。 - MediaType.SubType
- 资源类型的子类型(例如
jpeg
)。这可能与文件后缀相对应,也可能不相对应。 - MediaType.Suffixes
- 资源的媒体类型的可能文件后缀的列表(例如
[jpg jpeg jpe jif jfif]
)。
方法
- ByType
- 返回给定类型的页面资源。
{{ .Resources.ByType "image" }}
- Match
- 返回所有匹配给定模式的页面资源(作为一个切片)。匹配不区分大小写。
{{ .Resources.Match "images/*" }}
- GetMatch
- 与
Match
相同,但只返回第一个匹配项。
模式匹配
// 使用Match/GetMatch查找这个images/sunset.jpg ?
.Resources.Match "images/sun*" ✅
.Resources.Match "**/sunset.jpg" ✅
.Resources.Match "images/*.jpg" ✅
.Resources.Match "**.jpg" ✅
.Resources.Match "*" 🚫
.Resources.Match "sunset.jpg" 🚫
.Resources.Match "*sunset.jpg" 🚫
页面资源元数据
页面资源的元数据由对应页面的前置元数据中名为resources
的数组/表参数管理。您可以使用通配符批量分配值。
- name
- 设置返回的
Name
的值。
- title
- 设置返回的
Title
的值。 - params
- 自定义键/值对的映射。
资源元数据示例
date: "2018-01-25"
resources:
- name: header
src: images/sunset.jpg
- params:
icon: photo
src: documents/photo_specs.pdf
title: Photo Specifications
- src: documents/guide.pdf
title: Instruction Guide
- src: documents/checklist.pdf
title: Document Checklist
- src: documents/payment.docx
title: Proof of Payment
- name: pdf-file-:counter
params:
icon: pdf
src: '**.pdf'
- params:
icon: word
src: '**.docx'
title: Application
date = '2018-01-25'
title = 'Application'
[[resources]]
name = 'header'
src = 'images/sunset.jpg'
[[resources]]
src = 'documents/photo_specs.pdf'
title = 'Photo Specifications'
[resources.params]
icon = 'photo'
[[resources]]
src = 'documents/guide.pdf'
title = 'Instruction Guide'
[[resources]]
src = 'documents/checklist.pdf'
title = 'Document Checklist'
[[resources]]
src = 'documents/payment.docx'
title = 'Proof of Payment'
[[resources]]
name = 'pdf-file-:counter'
src = '**.pdf'
[resources.params]
icon = 'pdf'
[[resources]]
src = '**.docx'
[resources.params]
icon = 'word'
{
"date": "2018-01-25",
"resources": [
{
"name": "header",
"src": "images/sunset.jpg"
},
{
"params": {
"icon": "photo"
},
"src": "documents/photo_specs.pdf",
"title": "Photo Specifications"
},
{
"src": "documents/guide.pdf",
"title": "Instruction Guide"
},
{
"src": "documents/checklist.pdf",
"title": "Document Checklist"
},
{
"src": "documents/payment.docx",
"title": "Proof of Payment"
},
{
"name": "pdf-file-:counter",
"params": {
"icon": "pdf"
},
"src": "**.pdf"
},
{
"params": {
"icon": "word"
},
"src": "**.docx"
}
],
"title": "Application"
}
从上面的例子可以看出:
sunset.jpg
将获得一个新的Name
,现在可以使用.GetMatch "header"
来找到它。documents/photo_specs.pdf
将获得photo
图标。documents/checklist.pdf
、documents/guide.pdf
和documents/payment.docx
将按照title
设置的值获取Title
。- 捆绑中除了
documents/photo_specs.pdf
之外的每个PDF
文件将获得pdf
图标。 - 所有
PDF
文件将获得一个新的Name
。name
参数包含一个特殊的占位符:counter
,所以Name
将是pdf-file-1
、pdf-file-2
、pdf-file-3
。 - 捆绑中的每个docx文件都会获得
word
图标。
name
和title
中的:counter
占位符
在resources
的name
和title
参数中,:counter
是一个特殊的占位符。
第一次在name
或title
中使用时,计数器从1开始。
例如,如果一个bundle有资源文件photo_specs.pdf
,other_specs.pdf
,guide.pdf
和checklist.pdf
,并且前置元数据指定了resources
如下:
title = '发动机检查'
[[resources]]
src = "*specs.pdf"
title = "规格 #:counter"
[[resources]]
src = "**.pdf"
name = "pdf文件-:counter"
将为资源文件分配Name
和Title
:
资源文件 | Name |
Title |
---|---|---|
checklist.pdf | "pdf文件-1.pdf" |
"checklist.pdf" |
guide.pdf | "pdf文件-2.pdf" |
"guide.pdf" |
other_specs.pdf | "pdf文件-3.pdf" |
"规格 #1" |
photo_specs.pdf | "pdf文件-4.pdf" |
"规格 #2" |