HUGO
News Docs Themes Community GitHub

Store

Returns a “scratch pad” to store and manipulate data, scoped to the current page.

Syntax

PAGE.Store

Returns

maps.Scratch

Use the Store method on a Page object to create a scratch pad to store and manipulate data, scoped to the current page. To create a scratch pad with a different scope, refer to the scope section below.

Methods

Set

Sets the value of the given key.

{{ .Store.Set "greeting" "Hello" }}

Get

Gets the value of the given key.

{{ .Store.Set "greeting" "Hello" }}
{{ .Store.Get "greeting" }} → Hello

Add

Adds the given value to the existing value(s) of the given key.

For single values, Add accepts values that support Go’s + operator. If the first Add for a key is an array or slice, the following adds will be appended to that list.

{{ .Store.Set "greeting" "Hello" }}
{{ .Store.Add "greeting" "Welcome" }}
{{ .Store.Get "greeting" }} → HelloWelcome
{{ .Store.Set "total" 3 }}
{{ .Store.Add "total" 7 }}
{{ .Store.Get "total" }} → 10
{{ .Store.Set "greetings" (slice "Hello") }}
{{ .Store.Add "greetings" (slice "Welcome" "Cheers") }}
{{ .Store.Get "greetings" }} → [Hello Welcome Cheers]

SetInMap

Takes a key, mapKey and value and adds a map of mapKey and value to the given key.

{{ .Store.SetInMap "greetings" "english" "Hello" }}
{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
{{ .Store.Get "greetings" }} → map[english:Hello french:Bonjour]

DeleteInMap

Takes a key and mapKey and removes the map of mapKey from the given key.

{{ .Store.SetInMap "greetings" "english" "Hello" }}
{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
{{ .Store.DeleteInMap "greetings" "english" }}
{{ .Store.Get "greetings" }} → map[french:Bonjour]

GetSortedMapValues

Returns an array of values from key sorted by mapKey.

{{ .Store.SetInMap "greetings" "english" "Hello" }}
{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
{{ .Store.GetSortedMapValues "greetings" }} → [Hello Bonjour]

Delete

Removes the given key.

{{ .Store.Set "greeting" "Hello" }}
{{ .Store.Delete "greeting" }}

Scope

The method or function used to create a scratch pad determines its scope. For example, use the Store method on a Page object to create a scratch pad scoped to the page.

Scope Method or function
page PAGE.Store
site SITE.Store
global hugo.Store
local collections.NewScratch
shortcode SHORTCODE.Store

Determinate values

The Store method is often used to set scratch pad values within a shortcode, a partial template called by a shortcode, or by a Markdown render hook. In all three cases, the scratch pad values are indeterminate until Hugo renders the page content.

If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a noop variable:

{{ $noop := .Content }}
{{ .Store.Get "mykey" }}

You can also trigger content rendering with the ContentWithoutSummary, FuzzyWordCount, Len, Plain, PlainWords, ReadingTime, Summary, Truncated, and WordCount methods. For example:

{{ $noop := .WordCount }}
{{ .Store.Get "mykey" }}

Last updated: January 1, 0001
Improve this page