When working with Hugo, you may encounter the need to pass multiple parameters to a partial. While it may initially appear to be a simple task, there is actually a trick to accomplishing this. In this blog post, we will explore how to pass multiple parameters to a partial in Hugo.
First, it’s important to note that in a partial, you cannot directly access .Site.Pages
to retrieve the list of pages on your site due to scope issues. To work around this limitation, you need to create a dictionary and populate it with the desired parameters.
Here’s an example of how you can pass two parameters, context
and pages
, to a partial:
{{ partial "my-partial.html" (dict "context" . "pages" $.Site.Pages) }}
In this code snippet, we are using (dict "context" . "pages" $.Site.Pages)
as the parameter instead of just .
as is typically done with partials. By passing a dictionary with the desired parameters, we can access them within the partial.
Inside the partial, you will now need to use .context
instead of .
to access the current context variables. If you want to access the value assigned to pages
, you can use .pages
.
And the great thing is that you can pass multiple items to the dict
if needed. Just add more key-value pairs to the dictionary to include additional parameters.
By utilizing the technique of passing a dictionary to a partial, you can effectively pass multiple parameters and work around scope limitations in Hugo.
Tags: Hugo, partials, parameters, scope