修复我的 hugo 标签(二)——忽略大小写

今天发现我的 tag 页面有些不正常,解决一下

问题

话说这是我第二次修复我的 tag 列表了,第一次 是没有列出相关内容,时隔两年,最近我发现我的英文 tag 页面显示内容为空:

赶紧也测了一下中文,发现中文没有问题:

那么很快我就意识到了问题的原因,不晓得各位猜到了没。

分析

因为一般情况下,我写 tag 是全小写的, 但是这个英文 tag 却莫名其妙地把首字母大写了,于是就有了这个问题, 不晓得这个问题已经存在多久了,可能是从某次 hugo 更新后发生的变化, 因为一般以我的做法,修改 tags 页面时这两种 tag 我都会去试一下。 这其实也向我们印证了一点:没有新功能的需求,且在旧功能够用的情况下,没必要更新。

解决

有了这个思路,其实直接上手解决就是了, 不过我对 hugo/go 的模版功能和函数也没有很熟,没关系, 在这个年代我们随便叫一个 AI 出来就好了,以下是 gemini 给出的最终方案:

<div class="bg-transparent" id="div-regular-pages">
  {{ range .Site.RegularPages }}
  {{ $lowerTags := slice }}
  {{ range .Params.tags }}
  {{ $lowerTags = $lowerTags | append (lower .) }}
  {{ end }}
  {{ if in $lowerTags (lower $tag) }}
  {{ .Render "summary" }}
  {{ end }}
  {{ end }}
</div>

不会写是不会写,基本上看明白还是可以的,其实就是把所有 tag 小写后塞进一个 slice, 然后和当前小写的 tag 做比较。不过还是要声明一点, 不要指望 AI 一次就能给出最终的方案,上面也是沟通几次的结果。

总结

思路其实就是 tag 都转换为小写,然后再进行比较, 这应该就不会再有英文 tag 无法列出条目的问题了,我们看看最终的结果: