最近发现我的标签列表有些问题,记录一下修复
这个问题应该已经存在了好久,只是我一直没有发现,随便点一个标签我发现,列表里居然 列出了大量不相干的内容,我意识到我的标签页其实并没有正常工作。
我的标签页是我自制主题下 taxonomy/tag.html 显示的,修复前这个文件是这个样子:
{{ partial "header.html" . }}
{{ partial "navbar.html" . }}
<div class="col-11 col-lg-8 mx-auto border-0 card bg-transparent">
<h1>Tags: {{ .Title }}</h1>
</div>
<div class="bg-transparent" id="div-regular-pages">
{{ range .Site.RegularPages }}
{{ .Render "summary" }}
{{ end }}
</div>
{{ partial "footer.html"}}
很显然,这个页面把所有页面都列出来了,并没有根据标签进行筛选。
我查阅了很多资料,但是感觉都讲得比较晦涩,也翻了几个主题,想看一下别人的做法, 但是还是比较难懂,于是开始想能不能用最直接的方法解决这个问题,这个问题可以分解为 两个问题,一个是如何获取当前标签名,第二是如何筛选出所有相同标签。
首先需要确定的是当前标签名,这样我们才可以进行筛选,我们注意到:
<h1>Tags: {{ .Title }}</h1>
这个可以正确显示当前标签页,所以我们需要把这个值保存下来:
<h1>Tags: {{ .Title }}</h1>
{{ $tag := .Title }}
在查阅资料的过程中,我们知道标签保存在 .Params.tags
,那么其实只要判断标签列表
中包含我们的当前标签名,那么就可以列出所有同名标签了:
<div class="bg-transparent" id="div-regular-pages">
{{ range .Site.RegularPages }}
{{ if in .Params.tags $tag }}
{{ .Render "summary" }}
{{ end }}
{{ end }}
</div>
这样我的标签列表就修复完成了,是不是非常简单?