HUGO
Menu
GitHub 87548 stars Mastodon

Data

返回由 data 目錄中的文件組成的數據結構。

Syntax

SITE.Data

Returns

map

使用 Site 對象上的 Data 方法來訪問 data 目錄中的數據,或訪問任何 掛載data 目錄的目錄中的數據。支持的數據格式包括 JSON、TOML、YAML 和 XML。

雖然 Hugo 可以使用 transform.Unmarshal 函數解包 CSV 文件,但不要將 CSV 文件放在 data 目錄中。您無法使用此方法訪問 CSV 文件內的數據。

考慮此 data 目錄:

data/
├── books/
│   ├── fiction.yaml
│   └── nonfiction.yaml
├── films.json
├── paintings.xml
└── sculptures.toml

以及這些數據文件:

data/books/fiction.yaml
- title: The Hunchback of Notre Dame
  author: Victor Hugo
  isbn: 978-0140443530
- title: Les Misérables
  author: Victor Hugo
  isbn: 978-0451419439
data/books/nonfiction.yaml
- title: The Ancien Régime and the Revolution
  author: Alexis de Tocqueville
  isbn: 978-0141441641
- title: Interpreting the French Revolution
  author: François Furet
  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>Fiction</p>
<ul>
  <li>The Hunchback of Notre Dame (978-0140443530)</li>
  <li>Les Misérables (978-0451419439)</li>
</ul>
<p>Nonfiction</p>
<ul>
  <li>The Ancien Régime and the Revolution (978-0141441641)</li>
  <li>Interpreting the French Revolution (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 函數。例如:

{{ index .Site.Data.books "historical-fiction" }}

Last updated: January 1, 0001
Improve this page