Store
返回一個"暫存板"來存儲和操作數據,作用域為當前站點。
Syntax
site.Store
Returns
maps.Scratch
使用 Site 對象上的 Store 方法創建一個 暫存板 來存儲和操作數據,作用域為當前站點。要創建一個具有不同 作用域 的暫存板,請參閱下面的 作用域 部分。
方法
Set
設置給定鍵的值。
{{ site.Store.Set "greeting" "Hello" }}Get
獲取給定鍵的值。
{{ site.Store.Set "greeting" "Hello" }}
{{ site.Store.Get "greeting" }} → HelloAdd
將給定值添加到給定鍵的現有值中。
對於單個值,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
接受 key、mapKey 和 value,並將 mapKey 和 value 的映射添加到給定 key。
{{ site.Store.SetInMap "greetings" "english" "Hello" }}
{{ site.Store.SetInMap "greetings" "french" "Bonjour" }}
{{ site.Store.Get "greetings" }} → map[english:Hello french:Bonjour]DeleteInMap
接受 key 和 mapKey 並從給定 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" }}您也可以使用 ContentWithoutSummary、FuzzyWordCount、Len、Plain、PlainWords、ReadingTime、Summary、Truncated 和 WordCount 方法來觸發內容渲染。例如:
{{ $noop := .WordCount }}
{{ site.Store.Get "mykey" }}