iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
0
Modern Web

Hugo 貼身打造個人部落格系列 第 26

Day 26. Hugo Variable

前言

今天要來簡單聊一下 Hugo Variables,並列舉一些筆者使用的例子。

Site Variables

全局變數 (site-level, global),大多在 configuration 中被定義,例如 {{ .Site.BaseURL }},在 config.toml 中參數為 baseURL,之前講到 Shortcode 網址應用時,有取用這個變數來組成「文章永久鏈結」。

相關可調用頁面:

包括分類頁面 (taxonomy page)、一般頁面 (regular page),與所有 hugo template page 都可使用。

Shortcode Variables

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 Variables

頁面變數 (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 變數到底要如何運用,用不用又跟自己的專案有什麼關係,甚至想使用,卻連測試都沒辦法正常運行;

二來,放在前面就聊這些程式的東西 (累+懶),跟打造網站這主題好像又有點對不上;

不過經過這些日子的旁敲側擊,也算是稍微稍微稍微有點心得,就在此做個簡單分享,有機會也希望能獲得更多高手的指教,謝謝。

參考連結


上一篇
Day 25. Hugo Shortcode 其他運用
下一篇
Day 27. Hugo Template
系列文
Hugo 貼身打造個人部落格30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言