我是使用rule of thirds和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 :(得分:8)
0.15引入了map that can be used for this。
<强>的index.html 强>
{{ $events := .Site.Data.events }}
{{ partial "people" (dict "events" $events) }}
<强> people.html 强>
// access the events variable from the index.html
{{ .events }}
答案 1 :(得分:3)
您可以使用dict
功能:
{{ partial "people" (dict "page" . "events" $events) }}
然后,您将在部分内容{{ .page.someVar }}
和{{ .events.someVar }}
中解决这些问题。
在您的情况下,替代方案可能是部分(如前一张海报所述),直接从部分地址.Site.Data.events
。
答案 2 :(得分:0)
根据雨果documentation:
...部分调用接收两个参数。
- 第一个是partial的名称,并确定要读取的文件位置。
- 第二个是要传递给部分的变量。
醇>这意味着partial只能访问这些变量。它是孤立的,无法访问外部范围。
这意味着,events
变量<{1>}范围之外的。您的people.html
无法“看到”它。一种解决方案是传递它,如:
people.html
如果不起作用,请尝试其他符号({{ partial "people" . $events }}
与$
)。
如果这不起作用,您可以随时再次调用您的数据文件,而不是变量,就像在examples中一样,即在.
部分中使用{{ .Site.Data.events }}
。 / p>
请在评论中告诉我它是怎么回事,如果有必要,我会尽力改善我的答案。我知道从Hugo边界进入Go领域是痛苦的:)