39a7fac34 Add .hugo_build.lock to .gitignore 920c716a4 fix a typo: to -> two (#1545) 6f0ba9593 Remove godocref from front matter (#1543) 8ec3d5948 remove link to wercker (#1544) b56008719 Delete deployment-with-wercker.md (#1542) e33d29b02 Fix broken links (#1538) 29e9d4c21 Sort commenting systems (#1541) 0b7ea60a7 Delete the news page "HTTP/2 Server Push in Hugo" 6e1515857 Fix quick-start.md (#1525) 62168ab35 Update comments.md (#1535) d92191512 Small typo (#1539) 129c8834a Correct the PostCSS noMap default value (#1534) 6a5b29fcc Add example to index function (#1536) e3dd8c507 Update output-formats.md 0c9321ca0 Remove reference to using LiveReload in production environment 4072d6776 Mod testing 09fabf7d6 Fix typo (#1524) 2fce813c8 Fix grammatical error in quick-start.md (#1523) 45230ab4a Hugo Mod testing 2dd4cd9e7 Update index.md 2c3ed62fd netlify: Bump to 0.88.1 648e2a007 Merge branch 'tempv0.88.1' f216eade1 releaser: Add release notes to /docs for release of 0.88.1 8a7b64d4b Fix typographical errors in 0.88.0 release notes a4bf86300 Release 0.88 738bb8f38 releaser: Add release notes to /docs for release of 0.88.0 8fcf2c55d highlight: Remove some pygments references f2b173de2 HTTPS link c88881c8e Adding link to nginx documentation 6b0a74fe0 Fix typos in docs (#1516) 498b8f0f1 Fix typos in time.Format (#1515) 28723fad6 Fix taxonomy and term examples (#1514) 3ffd00e12 Update front-matter.md 7cc1da82e Fix grammar in 0.86.1 release notes (#1510) 0009c51c3 Update docs helper 7e2f430f4 Update index.md 7857eae7e releaser: Add release notes to /docs for release of 0.87.0 1f08b684b releaser: Add release notes to /docs for release of 0.87.0 36a9e701c docs: Adjust config docs 0f588438e docs: Regen CLI docs 1b4682cd8 docs: Regen docs helper bc8bbaae9 Merge commit 'bd77f6e1c99e04a476f0b1bb4e44569134e02399' into release-0.87.0 6f2480643 docs: Adjust time zone docs git-subtree-dir: docs git-subtree-split: 39a7fac343c289906db644c96079fdcc0298582f
4.9 KiB
title | linktitle | description | date | publishdate | lastmod | categories | keywords | menu | weight | sections_weight | draft | aliases | toc | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Base 模板 and Blocks | The base and block constructs allow you to define the outer shell of your master templates (i.e., the chrome of the page). | 2017-02-01 | 2018-08-11 | 2017-02-01 |
|
|
|
20 | 20 | false |
|
true |
The block
keyword allows you to define the outer shell of your pages' one or more master template(s) and then fill in or override portions as necessary.
{{< youtube QVOMCYitLEc >}}
Base Template Lookup Order
The lookup order for base templates is as follows:
/layouts/section/<TYPE>-baseof.html
/themes/<THEME>/layouts/section/<TYPE>-baseof.html
/layouts/<TYPE>/baseof.html
/themes/<THEME>/layouts/<TYPE>/baseof.html
/layouts/section/baseof.html
/themes/<THEME>/layouts/section/baseof.html
/layouts/_default/<TYPE>-baseof.html
/themes/<THEME>/layouts/_default/<TYPE>-baseof.html
/layouts/_default/baseof.html
/themes/<THEME>/layouts/_default/baseof.html
Variables are denoted by capitalized text set within <>
. Note that Hugo's default behavior is for type
to inherit from section
unless otherwise specified.
Example Base Template Lookup Order
As an example, let's assume your site is using a theme called "mytheme" when rendering the section list for a posts
section. Hugo picks layout/section/posts.html
as the template for rendering the section. The {{define}}
block in this template tells Hugo that the template is an extension of a base template.
Here is the lookup order for the posts
base template:
/layouts/section/posts-baseof.html
/themes/mytheme/layouts/section/posts-baseof.html
/layouts/posts/baseof.html
/themes/mytheme/layouts/posts/baseof.html
/layouts/section/baseof.html
/themes/mytheme/layouts/section/baseof.html
/layouts/_default/posts-baseof.html
/themes/mytheme/layouts/_default/posts-baseof.html
/layouts/_default/baseof.html
/themes/mytheme/layouts/_default/baseof.html
Define the Base Template
The following defines a simple base template at _default/baseof.html
. As a default template, it is the shell from which all your pages will be rendered unless you specify another *baseof.html
closer to the beginning of the lookup order.
{{< code file="layouts/_default/baseof.html" download="baseof.html" >}}
<html> <head> </head> {{ block "main" . }} {{ end }} {{ block "footer" . }} {{ end }} </html> {{< /code >}}Override the Base Template
From the above base template, you can define a default list template. The default list template will inherit all of the code defined above and can then implement its own "main"
block from:
{{< code file="layouts/_default/list.html" download="list.html" >}} {{ define "main" }}
Posts
{{ range .Pages }}{{ .Title }}
{{ .Content }}This replaces the contents of our (basically empty) "main" block with something useful for the list template. In this case, we didn't define a "title"
block, so the contents from our base template remain unchanged in lists.
{{% warning %}} Code that you put outside the block definitions can break your layout. This even includes HTML comments. For example:
<!-- Seemingly harmless HTML comment..that will break your layout at build -->
{{ define "main" }}
...your code here
{{ end }}
See this thread from the Hugo discussion forums. {{% /warning %}}
The following shows how you can override both the "main"
and "title"
block areas from the base template with code unique to your default single page template:
{{< code file="layouts/_default/single.html" download="single.html" >}} {{ define "title" }}
{{ .Title }} – {{ .Site.Title }} {{ end }} {{ define "main" }}