ByCount
Syntax
TAXONOMY.ByCount
Returns
page.OrderedTaxonomy
ByCount 方法在 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”分类法对象,可以在Site对象上使用Taxonomies方法。
{{ $taxonomyObject := .Site.Taxonomies.genres }}
要在渲染其页面时捕获“genres”分类法对象,可以在页面的Data对象上使用Terms方法:
layouts/_default/taxonomy.html
{{ $taxonomyObject := .Data.Terms }}要检查数据结构:
<pre>{{ jsonify (dict "indent" " ") $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.ByCount }}
要反转排序顺序:
{{ $taxonomyObject.ByCount.Reverse }}
要检查数据结构:
<pre>{{ jsonify (dict "indent" " ") $taxonomyObject.ByCount }}</pre>
有序的分类法是一个切片,其中每个元素是一个包含术语和其加权页面切片的对象。
切片的每个元素提供以下方法:
Count- (
int) 返回术语被分配给的页面数量。 Page- (
hugolib.pageState) 返回术语的Page对象,可用于链接到术语页面。 Pages- (
page.Pages) 返回包含术语被分配给的Page对象的Pages对象,按分类权重排序。要进行排序或分组,请使用Pages对象可用的任何方法。例如,按最后修改日期排序。 Term- (
string) 返回术语名称。 WeightedPages- (
page.WeightedPages) 返回一个加权页面切片,其中包含术语被分配到的页面,按分类权重排序。上面的Pages方法更灵活,允许您进行排序和分组。
示例
使用此模板:
{{ range $taxonomyObject.ByCount }}
<h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
<ul>
{{ range .Pages.ByTitle }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
Hugo 渲染结果如下:
<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>
<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>