You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hugo中如何在同一页面使用多个.Paginate range?

Hugo同一页面使用多个Range加载不同版块的解决方案

问题原因

你遇到的第一段卡片消失的问题,核心是Hugo的.Paginate是全局状态方法——第二次调用.Paginate时,会完全覆盖第一次的分页上下文,导致第一段的分页数据被清空,对应的卡片自然无法渲染。

解决方案

根据是否需要分页,有两种处理方式:

1. 不需要分页(首页展示全量内容)

直接跳过Paginate,用where筛选对应版块的页面后遍历即可:

{{ range where site.RegularPages "Section" "research" }}
  {{ partial "research-card" .}}
{{ end }}

{{ range where site.RegularPages "Section" "services" }}
  {{ partial "services-card" .}}
{{ end }}

2. 需要对每个版块单独分页(支持翻页)

使用Hugo的命名分页器(需Hugo 0.68.0及以上版本),给每个分页器分配唯一变量,避免全局覆盖:

{{ $researchPaginator := .Paginate (where site.RegularPages "Section" "research") }}
{{ range $researchPaginator.Pages }}
  {{ partial "research-card" .}}
{{ end }}

{{ $servicesPaginator := .Paginate (where site.RegularPages "Section" "services") }}
{{ range $servicesPaginator.Pages }}
  {{ partial "services-card" .}}
{{ end }}

单独页面nil变量错误的解决

如果为版块单独建页面时出现nil错误,大概率是模板中未判断数据是否存在。可以添加空值检查避免报错:

{{ $researchPages := where site.RegularPages "Section" "research" }}
{{ if $researchPages }}
  {{ range $researchPages }}
    {{ partial "research-card" .}}
  {{ end }}
{{ else }}
  <p>暂无研究内容</p>
{{ end }}

内容的提问来源于stack exchange,提问作者dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:40:29