To set a global variable in Hugo template, use .Scratch.
In the following example, a global variable of name
can be read and write at both _default/baseof.html
and partials/content.html
.
layouts/_default/baseof.html
<!DOCTYPE html><html> ... <body> {{ $.Scratch.Set "name" "baseof" }} {{/* baseof.name=baseof; */}} baseof.name={{ $.Scratch.Get "name" }}; {{ partial "content.html" . }} {{/* baseof.name=content; */}} baseof.name={{ $.Scratch.Get "name" }}; </body> </html>
layouts/partials/content.html
{{/* baseof.name=baseof; */}}content.name={{ $.Scratch.Get "name" }}{{ $.Scratch.Set "name" "content" }};{{/* baseof.name=content; */}}content.name={{ $.Scratch.Get "name" }};
Output.
baseof.name=baseof;
content.name=baseof;
content.name=content;
baseof.name=content;