sidebar 就是右側那些連結、分類等所呈現的地方
Go Template
要改網頁呈現架構,自然而然的會去修改html檔
但是Hugo的html檔允許使用go template,需要先了解才改的動別人寫好的模板
EX:
至少必須先了解{{ .URL }} 、{{.Name}} 才有辦法加入新的內容
語法
參照 官網 介紹
Hugo 使用了Go語言的html/template 與 text/template函式庫
語法方面,Go template會使用 {{ }} 包住變數 與函式
變數
變數可分為兩種類型,已存在變數(a variable already existing in the current scope)以及自定義變數(custom variables)
其中已存在變數會使用 .Variable 自定義變數會使用.Variable的方式取用
例如:
{{ .Title }}
{{ $address }}
而在Hugo, 會有一個名為Page的類全域變數存在,裡面紀錄很多關於當前頁面的資訊,而上例的Title就是其中一個member
函式
格式為 函式名稱,後面以空格分開各個變數
{{function arg1 arg2 …}}
比如
{{add 1 2}} 會得到 3
常用函式1 if
例如下面是一個檢查是否為首頁的小區塊
{{ $var := "Page" }}
{{ if .IsHome }} # 如果是首頁,就把var設定成Home
{{ $var = "Home" }}
{{ end }}
Var is {{ $var }}
常用函式2 range
類似於python for 迭代器的概念
比如出現在範例圖中的
{{ range .Site.Menus.nav }} ... {{end}}
就是能迭代取出Site.Menus.nav中的所有Menu紀錄的資料
常用函式3 partial
類似include的概念,可以引入寫好的檔案
比如
{{ partial "sidebar.html" . }}
是trace Hugo code時很好用的觀念
著手修改
有了上述的基本概念後,回來觀察sidebar.html
就不難理解其架構為
迭代的取出.Site.Menus.nav , 也就是設定好的Menus參數,然後印出Menus中的URL 與 Name
- 小觀念提醒: URL因為與Menus.nav在迭代取用的時候,就已經定義好了,因此可以用 . 來取用
而Menus的可於config.toml設定
EX:
注意
- 只需遵照toml的格式,以後就可以append更多連結了
- menus底下的nav , category都是可以自訂的,也因此可依"連結區"依樣畫葫蘆產生"分類區”
參考資料
Introduction to Hugo Templating:
https://gohugo.io/templates/introduction/