按字母顺序
语法
TAXONOMY.Alphabetical
返回
page.OrderedTaxonomy
Taxonomy
对象上的 Alphabetical
方法返回一个排序的分类,按术语的字母顺序排序。
虽然 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” Taxonomy 对象,让我们获取按术语字母顺序排序的排序分类
{{ $taxonomyObject.Alphabetical }}
要反转排序顺序
{{ $taxonomyObject.Alphabetical.Reverse }}
检查数据结构
<pre>{{ debug.Dump $taxonomyObject.Alphabetical }}</pre>
排序的分类是一个切片,其中每个元素都是一个包含术语及其加权页面切片的对象。
切片的每个元素都提供以下方法
- 计数
- (
int
) 返回分配给该术语的页数。 - 页面
- (
page.Page
) 返回该术语的Page
对象,用于链接到该术语页面。 - 页面集合
- (
page.Pages
) 返回一个包含分配给该术语的Page
对象的Pages
对象,按分类权重排序。要排序或分组,请使用Pages
对象可用的任何方法。例如,按上次修改日期排序。 - 术语
- (
string
) 返回术语名称。 - 加权页面
- (
page.WeightedPages
) 返回分配给该术语的加权页面切片,按分类权重排序。上面的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>