我是使用Hugo和Go模板的新手。如何使用Hugo从基本文件中定义的部分文件访问变量?
例如:我有一个index.html
文件,其中包含读取数据目录中events.json
文件中存储的数据并将其存储在变量中的代码。如何从另一个文件访问该变量?
index.html
{{ $events := .Site.Data.events }}
{{ partial "people" . }}
people.html
// access the events variable from the index.html
{{ $events }}
我真的希望这是有道理的。如果需要,我可以尝试澄清更多。
0.15介绍了一个可以用于此目的的映射。
index.html
{{ $events := .Site.Data.events }}
{{ partial "people" (dict "events" $events) }}
people.html
// access the events variable from the index.html
{{ .events }}
您可以使用dict
函数:
{{ partial "people" (dict "page" . "events" $events) }}
然后,您将像部分中的{{ .page.someVar }}
和{{ .events.someVar }}
一样对它们进行寻址。
在您的情况下,另一种选择可能是,在部分中(正如之前的海报所说),直接从部分中寻址.Site.Data.events
。
根据Hugo文档:
。。。部分调用接收两个参数。
- 第一个是分部的名称,并确定要读取的文件位置
- 第二个是要传递给分部的变量
这意味着分部只能访问这些变量。它是孤立的,无法访问外部范围。
这意味着events
变量在people.html
的作用域之外。您的CCD_ 10不能";参见";一个解决方案是把它传下去,比如:
{{ partial "people" . $events }}
如果不起作用,请尝试不同的表示法($
与.
)。
如果这不起作用,那么您总是可以再次调用数据文件,不带变量,就像在示例中一样,即在people.html
分部中使用{{ .Site.Data.events }}
。
请在评论中告诉我进展如何,如果有必要,我会努力改进我的答案。我知道走出雨果的边界进入围棋领域是一件痛苦的事:)