Alphabetical
Alphabetical
方法在 Taxonomy
物件中,會回傳一個按 詞彙 字母順序排列的 有序分類。
雖然 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」分類物件,接下來讓我們依照詞彙字母順序取得有序分類:
{{ $taxonomyObject.Alphabetical }}
若要反轉排序順序:
{{ $taxonomyObject.Alphabetical.Reverse }}
要檢查資料結構:
<pre>{{ debug.Dump $taxonomyObject.Alphabetical }}</pre>
有序的 taxonomy 是一個切片,其中每個元素都是一個物件,包含了類別和與該類別相關聯的頁面切片。
切片中的每個元素提供以下方法:
- Count
- (
int
) 返回與該類別相關聯的頁面數量。 - Page
- (
page.Page
) 返回該類別的Page
物件,對於連結到該類別頁面很有用。 - Pages
- (
page.Pages
) 返回一個Pages
物件,包含了與該類別相關聯的Page
物件,並按 taxonomic weight 排序。若要進行排序或分組,請使用Pages
物件中可用的任何 [方法]。例如,按最後修改日期排序。 - Term
- (
string
) 返回該類別名稱。 - WeightedPages
- (
page.WeightedPages
) 返回與該類別相關聯的有權重頁面切片,並按 taxonomic weight 排序。上述的Pages
方法更具彈性,允許進行排序和分組。
範例
使用以下模板:
{{ range $taxonomyObject.Alphabetical }}
<h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
<ul>
{{ range .Pages.ByTitle }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
{{ end }}
Hugo 會渲染成:
<h2><a href="/genres/romance/">romance</a> (2)</h2>
<ul>
<li><a href="/books/jamaica-inn/">Jamaica inn</a></li>
<li><a href="/books/pride-and-prejudice/">Pride and prejudice</a></li>
</ul>
<h2><a href="/genres/suspense/">suspense</a> (3)</h2>
<ul>
<li><a href="/books/and-then-there-were-none/">And then there were none</a></li>
<li><a href="/books/death-on-the-nile/">Death on the nile</a></li>
<li><a href="/books/jamaica-inn/">Jamaica inn</a></li>
</ul>