Shortcode

Store

返回一个持久化的数据结构,用于存储和操作带 key 的值,作用域为当前短代码。

签名
SHORTCODE.Store
返回类型
maps.Scratch

(0.139.0 新增)

用 Store 方法可以创建一个持久化的数据结构,用于存储和操作带 key 的值,作用域为当前短代码。要创建其他作用域的数据结构,请参见下面的作用域一节。

方法

在数据结构上使用这些方法。

Set
设置给定 key 的值。
{{ .Store.Set "greeting" "Hello" }}
Get
(any)获取给定 key 的值。
{{ .Store.Set "greeting" "Hello" }}
{{ .Store.Get "greeting" }} → Hello
Add
把给定值加到给定 key 的现有值上。

对于单个值,Add 接受支持 Go 的 + 运算符的值。如果对某个 key 的第一次 Add 操作是数组或切片,后续的 add 会追加到该列表中。

{{ .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
接受 key、mapKey 和 value,并把由 mapKey 和 value 构成的映射加入给定的 key。
{{ .Store.SetInMap "greetings" "english" "Hello" }}
{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
{{ .Store.Get "greetings" }} → map[english:Hello french:Bonjour]
DeleteInMap
接受 key 和 mapKey,并从给定的 key 中移除 mapKey 对应的映射。
{{ .Store.SetInMap "greetings" "english" "Hello" }}
{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
{{ .Store.DeleteInMap "greetings" "english" }}
{{ .Store.Get "greetings" }} → map[french:Bonjour]
GetSortedMapValues
([]any)返回 key 中的值数组,按 mapKey 排序。
{{ .Store.SetInMap "greetings" "english" "Hello" }}
{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
{{ .Store.GetSortedMapValues "greetings" }} → [Hello Bonjour]
Delete
移除给定的 key。
{{ .Store.Set "greeting" "Hello" }}
{{ .Store.Delete "greeting" }}

作用域

用于创建该数据结构的方法或函数决定了它的作用域。例如,用 Page 对象上的 Store 方法创建的数据结构,其作用域就是该页面。

作用域 方法或函数
page PAGE.Store
site SITE.Store
global hugo.Store
local collections.NewScratch
shortcode SHORTCODE.Store