模板调试
以下是您可以添加到模板中以回答一些常见问题的代码片段。
这些代码片段使用了所有 Go 模板中可用的 printf
函数。该函数是一个 Go 函数 fmt.Printf 的别名。
在此上下文中有哪些可用变量?
您可以使用模板语法 $.
来在模板的任何位置获取顶层模板上下文。这将打印出 .Site
下所有的值。
{{ printf "%#v" $.Site }}
这将打印出 .Permalink
的值:
{{ printf "%#v" .Permalink }}
这将打印出当前上下文(即 “点”,也称为“the dot”)的所有变量的列表。
{{ printf "%#v" . }}
当开发一个 主页 时,通过循环查看其中的一个页面是什么样的?
{{ range .Pages }}
{{/* 上下文“.”现在表示为每个页面在循环中的内容 */}}
{{ printf "%#v" . }}
{{ end }}
在某些情况下,可以更有帮助地使用以下代码片段在当前上下文中获取一个漂亮的显示视图,以便查看可以使用的内容:
<pre>{{ . | jsonify (dict "indent" " ") }}</pre>
请注意,如果您尝试使用此结构来显示包含页面集合的上下文(例如传递给主页、部分、分类和术语模板的上下文),Hugo 会引发错误。
为什么没有显示定义的变量?
检查在 partial
函数中是否传递了变量:
{{ partial "header.html" }}
这个示例将渲染 header 部分,但 header 部分将无法访问任何上下文变量。您需要显式地传递变量。例如,注意添加了 “点”。
{{ partial "header.html" . }}
点 (.
) 被认为是理解 Hugo 模板的基础。有关更多信息,请参阅 Hugo 模板入门指南。