如何在Hugo模板中使用site变量访问动态属性
问题原因
Hugo 基于 Go HTML 模板引擎实现渲染,原生不支持 [键名] 语法直接获取映射(Map)类型的动态属性值,因此你使用的 {{.Site.Data.authors[name]}} 写法会报错或返回空值。
正确实现方法
使用 Hugo 内置的 index 函数即可动态读取指定键的内容:
- 若要获取固定 ID
john_doe的作者信息,写法如下:
{{ index .Site.Data.authors "john_doe" }}
- 若作者 ID 存储在变量/当前上下文属性中,写法示例:
<!-- 作者ID存在自定义变量$name中 --> {{ index .Site.Data.authors $name }} <!-- 作者ID存在当前页面的Params参数中 --> {{ index .Site.Data.authors .Params.author }}
你也可以把读取到的作者信息赋值给变量后,再访问内部字段,示例如下:
{{ $author := index .Site.Data.authors "john_doe" }} <p>作者名:{{ $author.name }}</p> <p>GitHub 主页:https://github.com/{{ $author.github }}</p> <p>作者简介:{{ $author.description }}</p>
内容的提问来源于stack exchange,提问作者shivaraj bakale
相关产品推荐
相关产品推荐

