HUGO
Menu
GitHub 87548 stars Mastodon

Store

返回一个"暂存板"来存储和操作数据,作用域为当前站点。

Syntax

site.Store

Returns

maps.Scratch
New in v0.139.0

使用 Site 对象上的 Store 方法创建一个 暂存板 来存储和操作数据,作用域为当前站点。要创建一个具有不同 作用域 的暂存板,请参阅下面的 作用域 部分。

方法

Set

设置给定键的值。

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

Get

获取给定键的值。

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

Add

将给定值添加到给定键的现有值中。

对于单个值,Add 接受支持 Go 的 + 运算符的值。如果键的第一个 Add 是数组或切片,后续添加的值将附加到该列表中。

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

SetInMap

接受 keymapKeyvalue,并将 mapKeyvalue 的映射添加到给定 key

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

DeleteInMap

接受 keymapKey 并从给定 key 中移除 mapKey 的映射。

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

GetSortedMapValues

返回 key 的值数组,按 mapKey 排序。

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

Delete

移除给定键。

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

作用域

用于创建暂存板的方法或函数决定了其作用域。例如,在 Page 对象上使用 Store 方法创建作用于页面的暂存板。

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

确定性值

Store 方法通常用于在 shortcode 模板、由 shortcode 模板调用的 partial 模板或 render hook 模板中设置暂存板值。在这三种情况下,在 Hugo 渲染页面内容之前,暂存板值是不确定的。

如果您需要从父模板访问暂存板值,而父模板尚未渲染页面内容,您可以通过将返回的值分配给 noop 变量来触发内容渲染:

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

您也可以使用 ContentWithoutSummaryFuzzyWordCountLenPlainPlainWordsReadingTimeSummaryTruncatedWordCount 方法来触发内容渲染。例如:

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

Last updated: January 1, 0001
Improve this page