今天要來簡單聊一下 Hugo Variables,並列舉一些筆者使用的例子。
全局變數 (site-level, global),大多在 configuration 中被定義,例如 {{ .Site.BaseURL }}
,在 config.toml
中參數為 baseURL
,之前講到 Shortcode 網址應用時,有取用這個變數來組成「文章永久鏈結」。
相關可調用頁面:
包括分類頁面 (taxonomy page)、一般頁面 (regular page),與所有 hugo template page 都可使用。
Shortcode 變數,包括了 built-in 的變數,以及可在 Shortcode HTML 中使用部分的 Site 變數,與 Page 變數。
筆者在 Shortcode 中比較常用的有 {{ .Inner }}
變數,這是用來取得 {{< shortcode >}}I am Inner Content.{{< /shortcode >}}
這段,包在成對標籤中的內容時使用的。
相關可調用頁面:
這邊說的 Shortcode 變數,泛指 Shortcode built-it 的變數,也就是「只有在 Shortcode file 中」調用,才能取得「關於該 Shortcode 資訊」的變數。
另外還有許多在 Shortcode file 中,可調用的其他變數,例如 Site Variable,是不同的變數集合。
頁面變數 (page-level),通常會在 Front Matter 中被定義,或是從 Content Page 內容中擷取。這邊官方還有提到「檔案的位置」也是定義頁面變數的來源之一,筆者推測應是指「檔案位置的不同」也會是一種頁面的變數。
頁面變數可衍伸的運用還蠻廣的,例如「取得預估閱讀時間 ReadingTime」、用於「判斷」的變數 (.IsXXX
),「取得文章預計過期時間 ExpiryDate」、「文章發布時間 PublishDate」、「取得內容目錄 TableOfContents」,或是「頁面相對網址 RelPermalink」等等。
相關可調用頁面:
筆者目前比較常在 Shortcode Template 與 Single Page Templates 中調用這類變數。
筆者在看這部分的官方文件時,認為變數的調用,可以從「作用域」這個點去理解,例如 Shortcode 是在 Markdown 中引入,作用域是 {{< shortcode >}}
,若我們想取得整個 Page 的 Content (.Content),則:
# 在 Shortcode 中調用 Page-Level 變數:
# X : can't evaluate field Content in type *hugolib.ShortcodeWithPage
{{ .Content }}
# O
{{ .Page.Content }}
其實一開始這篇主題,筆者感覺要放在前面一點研究來介紹,會放到這麼後面講,一來是筆者自己還不熟 (雖然現在也是),不清楚這些 Hugo 變數到底要如何運用,用不用又跟自己的專案有什麼關係,甚至想使用,卻連測試都沒辦法正常運行;
二來,放在前面就聊這些程式的東西 (累+懶),跟打造網站這主題好像又有點對不上;
不過經過這些日子的旁敲側擊,也算是稍微稍微稍微有點心得,就在此做個簡單分享,有機會也希望能獲得更多高手的指教,謝謝。