【发布时间】:2022-01-22 08:43:52
【问题描述】:
从 Jekyll 搬来后,我正在使用 Hugo。不过,有些东西让我对页面变量感到困惑。如果我在页眉和页脚部分使用.IsHome,它可以工作。但是对于内容区域内的任何部分模板都失败了。尽管阅读了有关“点”的多个文档,但我不知道为什么会发生这种情况。
【问题讨论】:
从 Jekyll 搬来后,我正在使用 Hugo。不过,有些东西让我对页面变量感到困惑。如果我在页眉和页脚部分使用.IsHome,它可以工作。但是对于内容区域内的任何部分模板都失败了。尽管阅读了有关“点”的多个文档,但我不知道为什么会发生这种情况。
【问题讨论】:
在 Hugo 中,. 为您提供当前上下文。在一个页面中,这有.IsHome。但除非您明确传递它,否则它不会级联到部分。您可能会像这样包含页眉和页脚部分:
{{- partial "header.html" . -}}
其中的. 将当前上下文传递到标题部分。请注意,Hugo 中的页眉或页脚部分没有什么特别之处:它们在涉及上下文时没有得到任何特殊处理。我猜你会像这样包括其他部分:
{{- partial "otherpartial.html" -}}
请注意,其中没有任何. 可以传递上下文。在 Hugo 中,上下文永远不会隐含地赋予部分:你必须明确地传递它。解决方案是确保您将上下文传递给您的部分(注意添加的.):
【讨论】:
{{ partial "name.html" . }} 这样令人困惑,因为它适用于页脚和页眉!但在其他情况下,它没有。 @Rogelio 关于传递上下文的那部分让我很困惑。
{{if .IsHome }} {{.CurrentSection.Title}} {{ else }} <a href="{{.CurrentSection.Title}}">{{.CurrentSection.Title}}</a> {{ end }} 然后在模板中调用它为 {{ partial "section-title.html"}}