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

Hugo动态获取URL分类值实现Range函数渲染内容问题

解决Hugo分类列表页动态渲染分类内容的问题

你不需要手动解析URL来获取分类名,Hugo在分类列表页面已经内置了当前分类的上下文变量,直接使用即可实现动态渲染。

推荐实现方式

方式一(最简洁,优先使用)

直接利用Hugo内置的Data.Pages变量,它就是当前分类下的所有文章集合:

{{ range .Data.Pages }}
<div class="col-lg-4 col-md-6 blog-card has-border">
  {{ .Render "article" }}
</div>
{{ end }}

方式二(通过分类名索引站点分类集合)

如果需要明确从站点分类集合中获取内容,可利用.Name变量(对应URL中的分类标识,比如示例里的technology),结合index函数动态访问:

{{ $category := .Name }}
{{ range index .Site.Taxonomies.categories $category }}
<div class="col-lg-4 col-md-6 blog-card has-border">
  {{ .Render "article" }}
</div>
{{ end }}

你之前的方法失败原因

你用urls.Parse .Permalink得到的是URL结构体对象,不是单纯的分类字符串,直接传给.Site.Taxonomies.categories无法匹配到对应分类,导致渲染失败。而且这种方式完全没必要,Hugo已经帮你处理好了分类页面的上下文信息。

特殊场景下的URL解析方案(不推荐)

如果因为自定义URL结构等特殊情况,必须通过路径解析分类名,可以用字符串拆分实现:

{{ $pathSegments := strings.Split .Permalink "/" }}
<!-- 从路径数组倒数第二个元素提取分类名,适配你提供的URL格式 -->
{{ $category := index $pathSegments (sub (len $pathSegments) 2) }}
{{ range index .Site.Taxonomies.categories $category }}
<div class="col-lg-4 col-md-6 blog-card has-border">
  {{ .Render "article" }}
</div>
{{ end }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:54:09