Hugo定义的非站点级variables/parameters查询

Hugo definition of non-site level variables/parameters query

我正在使用 Hugo 通用主题。我是静态站点生成器的新手。这个问题是给熟悉hugo模板的人的。

layouts/partials/features.html中我们可以看到$element.name$element.name.description被渲染的地方:

{{ if isset .Site.Params "features" }}
{{ if .Site.Params.features.enable }}
{{ if gt (len .Site.Data.features) 0 }}
<section class="bar background-white">
    <div class="container">
        {{ range $index, $element := sort .Site.Data.features "weight" }}
        {{ if eq (mod $index 3) 0 }}
        <div class="col-md-12">
            <div class="row">
        {{ end }}
                <div class="col-md-4">
                    <div class="box-simple">
                        <div class="icon">
                            <i class="{{ .icon }}"></i>
                        </div>
                        <h3>{{ $element.name }}</h3>
                        <p>{{ $element.description | markdownify }}</p>
                    </div>
                </div>
        {{ if or (eq (mod $index 3) 2) (eq $index (sub (len $.Site.Data.features) 1 )) }}
            </div>
        </div>
        {{ end }}
        {{ end }}
    </div>
</section>
{{ end }}
{{ end }}
{{ end }}

本例要渲染的数据在data/features/consulting.yaml中定义如下:

weight: 4
name: "Consulting"
icon: "fa fa-lightbulb-o"
description: "Fifth abundantly made Give sixth hath..." 

我应该怎么做才能将新变量添加到 yaml 文件中,以便稍后在 hugo 编译站点时可以通过 html 文件呈现。我试图简单地添加另一个参数 param1,然后在 html 文件中插入一个相应的行作为 <p>{{ $element.param1 | markdownify }}</p> 就在描述段落下方,但出现错误

ERROR 2018/08/23 10:42:42 Error while rendering "home" in "": template: index.html:22:11: executing "index.html" at <partial "features.ht...>: error calling partial: template: partials/features.html:18:56: executing "partials/features.html" at : wrong number of args for markdownify: want 1 got 0

显然我似乎无法正确定义变量,但我应该在哪里做呢?我可以向 config.toml 添加另一个站点变量,但我想了解如何制作可在 yaml/frontmatter 类型条目中定义的页面特定变量。我尝试阅读有关 hugo 变量的内容,但在什么是变量和什么是短代码方面陷入困境。非常感谢您对此示例的帮助。

好吧,我找到了一个有效的答案,但我仍然不完全理解它如何适合 Hugo 变量系统,因此非常欢迎更好的答案和/或评论。

看起来很简单。我必须在 yaml 文件中定义 url 变量:

name: "History"
position: "Hx"
url: "/blog/2018/08/23/01-history/"

然后像这样在 html 文件中使用:

{{ if .url }} 
    <a href="{{ .url }}"> 
    <h5>{{ .name }}</h5>
    </a>
{{ else }}
    <h5>{{ .name }}</h5>
{{ end }}

它所做的是将 .name 放入 link 标记中,如果 .url 是在 .yaml 中定义的。如果给出绝对 URL ,这也有效。因此,页面变量似乎被称为 .myVariable。模板作者在上面的另一个地方使用了 $element.name,这让我很困惑。

我也可以参考frontmatter中定义的参数为.Params.name

我在https://github.com/devcows/hugo-universal-theme/pull/166找到了指针并测试了调整模板;效果很好。