collections.Sort
Syntax
collections.Sort COLLECTION [KEY] [ORDER]
Returns
any
Alias
sort
在对切片进行排序时,KEY
参数是可选的,如果要按升序排序切片,则必须提供此参数。当对切片进行排序时,请在 KEY
的位置使用字面量 value
。请参考下面的示例。
ORDER
参数可以是 asc
(升序)或 desc
(降序)。默认的排序顺序是升序。
对切片进行排序
下面的示例假设有以下站点配置:
hugo.
params:
grades:
- b
- a
- c
[params]
grades = ['b', 'a', 'c']
{
"params": {
"grades": [
"b",
"a",
"c"
]
}
}
升序排序
使用以下任何一种方法以升序对切片元素进行排序:
{{ sort site.Params.grades }} → [a b c]
{{ sort site.Params.grades "value" "asc" }} → [a b c]
在上面的示例中,value
是代表切片元素值的 KEY
。
降序排序
以降序对切片元素进行排序:
{{ sort site.Params.grades "value" "desc" }} → [c b a]
在上面的示例中,value
是代表切片元素值的 KEY
。
对映射进行排序
下面的示例假设有以下站点配置:
hugo.
params:
authors:
a:
firstName: Marius
lastName: Pontmercy
b:
firstName: Victor
lastName: Hugo
c:
firstName: Jean
lastName: Valjean
[params]
[params.authors]
[params.authors.a]
firstName = 'Marius'
lastName = 'Pontmercy'
[params.authors.b]
firstName = 'Victor'
lastName = 'Hugo'
[params.authors.c]
firstName = 'Jean'
lastName = 'Valjean'
{
"params": {
"authors": {
"a": {
"firstName": "Marius",
"lastName": "Pontmercy"
},
"b": {
"firstName": "Victor",
"lastName": "Hugo"
},
"c": {
"firstName": "Jean",
"lastName": "Valjean"
}
}
}
}
升序排序
使用以下任何一种方法以升序对映射对象进行排序:
{{ range sort site.Params.authors "firstname" }}
{{ .firstName }}
{{ end }}
{{ range sort site.Params.authors "firstname" "asc" }}
{{ .firstName }}
{{ end }}
这将产生以下结果:
Jean Marius Victor
降序排序
以降序对映射对象进行排序:
{{ range sort site.Params.authors "firstname" "desc" }}
{{ .firstName }}
{{ end }}
这将产生以下结果:
Victor Marius Jean
对页面集合进行排序
尽管可以使用 sort
函数对页面集合进行排序,但 Hugo 提供了内置方法来排序页面集合,方法有:
- 权重(weight)
- 链接标题(linktitle)
- 标题(title)
- 正文前的元数据参数
- 日期(date)
- 过期日期(expiration date)
- 上次修改日期(last modified date)
- 发布日期(publish date)
- 长度(length)
在这个人为构造的示例中,按 .Type
的降序对站点的常规页面进行排序:
{{ range sort site.RegularPages "Type" "desc" }}
<h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
{{ end }}