From 65f9427031ae57c0d78360dbbfe03428fe922b49 Mon Sep 17 00:00:00 2001 From: Erik Ebsen Date: Sat, 2 Apr 2016 10:34:04 -0500 Subject: [PATCH] docs: Document Go 1.6's new ability to trim whitespace --- docs/content/templates/blocks.md | 71 ++++++++++++++++++++++++++ docs/content/templates/go-templates.md | 32 ++++++++++++ docs/content/templates/partials.md | 2 +- docs/content/templates/views.md | 2 +- 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 docs/content/templates/blocks.md diff --git a/docs/content/templates/blocks.md b/docs/content/templates/blocks.md new file mode 100644 index 000000000..ecff3021f --- /dev/null +++ b/docs/content/templates/blocks.md @@ -0,0 +1,71 @@ +--- +date: 2016-03-29T21:26:20-05:00 +menu: + main: + parent: layout +prev: /templates/views/ +next: /templates/partials/ +title: Block Templates +weight: 80 +--- + +Go 1.6 includes a powerful new keyword, `block`. This construct allows you to define the outer shell of your pages in a single "base" template, filling in or overriding portions as necessary. + +## Define the base template + +Let's define a simple base template, a shell from which all our pages will start. To find a base template, Hugo searches the same paths and file names as it does for [Ace templates]({{< relref "templates/ace.md" >}}), just with files suffixed `.html` rather than `.ace`. + +```html + + + + + {{ block "title" . }} + <!-- Blocks may include default content. --> + {{ .Site.Title }} + {{ end }} + + + + + {{ block "main" . }} + + {{ end }} + + + + +``` + +## Overriding the base + +Your [default list template]({{< relref "templates/list.md" >}}) (`_default/list.html`) will inherit all of the code defined in the base template. It could then implement its own "main" block from the base template above like so: + +```html + +{{ define "main" }} +

Posts

+ {{ range .Data.Pages }} +
+

{{ .Title }}

+ {{ .Content }} +
+ {{ end }} +{{ end }} +``` + +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. + +In our [default single template]({{< relref "templates/content.md" >}}) (`_default/single.html`), let's implement both blocks: + +```html +{{ define "title" }} + {{ .Title }} – {{ .Site.Title }} +{{ end }} +{{ define "main" }} +

{{ .Title }}

+ {{ .Content }} +{{ end }} +``` + +This overrides both block areas from the base template with code unique to our single template. diff --git a/docs/content/templates/go-templates.md b/docs/content/templates/go-templates.md index 922929e78..2ba34dc8c 100644 --- a/docs/content/templates/go-templates.md +++ b/docs/content/templates/go-templates.md @@ -297,6 +297,38 @@ access this from within the loop, you will likely want to do one of the followin > You may, of course, recover from this mischief by using `{{ $ := . }}` > in a global context to reset `$` to its default value. +## Whitespace + +Go 1.6 includes the ability to trim the whitespace from either side of a Go tag by including a hyphen (`-`) and space immediately beside the corresponding `{{` or `}}` delimiter. + +For instance, the following Go template: + +```html +
+ {{ .Title }} +
+``` + +will include the newlines and horizontal tab in its HTML output: + +```html +
+ Hello, World! +
+``` + +whereas using + +```html +
+ {{- .Title -}} +
+``` + +in that case will output simply `
Hello, World!
`. + +Go considers the following characters as whitespace: space, horizontal tab, carriage return and newline. + # Hugo Parameters Hugo provides the option of passing values to the template language diff --git a/docs/content/templates/partials.md b/docs/content/templates/partials.md index 7e6ffe985..57898acc7 100644 --- a/docs/content/templates/partials.md +++ b/docs/content/templates/partials.md @@ -7,7 +7,7 @@ menu: main: parent: layout next: /templates/rss -prev: /templates/views +prev: /templates/blocks/ title: Partial Templates weight: 80 toc: true diff --git a/docs/content/templates/views.md b/docs/content/templates/views.md index 70aa3bf53..c8426ec11 100644 --- a/docs/content/templates/views.md +++ b/docs/content/templates/views.md @@ -6,7 +6,7 @@ date: 2013-07-01 menu: main: parent: layout -next: /templates/partials +next: /templates/blocks prev: /templates/terms title: Content Views weight: 70