Hugo Set Global Variable In Template

August 27, 2017
Use .Scratch

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;
This work is licensed under a
Creative Commons Attribution-NonCommercial 4.0 International License.