首页 > 文章列表 > 如何在网页上显示以对象数组形式存储的图像资源?

如何在网页上显示以对象数组形式存储的图像资源?

219 2024-05-16
问题内容

我的头版中的图像是这样存储的:

images:
  - image: image_1.jpg
    caption: "image 1 caption"
  - image: image_2.jpg
    caption: "image 2 caption"

我只想显示第一个,所以我使用以下内容:

{{ $image := .resources.getmatch (printf "**%s" (index .params.images 0).image) }}

奇怪的是,只有当我在本地 hugo 服务器运行时添加 .image 部分时,这才有效。一旦我停止并再次启动,该网站就无法重建并出现以下错误:

... execute of template failed: template: partials/content/figure.html:7:70: executing "partials/content/figure.html" at <0>: can't evaluate field image in type string

我只想能够访问 images[0].image。我怎样才能做到这一点?


正确答案


事实证明,我还有一些其他内容类型,其中前面的 images 仍然是简单的数组,而不是对象数组。这导致了我的构建错误。为了解决这个问题,我使用了以下建议,此处

{{ $image := "" }}
{{ if reflect.IsMap (index .Params.images 0) }}
  {{ $image = .Resources.GetMatch (printf "**%s" (index .Params.images 0).image) }}
{{ else }}
  {{ $image = .Resources.GetMatch (printf "**%s" (index .Params.images 0)) }}
{{ end }}