数据
Syntax
SITE.Data
Returns
map
使用 Data
方法在 Site
对象上访问数据目录中的数据,或者是数据目录中任意挂载的目录中的数据。支持的数据格式包括 JSON、TOML、YAML 和 XML。
考虑以下数据目录:
data/
├── books/
│ ├── fiction.yaml
│ └── nonfiction.yaml
├── films.json
├── paintings.xml
└── sculptures.toml
以及这些数据文件:
data/books/fiction.yaml
- title: 钢铁是怎样炼成的
author: 奥斯特洛夫斯基
isbn: 978-0140443530
- title: 百年孤独
author: 加西亚·马尔克斯
isbn: 978-0451419439
data/books/nonfiction.yaml
- title: 人类简史
author: 尤瓦尔·赫拉利
isbn: 978-0141441641
- title: 未来简史
author: 尤瓦尔·赫拉利
isbn: 978-0521280495
{{ range $category, $books := .Site.Data.books }}
<p>{{ $category | title }}</p>
<ul>
{{ range $books }}
<li>{{ .title }} ({{ .isbn }})</li>
{{ end }}
</ul>
{{ end }}
Hugo 渲染结果为:
<p>小说</p>
<ul>
<li>钢铁是怎样炼成的 (978-0140443530)</li>
<li>百年孤独 (978-0451419439)</li>
</ul>
<p>非小说</p>
<ul>
<li>人类简史 (978-0141441641)</li>
<li>未来简史 (978-0521280495)</li>
</ul>
要将列表限制为小说,并按标题排序:
<ul>
{{ range sort .Site.Data.books.fiction "title" }}
<li>{{ .title }} ({{ .author }})</li>
{{ end }}
</ul>
要按 ISBN 查找一本小说书籍:
{{ range where .Site.Data.books.fiction "isbn" "978-0140443530" }}
<li>{{ .title }} ({{ .author }})</li>
{{ end }}
在上面的模板示例中,每个键都是有效的标识符。例如,键都不包含连字符。如果要访问一个不是有效标识符的键,请使用 index
函数。