Hugo中遍历字符串切片调用.Site.GetPage时类型错误的解决咨询
Hugo中遍历字符串切片调用.Site.GetPage时类型错误的解决咨询
嗨,我来帮你搞定这个问题!你遇到的这个错误其实很好理解:当你进入range $array循环后,模板里的.已经不再是原来的页面上下文了——它变成了当前循环到的那个字符串(比如"foo"、"bar"),而字符串类型里根本没有.Site这个属性,所以才会报错说“无法在string类型中评估Site字段”。
解决方法很简单,只要在循环开始前把原来的.Site上下文存成一个变量,在循环里用这个变量来调用GetPage就可以了,具体修改如下:
{{ $array := slice "foo" "bar" "bam" }} {{/* 先把循环外的Site上下文存到变量里 */}} {{ $site := .Site }} {{ range $array }} {{ $imgStr := printf "images/%s.jpg" . }} {{ $img := resources.Get $imgStr }} {{ $imgSrc := $img.RelPermalink }} {{/* 用提前保存的$site变量来调用GetPage,当前的`.`还是循环的字符串元素 */}} {{ with $site.GetPage . }} <h1>{{ .Title }}</h1> <img src="{{ $imgSrc }}"> <p>{{ .Content }}</p> {{ end }} {{ end }}
另外我帮你简化了$imgStr的拼接,用一个printf就搞定了,比原来多层嵌套更简洁~
还要提醒你一句:如果你的字符串只是页面的slug(比如"foo"),可能需要给GetPage指定页面类型,比如写成$site.GetPage "page" .或者$site.GetPage "posts" .,具体要看你的站点内容结构,确保能正确匹配到对应的页面。
备注:内容来源于stack exchange,提问作者foxgroot
相关产品推荐
相关产品推荐

