resources.ExecuteAsTemplate

resources.ExecuteAsTemplate


Returns a resource created from a Go template, parsed and executed with the given context.

The resources.ExecuteAsTemplate function returns a resource created from a Go template, parsed and executed with the given context, caching the result using the target path as its cache key.

Hugo publishes the resource to the target path when you call its [Publish], [Permalink], or [RelPermalink] methods.

Let’s say you have a CSS file that you wish to populate with values from your site configuration:

assets/css/template.css
body {
  background-color: {{ site.Params.style.bg_color }};
  color: {{ site.Params.style.text_color }};
}

And your site configuration contains:

hugo.
     
params:
  style:
    bg_color: '#fefefe'
    text_color: '#222'
[params]
  [params.style]
    bg_color = '#fefefe'
    text_color = '#222'
{
   "params": {
      "style": {
         "bg_color": "#fefefe",
         "text_color": "#222"
      }
   }
}

Place this in your baseof.html template:

{{ with resources.Get "css/template.css" }}
  {{ with resources.ExecuteAsTemplate "css/main.css" $ . }}
    <link rel="stylesheet" href="{{ .RelPermalink }}">
  {{ end }}
{{ end }}

The example above:

  1. Captures the template as a resource
  2. Executes the resource as a template, passing the current page in context
  3. Publishes the resource to css/main.css

The result is:

public/css/main.css
body {
  background-color: #fefefe;
  color: #222;
}