collections.Sort
按指定的 key 与顺序重排给定集合,返回排序后的映射或切片。
对切片做升序排序时 KEY 可以省略,其他情况则必填。排序切片时,请用字面量 value 代替 KEY。参见下面的示例。
ORDER 可以是 asc(升序)或 desc(降序)。默认排序顺序为升序。
排序切片
下面的示例假定项目配置为:
[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。
排序映射
下面的示例假定项目配置为:
[params.authors.a]
firstName = 'Marius'
lastName = 'Pontmercy'
[params.authors.b]
firstName = 'Victor'
lastName = 'Hugo'
[params.authors.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移除第一层 key
Hugo 在排序映射时会移除第一层的 key。
原始映射:
{
"felix": {
"breed": "malicious",
"type": "cat"
},
"spot": {
"breed": "boxer",
"type": "dog"
}
}排序之后:
[
{
"breed": "malicious",
"type": "cat"
},
{
"breed": "boxer",
"type": "dog"
}
]排序页面集合
在这个刻意构造的示例中,按 .Type 降序排序站点的普通页面:
{{ range sort site.RegularPages "Type" "desc" }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}