【问题标题】:HUGO How to use pagination inside terms page?HUGO 如何在条款页面中使用分页?
【发布时间】:2020-11-18 20:29:54
【问题描述】:

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

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

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

而且效果很好。

我试过了:

1)

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

但我收到“无法在类型 hugolib.OrderedTaxonomyEntry 中评估字段 Paginator”错误。

2)

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

我没有错误但没有显示帖子,只有分页在那里。

3)

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

{{ end }}

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

我尝试了很多其他的东西,但我不知道如何在我的分类法 terms.html 页面中按受欢迎程度显示我所有的帖子。

你还有什么想法吗?

【问题讨论】:

    标签: pagination hugo static-site


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    【解决方案2】:

    我从其他地方得到了答案;它是:

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

    【讨论】:

    • 一些本应简单且开箱即用的东西必须由用户手动解决,因为 Hugo 社区(及其开发人员 - 尤其是领先的开发人员)对它过于挑剔。非常感谢您的解决方案:)
    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多