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找到了指针并测试了调整模板;效果很好。
我正在使用 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找到了指针并测试了调整模板;效果很好。