【问题标题】:Using page variables in Hugo在 Hugo 中使用页面变量
【发布时间】:2022-01-22 08:43:52
【问题描述】:

从 Jekyll 搬来后,我正在使用 Hugo。不过,有些东西让我对页面变量感到困惑。如果我在页眉和页脚部分使用.IsHome,它可以工作。但是对于内容区域内的任何部分模板都失败了。尽管阅读了有关“点”的多个文档,但我不知道为什么会发生这种情况。

【问题讨论】:

    标签: go hugo


    【解决方案1】:

    在 Hugo 中,. 为您提供当前上下文。在一个页面中,这有.IsHome。但除非您明确传递它,否则它不会级联到部分。您可能会像这样包含页眉和页脚部分:

    {{- partial "header.html" . -}}
    

    其中的. 将当前上下文传递到标题部分。请注意,Hugo 中的页眉或页脚部分没有什么特别之处:它们在涉及上下文时没有得到任何特殊处理。我猜你会像这样包括其他部分:

    {{- partial "otherpartial.html" -}}
    

    请注意,其中没有任何. 可以传递上下文。在 Hugo 中,上下文永远不会隐含地赋予部分:你必须明确地传递它。解决方案是确保您将上下文传递给您的部分(注意添加的.):

    {{- 部分“otherpartial.html”. -}}

    【讨论】:

    • 我只想补充一点,您需要将 Smitop 的答案与变量的上下文相匹配。 IE。在部分中,我们称它为“pagination.html”。IsHome 在 pagination.html 上运行 - 但 pagination.html 没有 .IsHome 值,它是部分的,它有自己的上下文(就像函数或班级)。但是,您的页面确实具有 IsHome 值。因此,当您向您传递部分页面的上下文时(当从您的页面调用部分时传递部分“。”在这种情况下 = 页面上下文)。然后 .IsHome 在页面的上下文中运行。
    • @Smitop 我实际上是在调用所有部分(包括页眉和页脚部分),就像{{ partial "name.html" . }} 这样令人困惑,因为它适用于页脚和页眉!但在其他情况下,它没有。 @Rogelio 关于传递上下文的那部分让我很困惑。
    • 您必须向我展示代码才能发现具体问题,但也许可以提供更多理解。上下文是“代码的某个点可到达的数据”我们不希望所有数据都可用于所有点。想象一下,如果为了一本烹饪书,你必须阅读每一个食谱才能打碎鸡蛋?因此,每个不同的零件和零件都有自己的可用数据。 “语境”。 .IsHome 仅适用于页面的上下文。如果部分没有或没有被赋予页面上下文 .IsHome 不能运行(部分有它自己的上下文)。这真的是在敲定“上下文”的定义。
    • 让我举个例子。我想要这个在 section-title.html 部分 {{if .IsHome }} {{.CurrentSection.Title}} {{ else }} <a href="{{.CurrentSection.Title}}">{{.CurrentSection.Title}}</a> {{ end }} 然后在模板中调用它为 {{ partial "section-title.html"}}
    • .IsHome 不适用于您的部分。你没有告诉它,概念上是“如果.Page.IsHome”。所以你需要确保你的代码——是否传递了上下文“。”或通过引用.Page 的另一种方法,检查该页面是否为.isHome。部分ISN't home,永远不会。它不是一页,它不可能是。所以当你检查 {{ if "this partial" .IsHome}} 它将不起作用。 Partial 没有 ishome 属性。
    猜你喜欢
    • 2021-07-26
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2019-01-06
    • 2016-01-18
    相关资源
    最近更新 更多