go - 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
文件中,然后html
在 hugo 编译站点时通过文件呈现。我尝试简单地添加另一个参数param1
,然后在 html 文件中插入相应的行,<p>{{ $element.param1 | markdownify }}</p>
就像描述段落的下方一样,但出现错误
错误 2018/08/23 10:42:42 在“”中渲染“主页”时出错:模板:index.html:22:11:在 <partial“features.ht...> 处执行“index.html”:错误调用部分:模板:partials/features.html:18:56:执行“partials/features.html”:markdownify 的参数数量错误:想要 1 得到 0
显然,我似乎无法正确定义变量,但我应该在哪里做呢?我可以向 中添加另一个站点变量config.toml
,但我想学习如何制作可以在yaml/frontmatter
类型条目中定义的页面特定变量。我尝试阅读有关 hugo 变量的内容,但在什么是变量和什么是简码方面陷入了困境。非常感谢您对本示例的帮助。
解决方案
好吧,我找到了一个可行的答案,但我仍然不完全理解它如何适合 Hugo 变量系统,因此非常欢迎更好的答案和/或评论。
看起来很简单。我必须在文件中定义url
变量yaml
:
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 }}
如果 .url 在 .yaml 中定义,它的作用是将 .name 放在链接标记中。如果给出了绝对 URL,这也有效。因此,页面变量似乎被称为.myVariable
. 模板作者$element.name
在上面的另一个地方使用,这让我很困惑。
我也可以将frontmatter中定义的参数称为.Params.name
我在https://github.com/devcows/hugo-universal-theme/pull/166找到了指针,并在调整模板时进行了测试;它运作良好。
推荐阅读
- python - 无法从 VisualStudioCode 终端运行 Python
- azure-active-directory - 使用 AD 自定义策略适用于 Azure 门户,但不适用于 .NET Core Web App
- neo4j - 如何在 NEO4J 中提高 LOAD CSV 的性能
- c# - 如何将 .jpg 包含到 dll 中?
- impala - 如何在 Superset 上模拟 Impala 查询
- asp.net-mvc-5 - 使用运行 Identity Server 4 的 ASP.NET CORE 3 身份验证服务器对 ASP.NET MVC 5 应用程序(针对 .net 4.5)进行身份验证
- wordpress - 使用远程数据库的 WordPress 本地开发工作速度非常慢
- firebase - 如何在 VS Code 中调试在文档 onDelete 上触发的 Firebase 云函数?
- android - 材料芯片 chipStrokeColor 未应用于芯片元素
- javascript - 您可以从导入的模块中调用函数而不调用 node.js 中的模块吗?