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