Get
Get
方法在 Taxonomy
物件中回傳給定的 詞彙 所關聯的 加權頁面 切片。
在我們可以使用 Taxonomy
方法之前,我們需要先捕捉 Taxonomy
物件。
捕捉一個 Taxonomy 物件
考慮以下的網站配置:
hugo.
taxonomies:
author: authors
genre: genres
[taxonomies]
author = 'authors'
genre = 'genres'
{
"taxonomies": {
"author": "authors",
"genre": "genres"
}
}
以及這個內容結構:
content/
├── books/
│ ├── and-then-there-were-none.md --> genres: suspense
│ ├── death-on-the-nile.md --> genres: suspense
│ └── jamaica-inn.md --> genres: suspense, romance
│ └── pride-and-prejudice.md --> genres: romance
└── _index.md
要從任何範本中捕捉 “genres” 的 Taxonomy
物件,請使用 Site
物件上的 Taxonomies
方法。
{{ $taxonomyObject := .Site.Taxonomies.genres }}
在渲染其頁面時,要捕捉 “genres” 的 Taxonomy
物件,請使用頁面的 Data
物件上的 Terms
方法:
layouts/_default/taxonomy.html
{{ $taxonomyObject := .Data.Terms }}
要檢查資料結構:
<pre>{{ debug.Dump $taxonomyObject }}</pre>
雖然 Alphabetical
和 ByCount
方法提供了更適合範圍遍歷的資料結構,但您也可以直接從 Taxonomy
物件渲染按類別加權的頁面:
{{ range $term, $weightedPages := $taxonomyObject }}
<h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
<ul>
{{ range $weightedPages }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
在上面的範例中,第一個錨點元素是指向該類別頁面的連結。
取得加權頁面
現在,我們已經捕捉到「genres」分類物件,接下來讓我們取得「suspense」這個詞彙所關聯的加權頁面:
{{ $weightedPages := $taxonomyObject.Get "suspense" }}
上述代碼等同於:
{{ $weightedPages := $taxonomyObject.suspense }}
然而,如果詞彙不是有效的 識別符號,則無法使用 鏈式語法。例如,以下代碼會因為識別符號包含連字號而拋出錯誤:
{{ $weightedPages := $taxonomyObject.my-genre }}
您也可以使用 index
函數,但語法會更冗長:
{{ $weightedPages := index $taxonomyObject "my-genre" }}
要檢查數據結構:
<pre>{{ debug.Dump $weightedPages }}</pre>
範例
使用此模板:
{{ $weightedPages := $taxonomyObject.Get "suspense" }}
{{ range $weightedPages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
Hugo 會渲染如下:
<h2><a href="/books/jamaica-inn/">Jamaica inn</a></h2>
<h2><a href="/books/death-on-the-nile/">Death on the nile</a></h2>
<h2><a href="/books/and-then-there-were-none/">And then there were none</a></h2>