如何访问Taxonomy首个内容条目的自定义字段?
访问Hugo分类首个内容条目的自定义字段
嘿,刚好我之前处理过类似的需求!既然你已经能拿到Taxonomy的基本字段(比如{{.Name}}),那要访问分类下第一个内容条目的自定义字段,其实只需要两步:
- 先定位到该分类下的第一篇内容
- 再通过
Params来调用对应的自定义字段
具体实现示例
假设你正在处理的是tags分类的模板(其他分类比如categories逻辑完全一样),可以这么写:
{{/* 先获取当前分类下的第一个内容条目,用index取数组的第0位 */}} {{ $firstPost := index .Pages 0 }} {{/* 访问基本字段,比如标题 */}} <h3>分类下第一篇文章:{{ $firstPost.Title }}</h3> {{/* 访问自定义字段,比如你在文章front matter里定义的`summary`或者`banner_image` */}} {{ if $firstPost.Params.banner_image }} <img src="{{ $firstPost.Params.banner_image }}" alt="文章首图"> {{ end }} {{ with $firstPost.Params.summary }} <p>文章摘要:{{ . }}</p> {{ end }}
更健壮的写法(避免空分类报错)
如果担心这个分类下可能没有任何内容,直接用index会触发错误,建议加上with判断来做容错处理:
{{ with index .Pages 0 }} <h3>第一篇文章:{{ .Title }}</h3> {{ with .Params.author }} <p>作者:{{ . }}</p> {{ end }} {{ else }} <p>这个分类下还没有发布任何内容~</p> {{ end }}
原理很简单:.Pages是当前Taxonomy下所有内容的集合,index .Pages 0就拿到了第一个元素;而所有在文章front matter里定义的自定义字段,都存在该内容的Params对象里,直接用.Params.字段名就能访问到啦。
内容的提问来源于stack exchange,提问作者wiesson
相关产品推荐
相关产品推荐

