If you’re building a new Hugo
theme, this is the most useful partial for debugging purposes. It will show the page variables available to you on any given page.
Output
HTML
<!-- themes/your-theme/layouts/partials/hugo-variables.html -->
<div class="h-40 mb-4 py-4 px-4 overflow-y-auto scrolling-touch border-t border-gray-200">
<table class="w-full text-left table-auto table-collapse border-gray-200">
<caption class="text-left pb-2">Hugo Variables for the current page.</caption>
<thead>
<tr class="p-2 font-semibold bg-gray-100 border-t ">
<th>Variable</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr class="p-2 border-t">
<td>.Name</td>
<td>{{ printf "%#v" .Name }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Title</td>
<td>{{ printf "%#v" .Title }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Kind</td>
<td>{{ printf "%#v" .Kind }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Type</td>
<td>{{ printf "%#v" .Type }}</td>
</tr>
<tr class="p-2 border-t">
<td>.IsPage</td>
<td>{{ printf "%#v" .IsPage }}</td>
</tr>
<tr class="p-2 border-t">
<td>.IsHome</td>
<td>{{ printf "%#v" .IsHome }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Next</td>
<td>{{ printf "%v" .Next }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Prev</td>
<td>{{ printf "%v" .Prev }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Params</td>
<td>
<table>
{{ range $k,$v := .Params }}
<tr>
<td class="text-right italic pr-2">{{ printf "%#v:" $k }}</td>
<td>{{ printf "%#v" $v }}</td>
</tr>
{{ end }}
</table>
</td>
</tr>
<tr class="p-2 border-t">
<td>.Section</td>
<td>{{ printf "%#v" .Section }}</td>
</tr>
<tr class="p-2 border-t">
<td>.CurrentSection</td>
<td>{{ printf "%v" .CurrentSection }}</td>
</tr>
<tr class="p-2 border-t">
<td>.Pages</td>
<td>
{{ printf "%v" .Pages }}
<table>
{{- range $k,$v := .Pages }}
<tr>
<td class="text-right italic pr-2">{{ printf "%#v:" $k }}</td>
<td>{{ printf "%v" $v }}</td>
</tr>
{{ end -}}
</table>
</td>
</tr>
<tr class="p-2 border-t">
<td>.Resources</td>
<td>{{ printf "%v" .Resources }}</td>
</tr>
<tr class="p-2 border-t">
<td>.File</td>
<td>{{ if .File }}{{ printf "%v" .File }}{{ else}}""{{ end }}</td>
</tr>
<tr class="p-2 border-t">
<td>.File.Dir</td>
<td>{{ if .File }}{{ printf "%#v" .File.Dir }}{{ else}}""{{ end }}</td>
</tr>
</tbody>
</table>
</div>
Final
Now you can use your partial wherever you want. I keep mine in my _baseof.html
<!DOCTYPE html>
<html lang='{{ .Site.LanguageCode }}'>
{{ partial "head.html" . }}
<body>
{{- partial "header.html" . -}}
{{- block "main" . }}{{- end }}
{{- partial "hugo-variables.html" . -}}
{{- partial "footer.html" . -}}
</body>
</html>