Base templates
block
關鍵字允許您定義頁面的一個或多個主範本的外部框架,並根據需要填充或覆寫部分內容。
基本範本查找順序
基本範本的查找順序與其所應用的範本非常相似(例如,_default/list.html
)。
詳細資訊和範例請參見 範本查找順序。
定義基本範本
以下範例定義了一個簡單的基本範本,位於 _default/baseof.html
。作為預設範本,它是所有頁面渲染的外框,除非您指定一個更接近查找順序起點的 *baseof.html
。
layouts/_default/baseof.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ block "title" . }}
<!-- 區塊可以包含預設內容 -->
{{ .Site.Title }}
{{ end }}</title>
</head>
<body>
<!-- 所有範本共用的程式碼,例如標頭 -->
{{ block "main" . }}
<!-- 頁面開始與範本之間有差異的部分 -->
{{ end }}
{{ block "footer" . }}
<!-- 更多共用程式碼,可能是頁尾,但也可以根據需要覆寫 -->
{{ end }}
</body>
</html>
覆寫基本範本
預設的列表範本會繼承上述所有程式碼,然後實現自己的 "main"
區塊,如下所示:
layouts/_default/list.html
{{ define "main" }}
<h1>文章</h1>
{{ range .Pages }}
<article>
<h2>{{ .Title }}</h2>
{{ .Content }}
</article>
{{ end }}
{{ end }}
這會將我們(基本上是空的)“main” 區塊的內容替換為對列表範本有用的內容。在這個範例中,我們沒有定義 "title"
區塊,因此來自基本範本的內容在列表中保持不變。
以下範例顯示了如何使用特定於您的預設 單一範本 的程式碼來覆寫基本範本的 "main"
和 "title"
區塊區域:
layouts/_default/single.html
{{ define "title" }}
<!-- 這會覆寫 baseof.html 中設定的預設值;即原始範例中的 "{{ .Site.Title }}" -->
{{ .Title }} – {{ .Site.Title }}
{{ end }}
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ end }}