HUGO 如何在条款页面内使用分页?

HUGO How to use pagination inside terms page?

我正在尝试在条款页面内使用分页(例如 /layouts/tags/terms.html),因为我有很多标签。

而且我还想显示我所有按受欢迎程度排序的标签。对于最后一点,我做了:

{{ range .Data.Terms.ByCount}}
...
{{ end }}

而且效果很好。

我试过了:

1)

{{ range .Data.Terms.ByCount}}
{{ range .Paginator.Pages }}
...
{{ end }}
{{ end }}

但我收到“无法评估 hugolib.OrderedTaxonomyEntry 类型的字段分页器”错误。

2)

{{ range .Paginator.Pages }}
{{ range .Data.Terms.ByCount}}
...
{{ end }}
{{ end }}

我没有错误,但没有显示任何帖子,只有分页。

3)

{{ $paginator := .Paginate .Data.Terms.ByCount }}
{{ range $paginator.Pages }}
...

{{ end }}

我得到:“调用分页时出错:无法将类型 hugolib.OrderedTaxonomy 转换为页面”错误。

我尝试了很多其他方法,但我无法弄清楚如何在我的分类 terms.html 页面中使用分页按受欢迎程度显示我的所有帖子。

你有更多想法吗?

在您的 terms.html 页面中输入以下代码。应该可以。

{{ range  .Paginator.Pages }}
  {{ .Title }}: {{ .RelPermalink }}
{{ end }}

但是既然你想对它进行排序,你可能需要这样的东西。

{{ range .Paginator.Pages.ByDate }}
  {{ .Title }}: {{ .RelPermalink }}
{{ end }}

您可以使用其他参数进行排序。查看完整列表 here.

您想按受欢迎程度排序。我不确定您如何定义受欢迎程度。但是如果 popularity 是一个 front matter 变量,你可以用下面的方法对其进行排序。

{{ range (.Pages.ByParam "popularity") }}
  <!-- ... -->
{{ end }}

我从别处得到了答案;它是:

{{ $topaginate := slice }}

{{ range $k, $v := .Data.Terms.ByCount}}
{{ $topaginate = $topaginate | append  (site.GetPage (print $.Data.Plural "/" $v.Term )) }}
{{ end }}

{{ range (.Paginate $topaginate).Pages }}
{{ . }}
{{ end }}