1

我在 Hugo 的一个部分中使用了这段代码来将上下文传递给它。

{{- $ctx := . -}}
    {{- $curPage := .page -}}
    {{- $otherVar := .otherVar -}}
    {{- with $curPage -}}
     {{ $section := .CurrentSection }}
    {{ if .IsHome }}
    <span class="post-section"><a href="{{ $section.Permalink }}" target="_blank">{{ $section.Title }}</a></span>
    {{ else }}
    <a href="{{  $section.Permalink }}"> {{  $section.Title }}</a>
    {{ end }}
    {{- end -}}

{{- $curPage := . -}}然后我在模板顶部添加我希望部分显示的位置,然后将部分调用为{{ partial "partial-name.html" (dict "page" $curPage "otherVar" .) }}. 但是,该内容在主页上返回 nil,而它在站点范围内的其他任何地方都可以使用。谁能看看我的代码并告诉我哪里出错了?

4

2 回答 2

0

既然你这样调用部分:

{{ partial "partial-name.html" (dict "page" $curPage "otherVar" .) }}
                                                     ^^^^^^^^^^^^
                                                        Notice

点 (.) 包含在 .otherVar 中。要确定您是否在主页上,请在顶部使用类似这样的简单内容partial-name.html

{{ if .otherVar.IsHome }}
  <pre>Debugging: YES .IsHome</pre>
{{ else }}
  <pre>Debugging: NOT .IsHome</pre>
{{ end }}

使用上面的 GO HTML 片段进行测试后,您可以更新上面的原始代码。

提示:在 Hugo 世界中,通常使用"context", "ctx", "page", or"Page"而不是"otherVar"作为包含点的字典键的名称。有关此问题的讨论,请参阅调用部分时页面上下文(在字典中)的命名约定:在 Hugo 讨论组中寻求意见。

另一个提示:有一些与区分大小写有关的 Hugo 怪事,所以"otherVar"无论如何我都不会使用。而是使用"othervar","context"或任何全小写且没有空格的名称。我这样做是因为我花了很多时间来处理区分大小写的 Hugo 问题。

于 2022-01-29T18:48:50.443 回答
0

抱歉 - 没有看到你的 with 声明。

所以 {{- $curPage := .page -}}

是一个错字。

。页

在本地 - 最新版本的 hugo 上测试。

另请注意 - 我认为主页没有部分,因此您的跨度将输出很少,因为大多数当前部分或相关部分将不返回任何内容。

于 2022-01-28T17:38:23.197 回答