shithub: hugo

Download patch

ref: ba45da9d03056447e4873de13d4e0f8d658a769b
parent: 1b4319be62ba071f79e90ef32dbe92eb893429f7
author: Bjørn Erik Pedersen <[email protected]>
date: Thu Sep 21 15:03:00 EDT 2017

Squashed 'docs/' changes from 44fe0285..32356e4e

32356e4e Fix typo in header of shortcode-templates.md
c8f1a2d2 Correct code example for index template function
bfa6a55d Escape code fencing
ff8b2f99 Fix typos in deployment with wercker tutorial
557c36e8 theme: Merge commit '7fbb4bed25001182bfeb91f79db0f0c1936582ee'
7fbb4bed Squashed 'themes/gohugoioTheme/' changes from 7dd8a302..ca53082d
ce31cee0 Add "See Also" config
158cee1b Make the tags into keywords
61600be6 Add a note to the related section
49edb5a2 Relase 0.27.1
c9bbc001 releaser: Add release notes to /docs for release of 0.27.1
213c6c3b Add bugs poster
8b4590cd Add KeyCDN integration tutorial
2b277859 Add tutorial videos to several docs pages
950fef1f Update roadmap to link to the correct milestones page
496f5bf6 Rename relnotes
d6f9378d Bump Netlify versions to 0.27
087fde7f Update 0.27 release notes
603f94ae docs: Document Related Content
3790f6a3 releaser: Bump versions for release of 0.27
0948868c releaser: Add release notes to /docs for release of 0.27

git-subtree-dir: docs
git-subtree-split: 32356e4eabe357ae914f4d1d59e8ae31ce936723

--- a/archetypes/default.md
+++ b/archetypes/default.md
@@ -3,7 +3,7 @@
 date: {{ .Date }}
 description: ""
 categories: []
-#tags: []
+keywords: []
 slug: ""
 aliases: []
 toc: false
--- a/config.toml
+++ b/config.toml
@@ -45,6 +45,20 @@
 isPlainText = true
 notAlternative = true
 
+[related]
+
+threshold = 80
+includeNewer = true
+toLower = false
+
+[[related.indices]]
+name = "keywords"
+weight = 100
+[[related.indices]]
+name  = "date"
+weight = 10
+pattern = "2006"
+
 [social]
 twitter = "GoHugoIO"
 
@@ -52,7 +66,7 @@
 [params]
   description = "The world’s fastest framework for building websites"
   ## Used for views in rendered HTML (i.e., rather than using the .Hugo variable)
-  release = "0.26"
+  release = "0.27.1"
   ## Setting this to true will add a "noindex" to *EVERY* page on the site
   removefromexternalsearch = false
   ## Gh repo for site footer (include trailing slash)
--- a/content/about/_index.md
+++ b/content/about/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: []
-#tags: []
+keywords: []
 menu:
   docs:
     parent: "about"
--- a/content/about/benefits.md
+++ b/content/about/benefits.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [ssg,static,performance,security]
+keywords: [ssg,static,performance,security]
 menu:
   docs:
     parent: "about"
--- a/content/about/license.md
+++ b/content/about/license.md
@@ -6,7 +6,7 @@
 publishdate: 2016-02-01
 lastmod: 2016-03-02
 categories: ["about hugo"]
-#tags: ["License","apache"]
+keywords: ["License","apache"]
 menu:
   docs:
     parent: "about"
--- a/content/about/roadmap.md
+++ b/content/about/roadmap.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [about hugo]
-#tags: [about,contribute,roadmap]
+keywords: [about,contribute,roadmap]
 menu:
   docs:
     parent: "about"
@@ -42,7 +42,7 @@
 [doccontribute]: /contribute/documentation/
 [hosting and deployment]: /hosting-and-deployment/
 [migrate]: /tools/migrations/
-[milestones]: https://github.com/gohugoio/hugo/milestone/14
+[milestones]: https://github.com/gohugoio/hugo/milestones/
 [newissue]: https://github.com/gohugoio/hugo/issues/
 [related forum thread]: https://discourse.gohugo.io/t/web-based-editor/155
 [themes]: /themes/
--- a/content/commands/_index.md
+++ b/content/commands/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [commands]
-#tags: [cli,command line]
+keywords: [cli,command line]
 menu:
   docs:
     parent: "commands"
--- a/content/content-management/_index.md
+++ b/content/content-management/_index.md
@@ -9,7 +9,7 @@
   docs:
     parent: "content-management"
     weight: 1
-#tags: [source, organization]
+keywords: [source, organization]
 categories: [content management]
 weight: 01	#rem
 draft: false
--- a/content/content-management/archetypes.md
+++ b/content/content-management/archetypes.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [archetypes,generators,metadata,front matter]
+keywords: [archetypes,generators,metadata,front matter]
 categories: ["content management"]
 menu:
   docs:
@@ -29,7 +29,7 @@
 
 **Archetypes** are content files in the [archetypes directory][] of your project that contain preconfigured [front matter][] for your website's [content types][]. Archetypes facilitate consistent metadata across your website content and allow content authors to quickly generate instances of a content type via the `hugo new` command.
 
-{{< youtube S3Tj3UcTFz8 >}}
+{{< youtube bcme8AzVh6o >}}
 
 The `hugo new` generator for archetypes assumes your working directory is the content folder at the root of your project. Hugo is able to infer the appropriate archetype by assuming the content type from the content section passed to the CLI command:
 
@@ -94,7 +94,7 @@
 
 ### Create the Default Archetype
 
-When you create a new Hugo project using `hugo new site`, you'll notice that Hugo has already scaffolded a file at `archetypes/default.md`. 
+When you create a new Hugo project using `hugo new site`, you'll notice that Hugo has already scaffolded a file at `archetypes/default.md`.
 
 The following examples are from a site that's using `tags` and `categories` as [taxonomies][]. If we assume that all content files will require these two key-values, we can create a `default.md` archetype that *extends* Hugo's base archetype. In this example, we are including "golang" and "hugo" as tags and "web development" as a category.
 
--- a/content/content-management/authors.md
+++ b/content/content-management/authors.md
@@ -5,7 +5,7 @@
 date: 2016-08-22
 publishdate: 2017-03-12
 lastmod: 2017-03-12
-#tags: [authors]
+keywords: [authors]
 categories: ["content management"]
 menu:
   docs:
--- a/content/content-management/comments.md
+++ b/content/content-management/comments.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-03-09
-#tags: [sections,content,organization]
+keywords: [sections,content,organization]
 categories: [project organization, fundamentals]
 menu:
   docs:
--- a/content/content-management/cross-references.md
+++ b/content/content-management/cross-references.md
@@ -5,7 +5,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-03-31
 categories: [content management]
-#tags: ["cross references","references", "anchors", "urls"]
+keywords: ["cross references","references", "anchors", "urls"]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/formats.md
+++ b/content/content-management/formats.md
@@ -6,7 +6,7 @@
 publishdate: 2017-01-10
 lastmod: 2017-04-06
 categories: [content management]
-#tags: [markdown,asciidoc,mmark,content format]
+keywords: [markdown,asciidoc,mmark,content format]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/front-matter.md
+++ b/content/content-management/front-matter.md
@@ -6,7 +6,7 @@
 publishdate: 2017-01-09
 lastmod: 2017-02-24
 categories: [content management]
-#tags: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
+keywords: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
 menu:
   docs:
     parent: "content-management"
@@ -18,6 +18,8 @@
 ---
 
 **Front matter** allows you to keep metadata attached to an instance of a [content type][]---i.e., embedded inside a content file---and is one of the many features that gives Hugo its strength.
+
+{{< youtube Yh2xKRJGff4 >}}
 
 ## Front Matter Formats
 
--- a/content/content-management/menus.md
+++ b/content/content-management/menus.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-03-31
 categories: [content management]
-#tags: [menus]
+keywords: [menus]
 draft: false
 menu:
   docs:
--- a/content/content-management/multilingual.md
+++ b/content/content-management/multilingual.md
@@ -6,7 +6,7 @@
 publishdate: 2017-01-10
 lastmod: 2017-01-10
 categories: [content management]
-#tags: [multilingual,i18n, internationalization]
+keywords: [multilingual,i18n, internationalization]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/organization.md
+++ b/content/content-management/organization.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [content management,fundamentals]
-#tags: [sections,content,organization]
+keywords: [sections,content,organization]
 menu:
   docs:
     parent: "content-management"
@@ -23,6 +23,8 @@
 {{% todo %}}
 See above
 {{% /todo %}}
+
+{{< youtube 0GZxidrlaRM >}}
 
 ## Organization of Content Source
 
--- /dev/null
+++ b/content/content-management/related.md
@@ -1,0 +1,138 @@
+---
+title: Related Content
+description: List related content in "See Also" sections.
+date: 2017-09-05
+categories: [content management]
+keywords: [content]
+menu:
+  docs:
+    parent: "content-management"
+    weight: 40
+weight: 30
+draft: false
+aliases: [/content/related/,/related/]
+toc: true
+---
+
+{{% note %}}
+We currently do not index **Page content**. We thought we would release something that will make most people happy before we start solving [Sherlock's last case](https://github.com/joearms/sherlock).
+{{% /note %}}
+
+## List Related Content
+
+To list up to 5 related pages is as simple as including something similar to this partial in your single page template:
+
+{{< code file="layouts/partials/related.html" >}}
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+<h3>See Also</h3>
+<ul>
+	{{ range . }}
+	<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+	{{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+The full set of methods available on the page lists can bee seen in this Go interface:
+
+```go
+// A PageGenealogist finds related pages in a page collection. This interface is implemented
+// by Pages and PageGroup, which makes it available as `{{ .RegularPages.Related . }}` etc.
+type PageGenealogist interface {
+
+	// Template example:
+	// {{ $related := .RegularPages.Related . }}
+	Related(doc related.Document) (Pages, error)
+
+	// Template example:
+	// {{ $related := .RegularPages.RelatedIndices . "tags" "date" }}
+	RelatedIndices(doc related.Document, indices ...interface{}) (Pages, error)
+
+	// Template example:
+	// {{ $related := .RegularPages.RelatedTo ( keyVals "tags" "hugo" "rocks")  ( keyVals "date" .Date ) }}
+	RelatedTo(args ...types.KeyValues) (Pages, error)
+}
+```
+## Configure Related Content
+Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed.
+
+{{% note %}}
+If you add a `related` config section, you need to add a complete configuration. It is not possible to just set, say, `includeNewer` and use the rest  from the Hugo defaults.
+{{% /note %}}
+
+Below is a sample `config.toml` section:
+
+```
+[related]
+
+# Only include matches with rank >= threshold. This is a normalized rank between 0 and 100.
+threshold = 80
+
+# To get stable "See also" sections we, by default, exclude newer related pages.
+includeNewer = false
+
+# Will lower case keywords in both queries and in the indexes.
+toLower = false
+
+[[related.indices]]
+name = "keywords"
+weight = 150
+[[related.indices]]
+name  = "author"
+toLower = true
+weight = 30
+[[related.indices]]
+name  = "tags"
+weight = 100
+[[related.indices]]
+name  = "date"
+weight = 10
+pattern = "2006"
+```
+### Top Level Config Options
+
+threshold
+:  A value between 0-100. Lower value will give more, but maybe not so relevant, matches.
+
+includeNewer
+:  Set to true to include **pages newer than the current page** in the related content listing. This will mean that the output for older posts may change as new related content gets added.
+
+toLower
+: Set to true to lower case keywords in both the indexes and the queries. This may give more accurate results at a slight performance penalty. Note that this can also be set per index.
+
+### Config Options per Index
+
+name
+:  The index name. This value maps directly to a page param. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects. 
+
+weight
+: An integer weight that indicates _how important_ this parameter is relative to the other parameters.  It can be 0, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best.
+
+pattern
+: This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
+
+toLower
+: See above.
+
+## Performance Considerations
+
+**Fast is Hugo's middle name** and we would not have released this feature had it not been blistering fast. 
+
+This feature has been in the back log and requested by many for a long time. The development got this recent kick start from this Twitter thread:
+
+{{< tweet 898398437527363585 >}}
+
+Scott S. Lowe removed the "Related Content" section built using the `intersect` template function on tags, and the build time dropped from 30 seconds to less than 2 seconds on his 1700 content page sized blog. 
+
+He should now be able to add an improved version of that "Related Content" section without giving up the fast live-reloads. But it's worth noting that:
+
+* If you don't use any of the `Related` methods, you will not use the Relate Content feature, and performance will be the same as before.
+* Calling `.RegularPages.Related` etc. will create one inverted index, also sometimes named posting list, that will be reused for any lookups in that same page collection. Doing that in addition to, as an example, calling `.Pages.Related` will work as expected, but will create one additional inverted index. This should still be very fast, but worth having in mind, especially for bigger sites.
+
+
+
+
+
+
+
--- a/content/content-management/sections.md
+++ b/content/content-management/sections.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [content management]
-#tags: [lists,sections,content types,organization]
+keywords: [lists,sections,content types,organization]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/shortcodes.md
+++ b/content/content-management/shortcodes.md
@@ -12,7 +12,7 @@
     weight: 35
 weight: 35	#rem
 categories: [content management]
-#tags: [markdown,content,shortcodes]
+keywords: [markdown,content,shortcodes]
 draft: false
 aliases: [/extras/shortcodes/]
 toc: true
@@ -29,6 +29,8 @@
 In addition to cleaner Markdown, shortcodes can be updated any time to reflect new classes, techniques, or standards. At the point of site generation, Hugo shortcodes will easily merge in your changes. You avoid a possibly complicated search and replace operation.
 
 ## Use Shortcodes
+
+{{< youtube 2xkNJL4gJ9E >}}
 
 In your content files, a shortcode can be called by calling `{{%/* shortcodename parameters */%}}`. Shortcode parameters are space delimited, and parameters with internal spaces can be quoted.
 
--- a/content/content-management/summaries.md
+++ b/content/content-management/summaries.md
@@ -6,7 +6,7 @@
 publishdate: 2017-01-10
 lastmod: 2017-01-10
 categories: [content management]
-#tags: [summaries,abstracts,read more]
+keywords: [summaries,abstracts,read more]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/taxonomies.md
+++ b/content/content-management/taxonomies.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [taxonomies,metadata,front matter,terms]
+keywords: [taxonomies,metadata,front matter,terms]
 categories: [content management]
 menu:
   docs:
@@ -32,7 +32,7 @@
 Value
 : a piece of content assigned to a term
 
-{{< youtube "-np9GX6cL38" >}}
+{{< youtube pCPCQgqC8RA >}}
 
 ## Example Taxonomy: Movie Website
 
--- a/content/content-management/toc.md
+++ b/content/content-management/toc.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [content management]
-#tags: [table of contents, toc]
+keywords: [table of contents, toc]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/types.md
+++ b/content/content-management/types.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [content management]
-#tags: [lists,sections,content types,types,organization]
+keywords: [lists,sections,content types,types,organization]
 menu:
   docs:
     parent: "content-management"
--- a/content/content-management/urls.md
+++ b/content/content-management/urls.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-03-09
-#tags: [aliases,redirects,permalinks,urls]
+keywords: [aliases,redirects,permalinks,urls]
 categories: [content management]
 menu:
   docs:
--- a/content/contribute/_index.md
+++ b/content/contribute/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [contribute]
-#tags: []
+keywords: []
 menu:
   docs:
     parent: "contribute"
--- a/content/contribute/development.md
+++ b/content/contribute/development.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [contribute]
-#tags: [dev,open source]
+keywords: [dev,open source]
 authors: [digitalcraftsman]
 menu:
   docs:
--- a/content/contribute/documentation.md
+++ b/content/contribute/documentation.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [contribute]
-#tags: [docs,documentation,community, contribute]
+keywords: [docs,documentation,community, contribute]
 menu:
   docs:
     parent: "contribute"
--- a/content/contribute/themes.md
+++ b/content/contribute/themes.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-27
 categories: [contribute]
-#tags: [contribute,themes,design]
+keywords: [contribute,themes,design]
 authors: [digitalcraftsman]
 menu:
   docs:
--- a/content/functions/GetPage.md
+++ b/content/functions/GetPage.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [sections,lists,indexes]
+keywords: [sections,lists,indexes]
 signature: [".GetPage TYPE PATH"]
 workson: []
 hugoversion:
--- a/content/functions/NumFmt.md
+++ b/content/functions/NumFmt.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-08-21
 categories: [functions]
-#tags: [numbers]
+keywords: [numbers]
 menu:
   docs:
     parent: "functions"
--- a/content/functions/_index.md
+++ b/content/functions/_index.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: []
+keywords: []
 menu:
   docs:
     parent: "functions"
--- a/content/functions/abslangurl.md
+++ b/content/functions/abslangurl.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [multilingual,i18n,urls]
+keywords: [multilingual,i18n,urls]
 signature: ["absLangURL INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/absurl.md
+++ b/content/functions/absurl.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [urls]
+keywords: [urls]
 signature: ["absURL INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/adddate.md
+++ b/content/functions/adddate.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [dates,time]
+keywords: [dates,time]
 signature: [".AddDate YEARS MONTHS DAYS"]
 workson: [times]
 hugoversion:
--- a/content/functions/after.md
+++ b/content/functions/after.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [iteration]
+keywords: [iteration]
 signature: ["after INDEX COLLECTION"]
 workson: []
 hugoversion:
--- a/content/functions/apply.md
+++ b/content/functions/apply.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [advanced]
+keywords: [advanced]
 signature: ["apply COLLETION FUNCTION [PARAM...]"]
 workson: []
 hugoversion:
--- a/content/functions/base64.md
+++ b/content/functions/base64.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 relatedfuncs: []
 signature: ["base64Decode INPUT", "base64Encode INPUT"]
 workson: []
--- a/content/functions/chomp.md
+++ b/content/functions/chomp.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [trim]
+keywords: [trim]
 signature: ["chomp INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/countrunes.md
+++ b/content/functions/countrunes.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [counting, word count]
+keywords: [counting, word count]
 signature: ["countrunes INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/countwords.md
+++ b/content/functions/countwords.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [counting, word count]
+keywords: [counting, word count]
 signature: ["countwords INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/dateformat.md
+++ b/content/functions/dateformat.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [dates,time,strings]
+keywords: [dates,time,strings]
 signature: ["dateFormat LAYOUT INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/default.md
+++ b/content/functions/default.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [defaults]
+keywords: [defaults]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/delimit.md
+++ b/content/functions/delimit.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [iteration]
+keywords: [iteration]
 toc: false
 signature: ["delimit COLLECTION DELIMIT LAST"]
 workson: [lists,taxonomies,terms]
@@ -36,7 +36,7 @@
 {{< code file="delimit-example-front-matter.toml" nocopy="true" >}}
 +++
 title: I love Delimit
-#tags: [ "tag1", "tag2", "tag3" ]
+keywords: [ "tag1", "tag2", "tag3" ]
 +++
 {{< /code >}}
 
--- a/content/functions/dict.md
+++ b/content/functions/dict.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [dictionary]
+keywords: [dictionary]
 signature: ["dict KEY VALUE [KEY VALUE]..."]
 workson: []
 hugoversion:
--- a/content/functions/echoparam.md
+++ b/content/functions/echoparam.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["echoParam DICTIONARY KEY"]
 workson: []
 hugoversion:
--- a/content/functions/emojify.md
+++ b/content/functions/emojify.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings,emojis]
+keywords: [strings,emojis]
 signature: ["emojify INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/eq.md
+++ b/content/functions/eq.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [operators,logic]
+keywords: [operators,logic]
 signature: ["eq ARG1 ARG2"]
 workson: []
 hugoversion:
--- a/content/functions/findRe.md
+++ b/content/functions/findRe.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [regex]
+keywords: [regex]
 signature: ["findRE PATTERN INPUT [LIMIT]"]
 workson: []
 hugoversion:
--- a/content/functions/first.md
+++ b/content/functions/first.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [iteration]
+keywords: [iteration]
 signature: ["first LIMIT COLLECTION"]
 workson: [lists,taxonomies,terms,groups]
 hugoversion:
--- a/content/functions/format.md
+++ b/content/functions/format.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [dates,time]
+keywords: [dates,time]
 signature: [".Format FORMAT"]
 workson: [times]
 hugoversion:
--- a/content/functions/ge.md
+++ b/content/functions/ge.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [operators,logic]
+keywords: [operators,logic]
 signature: ["ge ARG1 ARG2"]
 workson: []
 hugoversion:
--- a/content/functions/get.md
+++ b/content/functions/get.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [shortcodes]
+keywords: [shortcodes]
 signature: ["Get INDEX", "Get KEY"]
 workson: []
 hugoversion:
--- a/content/functions/getenv.md
+++ b/content/functions/getenv.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["getenv VARIABLE"]
 workson: []
 hugoversion:
--- a/content/functions/gt.md
+++ b/content/functions/gt.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [operators,logic]
+keywords: [operators,logic]
 signature: ["gt ARG1 ARG2"]
 workson: []
 hugoversion:
--- a/content/functions/hasPrefix.md
+++ b/content/functions/hasPrefix.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["hasPrefix STRING PREFIX"]
 workson: []
 hugoversion:
--- a/content/functions/haschildren.md
+++ b/content/functions/haschildren.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [menus]
+keywords: [menus]
 toc:
 signature: ["HasChildren"]
 workson: [menus]
--- a/content/functions/hasmenucurrent.md
+++ b/content/functions/hasmenucurrent.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [menus]
+keywords: [menus]
 signature: ["HasMenuCurrent"]
 workson: [menus]
 hugoversion:
--- a/content/functions/highlight.md
+++ b/content/functions/highlight.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [highlighting,pygments,code blocks,syntax]
+keywords: [highlighting,pygments,code blocks,syntax]
 signature: ["highlight INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/htmlEscape.md
+++ b/content/functions/htmlEscape.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings, html]
+keywords: [strings, html]
 signature: ["htmlEscape INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/htmlUnescape.md
+++ b/content/functions/htmlUnescape.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["htmlUnescape INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/humanize.md
+++ b/content/functions/humanize.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings,casing]
+keywords: [strings,casing]
 signature: ["humanize INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/i18n.md
+++ b/content/functions/i18n.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [internationalization,i18n,multilingual]
+keywords: [internationalization,i18n,multilingual]
 signature: ["i18n KEY", "T KEY"]
 workson: []
 hugoversion:
--- a/content/functions/imageConfig.md
+++ b/content/functions/imageConfig.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [images]
+keywords: [images]
 signature: ["imageConfig PATH"]
 workson: []
 hugoversion:
--- a/content/functions/in.md
+++ b/content/functions/in.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["in SET ITEM"]
 workson: []
 hugoversion:
--- a/content/functions/index-function.md
+++ b/content/functions/index-function.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["index COLLECTION INDEX", "index COLLECTION KEY"]
 workson: []
 hugoversion:
@@ -71,7 +71,7 @@
 The variable for `.Params.location` is a string and can therefore replace `oslo` in the example above:
 
 ```
-{{ index .Site.Data.authors .Params.author }}
+{{ index .Site.Data.locations .Params.location }}
 => map[website:https://www.oslo.kommune.no pop_city:658390 pop_metro:1717900]
 ```
 
--- a/content/functions/int.md
+++ b/content/functions/int.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings,integers]
+keywords: [strings,integers]
 signature: ["int INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/intersect.md
+++ b/content/functions/intersect.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["intersect SET1 SET2"]
 workson: []
 hugoversion:
--- a/content/functions/ismenucurrent.md
+++ b/content/functions/ismenucurrent.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [menus]
+keywords: [menus]
 signature: ["IsMenuCurrent"]
 workson: [menus]
 hugoversion:
--- a/content/functions/isset.md
+++ b/content/functions/isset.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["isset COLLECTION INDEX", "isset COLLECTION KEY"]
 workson: []
 hugoversion:
--- a/content/functions/jsonify.md
+++ b/content/functions/jsonify.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings,json]
+keywords: [strings,json]
 signature: ["jsonify INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/last.md
+++ b/content/functions/last.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: []
+keywords: []
 categories: [functions]
 menu:
   docs:
--- a/content/functions/le.md
+++ b/content/functions/le.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [operators,logic]
+keywords: [operators,logic]
 signature: ["le ARG1 ARG2"]
 workson: []
 hugoversion:
--- a/content/functions/len.md
+++ b/content/functions/len.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-04-18
 categories: [functions]
-#tags: []
+keywords: []
 signature: ["len INPUT"]
 workson: [lists,taxonomies,terms]
 hugoversion:
--- a/content/functions/lower.md
+++ b/content/functions/lower.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings,casing]
+keywords: [strings,casing]
 signature: ["lower INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/lt.md
+++ b/content/functions/lt.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [operators,logic]
+keywords: [operators,logic]
 signature: ["lt ARG1 ARG2"]
 workson: []
 hugoversion:
--- a/content/functions/markdownify.md
+++ b/content/functions/markdownify.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [markdown,content]
+keywords: [markdown,content]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/math.md
+++ b/content/functions/math.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [math, operators]
+keywords: [math, operators]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/md5.md
+++ b/content/functions/md5.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["md5 INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/ne.md
+++ b/content/functions/ne.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [operators,logic]
+keywords: [operators,logic]
 signature: ["ne ARG1 ARG2"]
 workson: []
 hugoversion:
--- a/content/functions/now.md
+++ b/content/functions/now.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [dates,time]
+keywords: [dates,time]
 signature: ["now"]
 workson: []
 hugoversion:
--- a/content/functions/param.md
+++ b/content/functions/param.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-04-30
-#tags: ["front matter"]
+keywords: ["front matter"]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/partialCached.md
+++ b/content/functions/partialCached.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["partialCached LAYOUT INPUT [VARIANT...]"]
 workson: []
 hugoversion:
--- a/content/functions/plainify.md
+++ b/content/functions/plainify.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["plainify INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/pluralize.md
+++ b/content/functions/pluralize.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["pluralize INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/printf.md
+++ b/content/functions/printf.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["printf FORMAT INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/querify.md
+++ b/content/functions/querify.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [urls]
+keywords: [urls]
 godocref:
 signature: ["querify KEY VALUE [KEY VALUE]..."]
 hugoversion:
--- a/content/functions/range.md
+++ b/content/functions/range.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [iteration]
+keywords: [iteration]
 signature: ["range COLLECTION"]
 workson: []
 hugoversion:
--- a/content/functions/readdir.md
+++ b/content/functions/readdir.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [files]
+keywords: [files]
 signature: ["readDir PATH"]
 workson: []
 hugoversion:
--- a/content/functions/readfile.md
+++ b/content/functions/readfile.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [files]
+keywords: [files]
 signature: ["readFile PATH"]
 workson: []
 hugoversion:
--- a/content/functions/ref.md
+++ b/content/functions/ref.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [cross references, anchors]
+keywords: [cross references, anchors]
 signature: ["ref PAGE CONTENT"]
 workson: []
 hugoversion:
--- a/content/functions/relLangURL.md
+++ b/content/functions/relLangURL.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [multilingual,i18n,urls]
+keywords: [multilingual,i18n,urls]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/relref.md
+++ b/content/functions/relref.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [cross references, anchors]
+keywords: [cross references, anchors]
 signature: ["relref PAGE CONTENT"]
 workson: []
 hugoversion:
--- a/content/functions/relurl.md
+++ b/content/functions/relurl.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [urls]
+keywords: [urls]
 signature: ["relURL INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/render.md
+++ b/content/functions/render.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [views]
+keywords: [views]
 signature: ["render LAYOUT"]
 workson: []
 hugoversion:
--- a/content/functions/replace.md
+++ b/content/functions/replace.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["replace INPUT OLD NEW"]
 workson: []
 hugoversion:
--- a/content/functions/replacere.md
+++ b/content/functions/replacere.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [regex]
+keywords: [regex]
 signature: ["replaceRE PATTERN REPLACEMENT INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/safeCSS.md
+++ b/content/functions/safeCSS.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [style,css,strings]
+keywords: [style,css,strings]
 signature: ["safeCSS INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/safeHTML.md
+++ b/content/functions/safeHTML.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["safeHTML INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/safeHTMLAttr.md
+++ b/content/functions/safeHTMLAttr.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["safeHTMLAttr INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/safeJS.md
+++ b/content/functions/safeJS.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["safeJS INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/safeURL.md
+++ b/content/functions/safeURL.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [strings,urls]
+keywords: [strings,urls]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/scratch.md
+++ b/content/functions/scratch.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [iteration]
+keywords: [iteration]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/seq.md
+++ b/content/functions/seq.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: []
+keywords: []
 signature: ["seq LAST", "seq FIRST LAST", "seq FIRST INCREMENT LAST"]
 workson: []
 hugoversion:
--- a/content/functions/sha.md
+++ b/content/functions/sha.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [sha,checksum]
+keywords: [sha,checksum]
 signature: ["sha1 INPUT", "sha256 INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/shuffle.md
+++ b/content/functions/shuffle.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-04-30
-#tags: [ordering]
+keywords: [ordering]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/singularize.md
+++ b/content/functions/singularize.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings,singular]
+keywords: [strings,singular]
 signature: ["singularize INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/slice.md
+++ b/content/functions/slice.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [slice, array, interface]
+keywords: [slice, array, interface]
 signature: ["slice ITEM..."]
 workson: []
 hugoversion:
--- a/content/functions/slicestr.md
+++ b/content/functions/slicestr.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["slicestr STRING START [END]"]
 workson: []
 hugoversion:
--- a/content/functions/sort.md
+++ b/content/functions/sort.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [ordering,sorting,lists]
+keywords: [ordering,sorting,lists]
 signature: []
 workson: [lists,taxonomies,terms,groups]
 hugoversion:
@@ -23,7 +23,7 @@
 
 ```
 +++
-#tags: [ "tag3", "tag1", "tag2" ]
+keywords: [ "tag3", "tag1", "tag2" ]
 +++
 
 // Site config
--- a/content/functions/split.md
+++ b/content/functions/split.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["split STRING DELIM"]
 workson: []
 hugoversion:
--- a/content/functions/string.md
+++ b/content/functions/string.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["string INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/substr.md
+++ b/content/functions/substr.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 aliases: []
 signature: ["substr STRING START [LENGTH]"]
 workson: []
--- a/content/functions/time.md
+++ b/content/functions/time.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [dates,time]
+keywords: [dates,time]
 signature: ["time INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/title.md
+++ b/content/functions/title.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["title INPUT"]
 workson: []
 hugoversion:
--- a/content/functions/trim.md
+++ b/content/functions/trim.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["trim INPUT CUTSET"]
 workson: []
 hugoversion:
--- a/content/functions/truncate.md
+++ b/content/functions/truncate.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [strings]
+keywords: [strings]
 signature: ["truncate SIZE INPUT", "truncate SIZE ELLIPSIS INPUT"]
 workson: []
 hugoversion: 19
--- a/content/functions/union.md
+++ b/content/functions/union.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [filtering,lists]
+keywords: [filtering,lists]
 signature: ["union SET1 SET2"]
 workson: []
 hugoversion: 0.20
--- a/content/functions/uniq.md
+++ b/content/functions/uniq.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [multilingual,i18n,urls]
+keywords: [multilingual,i18n,urls]
 signature: ["uniq SET"]
 workson: []
 hugoversion:
--- a/content/functions/unix.md
+++ b/content/functions/unix.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [dates,time]
+keywords: [dates,time]
 categories: [functions]
 menu:
   docs:
--- a/content/functions/upper.md
+++ b/content/functions/upper.md
@@ -6,7 +6,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: []
+keywords: []
 categories: [functions]
 menu:
   docs:
--- a/content/functions/urlize.md
+++ b/content/functions/urlize.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [urls,strings]
+keywords: [urls,strings]
 godocref:
 signature: ["urlize INPUT"]
 hugoversion:
--- a/content/functions/where.md
+++ b/content/functions/where.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [filtering]
+keywords: [filtering]
 signature: ["where COLLECTION KEY [OPERATOR] MATCH"]
 workson: [lists,taxonomies,terms,groups]
 hugoversion:
--- a/content/functions/with.md
+++ b/content/functions/with.md
@@ -10,7 +10,7 @@
 menu:
   docs:
     parent: "functions"
-#tags: [conditionals]
+keywords: [conditionals]
 signature: ["with INPUT"]
 workson: []
 hugoversion:
--- a/content/getting-started/_index.md
+++ b/content/getting-started/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [getting started]
-#tags: [usage,docs]
+keywords: [usage,docs]
 menu:
   docs:
     parent: "getting-started"
--- a/content/getting-started/configuration.md
+++ b/content/getting-started/configuration.md
@@ -6,7 +6,7 @@
 publishdate: 2017-01-02
 lastmod: 2017-03-05
 categories: [getting started,fundamentals]
-#tags: [configuration,toml,yaml,json]
+keywords: [configuration,toml,yaml,json]
 menu:
   docs:
     parent: "getting-started"
--- a/content/getting-started/directory-structure.md
+++ b/content/getting-started/directory-structure.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-03-09
 categories: [getting started,fundamentals]
-#tags: [source, organization, directories]
+keywords: [source, organization, directories]
 menu:
   docs:
     parent: "getting-started"
@@ -19,6 +19,8 @@
 ---
 
 ## New Site Scaffolding
+
+{{< youtube sB0HLHjgQ7E >}}
 
 Running the `hugo new site` generator from the command line will create a directory structure with the following elements:
 
--- a/content/getting-started/installing.md
+++ b/content/getting-started/installing.md
@@ -7,7 +7,7 @@
 lastmod: 2017-02-20
 categories: [getting started,fundamentals]
 authors: ["Michael Henderson"]
-#tags: [install,pc,windows,linux,macos,binary,tarball]
+keywords: [install,pc,windows,linux,macos,binary,tarball]
 menu:
   docs:
     parent: "getting-started"
@@ -121,6 +121,8 @@
 
 ### Install Hugo with Brew
 
+{{< youtube WvhCGlLcrF8 >}}
+
 #### Step 1: Install `brew` if you haven't already
 
 Go to the `brew` website, <https://brew.sh/>, and follow the directions there. The most important step is the installation from the command line:
@@ -298,6 +300,8 @@
 ## Windows
 
 The following aims to be a complete guide to installing Hugo on your Windows PC.
+
+{{< youtube G7umPCU-8xc >}}
 
 ### Assumptions
 
--- a/content/getting-started/quick-start.md
+++ b/content/getting-started/quick-start.md
@@ -5,7 +5,7 @@
 date: 2013-07-01
 publishdate: 2013-07-01
 categories: [getting started]
-#tags: [quick start,usage]
+keywords: [quick start,usage]
 authors: [Shekhar Gulati, Ryan Watters]
 menu:
   docs:
--- a/content/getting-started/usage.md
+++ b/content/getting-started/usage.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [getting started]
-#tags: [usage,livereload,command line,flags]
+keywords: [usage,livereload,command line,flags]
 menu:
   docs:
     parent: "getting-started"
--- a/content/hosting-and-deployment/_index.md
+++ b/content/hosting-and-deployment/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2016-11-01
 lastmod: 2016-11-01
 categories: [hosting and deployment]
-#tags: []
+keywords: []
 menu:
   docs:
     parent: "hosting-and-deployment"
--- a/content/hosting-and-deployment/deployment-with-nanobox.md
+++ b/content/hosting-and-deployment/deployment-with-nanobox.md
@@ -6,7 +6,7 @@
 publishdate: 2017-08-24
 lastmod: 2017-08-24
 categories: [hosting and deployment]
-#tags: [nanobox,deployment,hosting,aws,digitalocean,azure,google,linode]
+keywords: [nanobox,deployment,hosting,aws,digitalocean,azure,google,linode]
 authors: [Steve Domino]
 menu:
   docs:
--- a/content/hosting-and-deployment/deployment-with-rsync.md
+++ b/content/hosting-and-deployment/deployment-with-rsync.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [hosting and deployment]
-#tags: [rsync,deployment]
+keywords: [rsync,deployment]
 authors: [Adrien Poupin]
 menu:
   docs:
--- a/content/hosting-and-deployment/deployment-with-wercker.md
+++ b/content/hosting-and-deployment/deployment-with-wercker.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [hosting and deployment]
-#tags: [wercker,deployment,github,git]
+keywords: [wercker,deployment,github,git]
 authors: [Arjen Schwarz, Samuel Debruyn]
 menu:
   docs:
@@ -136,13 +136,13 @@
 
 ![][3]
 
-### Registe for Wercker with Your GitHub Account
+### Register for Wercker with Your GitHub Account
 
 Sign up for Wercker using your GitHub credentials. If you don't have a GitHub account, or don't want to use it for your account, you have the option to register with a username and password as well. However, the second half of this guide---devoted to hosting your website on GitHub pages---will no longer be of interest to you.
 
 ![][4]
 
-### Connecte GitHub or Bitbucket
+### Connect GitHub or Bitbucket
 
 After you are registered, you will need to link your GitHub or Bitbucket account to Wercker. You can link your account by navigating to your profile settings and then selecting "Git connections."
 
--- a/content/hosting-and-deployment/hosting-on-bitbucket.md
+++ b/content/hosting-and-deployment/hosting-on-bitbucket.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-04
 lastmod: 2017-02-04
 categories: [hosting and deployment]
-#tags: [hosting,bitbucket,deployment,aerobatic]
+keywords: [hosting,bitbucket,deployment,aerobatic]
 authors: [Jason Gowans]
 menu:
   docs:
--- a/content/hosting-and-deployment/hosting-on-firebase.md
+++ b/content/hosting-and-deployment/hosting-on-firebase.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-12
 lastmod: 2017-03-15
 categories: [hosting and deployment]
-#tags: [hosting,firebase]
+keywords: [hosting,firebase]
 authors: [Michel Racic]
 menu:
   docs:
--- a/content/hosting-and-deployment/hosting-on-github.md
+++ b/content/hosting-and-deployment/hosting-on-github.md
@@ -6,7 +6,7 @@
 publishdate: 2014-03-21
 lastmod: 2017-03-30
 categories: [hosting and deployment]
-#tags: [github,git,deployment,hosting]
+keywords: [github,git,deployment,hosting]
 authors: [Spencer Lyon, Gunnar Morling]
 menu:
   docs:
--- a/content/hosting-and-deployment/hosting-on-gitlab.md
+++ b/content/hosting-and-deployment/hosting-on-gitlab.md
@@ -6,7 +6,7 @@
 publishdate: 2016-06-23
 lastmod: 2016-06-23
 categories: [hosting and deployment]
-#tags: [hosting,deployment,git,gitlab]
+keywords: [hosting,deployment,git,gitlab]
 authors: [Riku-Pekka Silvola]
 menu:
   docs:
--- /dev/null
+++ b/content/hosting-and-deployment/hosting-on-keycdn.md
@@ -1,0 +1,90 @@
+---
+title: "Hosting on KeyCDN"
+date: 2017-09-12
+description: "Accelerate your Hugo site globally with a KeyCDN integration. This tutorial shows you how to setup your static site as a GitLab page behind a KeyCDN pull zone."
+categories: [hosting and deployment]
+keywords: [keycdn,hosting,deployment,cdn]
+slug: ""
+aliases: []
+toc: false
+draft: false
+---
+
+[KeyCDN](https://www.keycdn.com/) provides a multitude of features to help accelerate and secure your Hugo site globally including Brotli compression, Let's Encrypt support, Origin Shield, and more.
+
+## Assumptions
+
+- You already have a Hugo page configured
+- You have a GitLab account
+- You have a KeyCDN account
+
+## Create a KeyCDN Pull Zone
+
+The first step will be to login to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL. 
+
+![Screenshot of KeyCDN's pull zone creation page](/images/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png) 
+
+While the origin location doesn’t exist yet, you will need to use your new Zone URL address (or [Zonealias](https://www.keycdn.com/support/create-a-zonealias/)) in the `.gitlab-ci.yml` file that will be uploaded to your GitLab project. 
+
+Ensure that you use your Zone URL or Zonealias as the `BASEURL` variable in the example below. This will be the user-visible website address.
+
+## Configure Your .gitlab-ci.yml File
+
+Your `.gitlab-ci.yml` file should look similar to the example below. Be sure to modify any variables that are specific to your setup.
+
+```
+image: alpine:latest
+
+variables:
+    BASEURL: "https://cipull-7bb7.kxcdn.com/"
+    HUGO_VERSION: "0.26"
+    HUGO_CHECKSUM: "67e4ba5ec2a02c8164b6846e30a17cc765b0165a5b183d5e480149baf54e1a50"
+    KEYCDN_ZONE_ID: "75544"
+
+before_script:
+    - apk update
+    - apk add curl
+
+pages:
+    stage: deploy
+    script:
+    - apk add git
+    - git submodule update --init
+    - curl -sSL https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -o /tmp/hugo.tar.gz
+    - echo "${HUGO_CHECKSUM}  /tmp/hugo.tar.gz" | sha256sum -c
+    - tar xf /tmp/hugo.tar.gz hugo -C /tmp/ && cp /tmp/hugo /usr/bin
+    - hugo --baseURL ${BASEURL}
+    - curl "https://api.keycdn.com/zones/purge/${KEYCDN_ZONE_ID}.json" -u "${KEYCDN_API_KEY}:"
+    artifacts:
+    paths:
+    - public
+    only:
+    - master
+
+```
+Using this integration method,  you will have to specify the Zone ID and your [KeyCDN API](https://www.keycdn.com/api) key as secret variables. To do this, navigate to the top-left menu bar in GitLab and select Projects. Then, select your project and click on the Settings page. Finally, select Pipelines from the sub-menu and scroll down to the Secret Variable section. 
+
+The Secret Variable for your Zone ID should look similar to:
+
+![Screenshot of setting the Zone ID secret variable](/images/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png)
+
+While the Secret Variable for your API Key will look similar to:
+
+![Screenshot of setting the API Key secret variable](/images/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png)
+
+The Zone ID and API key are used to purge your zone – it’s not strictly needed but otherwise, the CDN might deliver older versions of your assets for quite a while.
+
+## Push Your Changes to GitLab
+
+Now it’s time to push the newly created repository to GitLab:
+
+```
+git remote add origin [email protected]:youruser/ciexample.git
+git push -u origin master
+```
+
+You can watch the progress and CI job output in your Gitlab project under “Pipelines”. 
+
+After verifying your CI job ran without issues, first check that your GitLab page shows up under `https://youruser.gitlab.io/reponame/` (it might look broken depending on your browser settings as all links point to your KeyCDN zone – don’t worry about that) and then by heading to whatever Zonealias / Zone URL you defined.
+
+To learn more about Hugo hosting options with KeyCDN, check out the complete [Hugo hosting with KeyCDN integration guide](https://www.keycdn.com/support/hugo-hosting/).
--- a/content/hosting-and-deployment/hosting-on-netlify.md
+++ b/content/hosting-and-deployment/hosting-on-netlify.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-03-11
 categories: [hosting and deployment]
-#tags: [netlify,hosting,deployment]
+keywords: [netlify,hosting,deployment]
 authors: [Ryan Watters, Seth MacLeod]
 menu:
   docs:
--- /dev/null
+++ b/content/news/0.27-relnotes.md
@@ -1,0 +1,95 @@
+
+---
+date: 2017-09-11
+title: "Hugo 0.27: Fast and Flexible Related Content!"
+description: "Makes it easy to add \"See Also\" sections etc. to your site."
+categories: ["Releases"]
+images:
+- images/blog/hugo-27-poster.png
+---
+
+	
+Hugo `0.27`comes with fast and flexible **Related Content** ([3b4f17bb](https://github.com/gohugoio/hugo/commit/3b4f17bbc9ff789faa581ac278ad109d1ac5b816) [@bep](https://github.com/bep) [#98](https://github.com/gohugoio/hugo/issues/98)). To add this to your site, put something like this in your single page template:
+
+```html
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+<h3>See Also</h3>
+<ul>
+	{{ range . }}
+	<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+	{{ end }}
+</ul>
+{{ end }}
+```
+
+The above translates to _list the five regular pages mostly related to the current page_. See the [Related Content Documentation](https://gohugo.io/content-management/related/) for details and configuration options.
+
+This release represents **37 contributions by 9 contributors** to the main Hugo code base.
+
+[@bep](https://github.com/bep) leads the Hugo development with a significant amount of contributions, but also a big shoutout to [@moorereason](https://github.com/moorereason), [@yihui](https://github.com/yihui), and [@oneleaftea](https://github.com/oneleaftea) for their ongoing contributions.
+
+And as always a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the documentation and the themes site in pristine condition.
+
+Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
+which has received **44 contributions by 30 contributors**. A special thanks to [@bep](https://github.com/bep), [@sdomino](https://github.com/sdomino), [@gotgenes](https://github.com/gotgenes), and [@digitalcraftsman](https://github.com/digitalcraftsman) for their work on the documentation site.
+
+
+Hugo now has:
+
+* 19464+ [stars](https://github.com/gohugoio/hugo/stargazers)
+* 455+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
+* 178+ [themes](http://themes.gohugo.io/)
+
+## Notes
+
+* We now only strip p tag in `markdownify` if there is only one paragraph. This allows blocks of paragraphs to be "markdownified" [33ae10b6](https://github.com/gohugoio/hugo/commit/33ae10b6ade67cd9618970121d7de5fd2ce7d781) [@bep](https://github.com/bep) [#3040](https://github.com/gohugoio/hugo/issues/3040)
+
+## Enhancements
+
+### Templates
+
+* Add `time.Duration` and `time.ParseDuration` template funcs [f4bf2141](https://github.com/gohugoio/hugo/commit/f4bf214137ebd24a0d12f16d3a98d9038e6eabd3) [@bep](https://github.com/bep) [#3828](https://github.com/gohugoio/hugo/issues/3828)
+* Add `cond` (ternary) template func [0462c96a](https://github.com/gohugoio/hugo/commit/0462c96a5a9da3e8adc78d96acd39575a8b46c40) [@bep](https://github.com/bep) [#3860](https://github.com/gohugoio/hugo/issues/3860)
+* Prepare for template metrics [d000cf60](https://github.com/gohugoio/hugo/commit/d000cf605091c6999b72d6c632752289bc680223) [@bep](https://github.com/bep) 
+* Add `strings.TrimLeft` and `TrimRight` [7674ad73](https://github.com/gohugoio/hugo/commit/7674ad73825c61eecc4003475fe0577f225fe579) [@moorereason](https://github.com/moorereason) 
+* compare, hugolib, tpl: Add `Eqer` interface [08f48b91](https://github.com/gohugoio/hugo/commit/08f48b91d68d3002b887ddf737456ff0cc4e786d) [@bep](https://github.com/bep) [#3807](https://github.com/gohugoio/hugo/issues/3807)
+* Only strip p tag in `markdownify` if only one paragraph [33ae10b6](https://github.com/gohugoio/hugo/commit/33ae10b6ade67cd9618970121d7de5fd2ce7d781) [@bep](https://github.com/bep) [#3040](https://github.com/gohugoio/hugo/issues/3040)
+* Cleanup `strings.TrimPrefix` and `TrimSuffix` [29a2da05](https://github.com/gohugoio/hugo/commit/29a2da0593b081cdd61b93c6328af2c9ea4eb20f) [@moorereason](https://github.com/moorereason) 
+
+### Output
+
+* Improve the base template (aka `baseof.html`) identification [0019ce00](https://github.com/gohugoio/hugo/commit/0019ce002449d671a20a69406da37b10977f9493) [@bep](https://github.com/bep) 
+
+### Core
+
+* Implement "related content" [3b4f17bb](https://github.com/gohugoio/hugo/commit/3b4f17bbc9ff789faa581ac278ad109d1ac5b816) [@bep](https://github.com/bep) [#98](https://github.com/gohugoio/hugo/issues/98)
+* Add `Page.Equals` [f0f49ed9](https://github.com/gohugoio/hugo/commit/f0f49ed9b0c9b4545a45c95d56340fcbf4aafbef) [@bep](https://github.com/bep) 
+* Rewrite `replaceDivider` to reduce memory allocation [71ae9b45](https://github.com/gohugoio/hugo/commit/71ae9b4533083be185c5314c9c5b273cc3bd07bd) [@bep](https://github.com/bep) 
+
+
+### Other
+
+* Set up Hugo release flow on `CircleCI` [d2249c50](https://github.com/gohugoio/hugo/commit/d2249c50991ba7b00b092aca6e315ca1a4de75a1) [@bep](https://github.com/bep) [#3779](https://github.com/gohugoio/hugo/issues/3779)
+* Maintain the scroll position if possible [7231d5a8](https://github.com/gohugoio/hugo/commit/7231d5a829f8d97336a2120afde1260db6ee6541) [@yihui](https://github.com/yihui) [#3824](https://github.com/gohugoio/hugo/issues/3824)
+* Add an `iFrame` title to the `YouTube` shortcode [919bc921](https://github.com/gohugoio/hugo/commit/919bc9210a69c801c7304c0b529df93d1dca27aa) [@nraboy](https://github.com/nraboy) 
+* Remove the theme submodule from /docs [ea2cc26b](https://github.com/gohugoio/hugo/commit/ea2cc26b390476f1c605405604f8c92afd09b6ee) [@bep](https://github.com/bep) [#3791](https://github.com/gohugoio/hugo/issues/3791)
+* Add support for multiple config files via `--config a.toml,b.toml,c.toml` [0f9f73cc](https://github.com/gohugoio/hugo/commit/0f9f73cce5c3f1f05be20bcf1d23b2332623d7f9) [@jgielstra](https://github.com/jgielstra) 
+* Render task list item inside `label` for correct accessibility [c8257f8b](https://github.com/gohugoio/hugo/commit/c8257f8b726478ca70dc8984cdcc17b31e4bdc0c) [@danieka](https://github.com/danieka) [#3303](https://github.com/gohugoio/hugo/issues/3303)
+* Normalize `UniqueID` between Windows & Linux [0abdeeef](https://github.com/gohugoio/hugo/commit/0abdeeef6740a3cbba0db95374853d040f2022b8) [@Shywim](https://github.com/Shywim) 
+
+
+## Fixes
+
+### Output
+
+* Fix taxonomy term base template lookup [f88fe312](https://github.com/gohugoio/hugo/commit/f88fe312cb35f7de1615c095edd2f898303dd23b) [@bep](https://github.com/bep) [#3856](https://github.com/gohugoio/hugo/issues/3856)
+* Fix `published` front matter handling [202510fd](https://github.com/gohugoio/hugo/commit/202510fdc92d52a20baeaa7edb1091f6882bd95f) [@bep](https://github.com/bep) [#3867](https://github.com/gohugoio/hugo/issues/3867)
+
+
+
+
+
+
+
+
--- /dev/null
+++ b/content/news/0.27.1-relnotes.md
@@ -1,0 +1,21 @@
+
+---
+date: 2017-09-13
+title: "0.27.1: One bugfix"
+description: "Hugo 0.27.1 fixes an issue introduced in Go 1.9 with HTML escaping of shortcodes in multi output sites."
+categories: ["Releases"]
+images:
+- images/blog/hugo-bug-poster.png
+---
+
+	
+
+This fixes a regression introduced in [Go 1.9](https://github.com/golang/go/issues/21844) which lead to HTML in shortcodes in multi output Hugo sites being wrongly escaped in some cases.
+
+* Fix escaped HTML Go 1.9 multioutput issue (#3880) [2d613dd9](https://github.com/gohugoio/hugo/commit/2d613dd905bb8eeb8af57e30ddd749a0f04fbd3c) [@bep](https://github.com/bep) [#3876](https://github.com/gohugoio/hugo/issues/3876)
+
+* Bump to Go 1.9 in the Snap build [642ba6ca](https://github.com/gohugoio/hugo/commit/642ba6cab24c558b16378178fe829cbc45845424) [@bep](https://github.com/bep) 
+
+
+
+
--- a/content/news/http2-server-push-in-hugo.md
+++ b/content/news/http2-server-push-in-hugo.md
@@ -4,7 +4,7 @@
 description: >
     As every page in Hugo can be output to multiple formats, it is easy to create Netlify's _redirects and _headers files on the fly.
 categories: [blog]
-#tags: []
+keywords: []
 slug: "http2-server-push-in-hugo"
 aliases: []
 author: bep
--- a/content/templates/404.md
+++ b/content/templates/404.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-03-31
 categories: [templates]
-#tags: [404, page not found]
+keywords: [404, page not found]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/_index.md
+++ b/content/templates/_index.md
@@ -11,7 +11,7 @@
     weight: 01
 weight: 01	#rem
 categories: [templates]
-#tags: []
+keywords: []
 draft: false
 aliases: [/templates/overview/,/templates/content]
 toc: false
--- a/content/templates/alternatives.md
+++ b/content/templates/alternatives.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-20
 categories: [templates]
-#tags: [amber,ace,templating languages]
+keywords: [amber,ace,templating languages]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/base.md
+++ b/content/templates/base.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates,fundamentals]
-#tags: [blocks,base]
+keywords: [blocks,base]
 menu:
   docs:
     parent: "templates"
@@ -20,6 +20,8 @@
 ---
 
 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
 
--- a/content/templates/data-templates.md
+++ b/content/templates/data-templates.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-03-12
 categories: [templates]
-#tags: [data,dynamic,csv,json,toml,yaml]
+keywords: [data,dynamic,csv,json,toml,yaml]
 menu:
   docs:
     parent: "templates"
@@ -21,6 +21,8 @@
 <!-- begin data files -->
 
 Hugo supports loading data from YAML, JSON, and TOML files located in the `data` directory in the root of your Hugo project.
+
+{{< youtube FyPgSuwIMWQ >}}
 
 ## The Data Folder
 
--- a/content/templates/files.md
+++ b/content/templates/files.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [files,directories]
+keywords: [files,directories]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/homepage.md
+++ b/content/templates/homepage.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [homepage]
+keywords: [homepage]
 menu:
   docs:
     parent: "templates"
@@ -23,6 +23,8 @@
 {{% note "The Only Required Template" %}}
 The homepage template is the *only* required template for building a site and therefore useful when bootstrapping a new site and template. It is also the only required template if you are developing a single-page website.
 {{% /note %}}
+
+{{< youtube ut1xtRZ1QOA >}}
 
 ## Homepage Template Lookup Order
 
--- a/content/templates/internal.md
+++ b/content/templates/internal.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-06
 lastmod: 2017-03-06
 categories: [templates]
-#tags: [internal, analytics,]
+keywords: [internal, analytics,]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/introduction.md
+++ b/content/templates/introduction.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-25
 categories: [templates,fundamentals]
-#tags: [go]
+keywords: [go]
 menu:
   docs:
     parent: "templates"
@@ -24,6 +24,8 @@
 {{% /note %}}
 
 Go templates provide an extremely simple template language that adheres to the belief that only the most basic of logic belongs in the template or view layer.
+
+{{< youtube gnJbPO-GFIw >}}
 
 ## Basic Syntax
 
--- a/content/templates/lists.md
+++ b/content/templates/lists.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [lists,sections,rss,taxonomies,terms]
+keywords: [lists,sections,rss,taxonomies,terms]
 menu:
   docs:
     parent: "templates"
@@ -19,6 +19,8 @@
 ---
 
 ## What is a List Page Template?
+
+{{< youtube 8b2YTSMdMps >}}
 
 A list page template is a template used to render multiple pieces of content in a single HTML page. The exception to this rule is the homepage, which is still a list but has its own [dedicated template][homepage].
 
--- a/content/templates/lookup-order.md
+++ b/content/templates/lookup-order.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-05-25
 categories: [templates,fundamentals]
-#tags: [lookup]
+keywords: [lookup]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/menu-templates.md
+++ b/content/templates/menu-templates.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [lists,sections,menus]
+keywords: [lists,sections,menus]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/ordering-and-grouping.md
+++ b/content/templates/ordering-and-grouping.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: []
+keywords: []
 menu:
   docs:
     parent: "templates"
--- a/content/templates/output-formats.md
+++ b/content/templates/output-formats.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-22
 lastmod: 2017-03-22
 categories: [templates]
-#tags: ["amp","outputs","rss"]
+keywords: ["amp","outputs","rss"]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/pagination.md
+++ b/content/templates/pagination.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [lists,sections,pagination]
+keywords: [lists,sections,pagination]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/partials.md
+++ b/content/templates/partials.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [lists,sections,partials]
+keywords: [lists,sections,partials]
 menu:
   docs:
     parent: "templates"
@@ -17,6 +17,8 @@
 aliases: [/templates/partial/,/layout/chrome/,/extras/analytics/]
 toc: true
 ---
+
+{{< youtube pjS4pOLyB7c >}}
 
 ## Partial Template Lookup Order
 
--- a/content/templates/robots.md
+++ b/content/templates/robots.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [robots,search engines]
+keywords: [robots,search engines]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/rss.md
+++ b/content/templates/rss.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [rss, xml]
+keywords: [rss, xml]
 categories: [templates]
 menu:
   docs:
--- a/content/templates/section-templates.md
+++ b/content/templates/section-templates.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [lists,sections]
+keywords: [lists,sections]
 menu:
   docs:
     parent: "templates"
@@ -34,6 +34,8 @@
 6. `/themes/<THEME>/layouts/<SECTION>/list.html`
 7. `/themes/<THEME>/layouts/_default/section.html`
 8. `/themes/<THEME>/layouts/_default/list.html`
+
+{{< youtube jrMClsB3VsY >}}
 
 ## `.Site.GetPage` with Sections
 
--- a/content/templates/shortcode-templates.md
+++ b/content/templates/shortcode-templates.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [shortcodes]
+keywords: [shortcodes]
 menu:
   docs:
     parent: "templates"
@@ -28,6 +28,8 @@
 
 Hugo's built-in shortcodes cover many common, but not all, use cases. Luckily, Hugo provides the ability to easily create custom shortcodes to meet your website's needs.
 
+{{< youtube Eu4zSaKOY4A >}}
+
 ### File Placement
 
 To create a shortcode, place an HTML template in the `layouts/shortcodes` directory of your [source organization][]. Consider the file name carefully since the shortcode name will mirror that of the file but without the `.html` extension. For example, `layouts/shortcodes/myshortcode.html` will be called with either `{{</* myshortcode /*/>}}` or `{{%/* myshortcode /*/%}}` depending on the type of parameters you choose.
@@ -105,7 +107,7 @@
 `$.Page.Site.Params`
 : refers to global variables as defined in your [site's configuration file][config].
 
-#### `.IsNameParams`
+#### `.IsNamedParams`
 
 The `.IsNamedParams` variable checks whether the shortcode declaration uses named parameters and returns a boolean value.
 
--- a/content/templates/single-page-templates.md
+++ b/content/templates/single-page-templates.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-04-06
 categories: [templates]
-#tags: [page]
+keywords: [page]
 menu:
   docs:
     parent: "templates"
@@ -34,6 +34,8 @@
 8. `/themes/<THEME>/layouts/<TYPE>/single.html`
 9. `/themes/<THEME>/layouts/<SECTION>/single.html`
 10. `/themes/<THEME>/layouts/_default/single.html`
+
+{{< youtube ZYQ5k0RQzmo >}}
 
 ## Example Single Page Templates
 
--- a/content/templates/sitemap-template.md
+++ b/content/templates/sitemap-template.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [sitemap, xml]
+keywords: [sitemap, xml]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/taxonomy-templates.md
+++ b/content/templates/taxonomy-templates.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [taxonomies,metadata,front matter,terms]
+keywords: [taxonomies,metadata,front matter,terms]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/template-debugging.md
+++ b/content/templates/template-debugging.md
@@ -7,7 +7,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [debugging,troubleshooting]
+keywords: [debugging,troubleshooting]
 menu:
   docs:
     parent: "templates"
--- a/content/templates/views.md
+++ b/content/templates/views.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [templates]
-#tags: [views]
+keywords: [views]
 menu:
   docs:
     parent: "templates"
--- a/content/themes/_index.md
+++ b/content/themes/_index.md
@@ -12,7 +12,7 @@
 weight: 01
 sections_weight: 01
 categories: [themes]
-#tags: [themes,introduction,overview]
+keywords: [themes,introduction,overview]
 draft: false
 aliases: [/themes/overview/]
 toc: false
--- a/content/themes/creating.md
+++ b/content/themes/creating.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [themes]
-#tags: [themes, source, organization, directories]
+keywords: [themes, source, organization, directories]
 menu:
   docs:
     parent: "themes"
--- a/content/themes/customizing.md
+++ b/content/themes/customizing.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [themes]
-#tags: [themes, source, organization, directories]
+keywords: [themes, source, organization, directories]
 menu:
   docs:
     parent: "themes"
--- a/content/themes/installing-and-using-themes.md
+++ b/content/themes/installing-and-using-themes.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [themes]
-#tags: [install, themes, source, organization, directories,usage]
+keywords: [install, themes, source, organization, directories,usage]
 menu:
   docs:
     parent: "themes"
@@ -29,6 +29,8 @@
 2. You have git installed on your machine and you are familiar with basic git usage.
 
 ## Install Themes
+
+{{< youtube L34JL_3Jkyc >}}
 
 The community-contributed themes featured on [themes.gohugo.io](//themes.gohugo.io/) are hosted in a [centralized GitHub repository][themesrepo]. The Hugo Themes Repo at <https://github.com/gohugoio/hugoThemes> is really a meta repository that contains pointers to a set of contributed themes.
 
--- a/content/tools/_index.md
+++ b/content/tools/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2016-12-05
 lastmod: 2017-02-26
 categories: [developer tools]
-#tags: []
+keywords: []
 menu:
   docs:
     parent: "tools"
--- a/content/tools/editors.md
+++ b/content/tools/editors.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [developer tools]
-#tags: [editor, plug-ins]
+keywords: [editor, plug-ins]
 menu:
   docs:
     parent: "tools"
--- a/content/tools/frontends.md
+++ b/content/tools/frontends.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [developer tools]
-#tags: [frontend,gui]
+keywords: [frontend,gui]
 menu:
   docs:
     parent: "tools"
--- a/content/tools/migrations.md
+++ b/content/tools/migrations.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [migrations,jekyll,wordpress,drupal,ghost,contentful]
+keywords: [migrations,jekyll,wordpress,drupal,ghost,contentful]
 menu:
   docs:
     parent: "tools"
--- a/content/tools/other.md
+++ b/content/tools/other.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [developer tools]
-#tags: [frontend,gui]
+keywords: [frontend,gui]
 menu:
   docs:
     parent: "tools"
--- a/content/tools/search.md
+++ b/content/tools/search.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-26
 categories: [developer tools]
-#tags: [search,tools]
+keywords: [search,tools]
 menu:
   docs:
     parent: "tools"
--- a/content/tools/starter-kits.md
+++ b/content/tools/starter-kits.md
@@ -5,7 +5,7 @@
 date: 2017-02-22
 publishdate: 2017-02-01
 lastmod: 2017-02-22
-#tags: [starters,assets,pipeline]
+keywords: [starters,assets,pipeline]
 menu:
   docs:
     parent: "tools"
--- a/content/tools/syntax-highlighting.md
+++ b/content/tools/syntax-highlighting.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [highlighting,pygments,code blocks,syntax]
+keywords: [highlighting,pygments,code blocks,syntax]
 categories: [developer tools]
 menu:
   docs:
@@ -103,8 +103,8 @@
 
 It is also possible to add syntax highlighting with GitHub flavored code fences. To enable this, set the `PygmentsCodeFences` to `true` in Hugo's [configuration file](/getting-started/configuration/);
 
+````
 ```
-```
 <section id="main">
   <div>
     <h1 id="title">{{ .Title }}</h1>
@@ -114,7 +114,7 @@
   </div>
 </section>
 ```
-```
+````
 
 {{% note "Disclaimers on Pygments" %}}
 * Pygments is relatively slow and _causes a performance hit when building your site_, but Hugo has been designed to cache the results to disk.
--- a/content/troubleshooting/accented-characters-in-urls.md
+++ b/content/troubleshooting/accented-characters-in-urls.md
@@ -5,7 +5,7 @@
 date: 2017-02-01
 publishdate: 2017-02-01
 lastmod: 2017-02-01
-#tags: [urls,multilingual,special characters]
+keywords: [urls,multilingual,special characters]
 categories: [troubleshooting]
 menu:
   docs:
--- a/content/troubleshooting/build-performance.md
+++ b/content/troubleshooting/build-performance.md
@@ -5,7 +5,7 @@
 date: 2017-03-12
 publishdate: 2017-03-12
 lastmod: 2017-03-12
-#tags: [performance, build]
+keywords: [performance, build]
 categories: [troubleshooting]
 menu:
   docs:
--- a/content/troubleshooting/eof-error.md
+++ b/content/troubleshooting/eof-error.md
@@ -9,7 +9,7 @@
 menu:
   docs:
     parent: "troubleshooting"
-#tags: [eof, end of file, error, faqs]
+keywords: [eof, end of file, error, faqs]
 draft: false
 weight:
 aliases: [/troubleshooting/strange-eof-error/]
--- a/content/variables/_index.md
+++ b/content/variables/_index.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [variables and params]
-#tags: [variables,params,values,globals]
+keywords: [variables,params,values,globals]
 draft: false
 menu:
   docs:
--- a/content/variables/files.md
+++ b/content/variables/files.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [variables and params]
-#tags: [files]
+keywords: [files]
 draft: false
 menu:
   docs:
--- a/content/variables/git.md
+++ b/content/variables/git.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-12
 lastmod: 2017-03-12
 categories: [variables and params]
-#tags: [git]
+keywords: [git]
 draft: false
 menu:
   docs:
--- a/content/variables/hugo.md
+++ b/content/variables/hugo.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-12
 lastmod: 2017-03-12
 categories: [variables and params]
-#tags: [hugo,generator]
+keywords: [hugo,generator]
 draft: false
 menu:
   docs:
--- a/content/variables/menus.md
+++ b/content/variables/menus.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-12
 lastmod: 2017-03-12
 categories: [variables and params]
-#tags: [menus]
+keywords: [menus]
 draft: false
 menu:
   docs:
--- a/content/variables/page.md
+++ b/content/variables/page.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [variables and params]
-#tags: [pages]
+keywords: [pages]
 draft: false
 menu:
   docs:
--- a/content/variables/shortcodes.md
+++ b/content/variables/shortcodes.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-12
 lastmod: 2017-03-12
 categories: [variables and params]
-#tags: [shortcodes]
+keywords: [shortcodes]
 draft: false
 menu:
   docs:
--- a/content/variables/site.md
+++ b/content/variables/site.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [variables and params]
-#tags: [global,site]
+keywords: [global,site]
 draft: false
 menu:
   docs:
--- a/content/variables/sitemap.md
+++ b/content/variables/sitemap.md
@@ -6,7 +6,7 @@
 publishdate: 2017-03-12
 lastmod: 2017-03-12
 categories: [variables and params]
-#tags: [sitemap]
+keywords: [sitemap]
 draft: false
 menu:
   docs:
--- a/content/variables/taxonomy.md
+++ b/content/variables/taxonomy.md
@@ -6,7 +6,7 @@
 publishdate: 2017-02-01
 lastmod: 2017-02-01
 categories: [variables and params]
-#tags: [taxonomies,terms]
+keywords: [taxonomies,terms]
 draft: false
 menu:
   docs:
--- a/netlify.toml
+++ b/netlify.toml
@@ -3,15 +3,15 @@
   command = "hugo"
 
 [context.production.environment]
-  HUGO_VERSION = "0.26"
+  HUGO_VERSION = "0.27.1"
   HUGO_ENV = "production"
   HUGO_ENABLEGITINFO = "true"
 
 [context.deploy-preview.environment]
-  HUGO_VERSION = "0.26"
+  HUGO_VERSION = "0.27.1"
 
 [context.branch-deploy.environment]
-  HUGO_VERSION = "0.26"
+  HUGO_VERSION = "0.27.1"
 
 [context.next.environment]
   HUGO_BASEURL = "https://next--gohugoio.netlify.com/"
binary files /dev/null b/static/images/blog/hugo-27-poster.png differ
binary files /dev/null b/static/images/blog/hugo-bug-poster.png differ
binary files /dev/null b/static/images/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png differ
binary files /dev/null b/static/images/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png differ
binary files /dev/null b/static/images/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png differ
--- a/themes/gohugoioTheme/layouts/_default/single.html
+++ b/themes/gohugoioTheme/layouts/_default/single.html
@@ -11,6 +11,7 @@
           <div id="readout" class="fixed right-0 bottom-0">
           </div>
           {{ .Render "page" }}
+          {{ partial "related.html" . }}
         </div>
       </div>
       <div class="order-0 w-20 dn db-l">
--- /dev/null
+++ b/themes/gohugoioTheme/layouts/partials/related.html
@@ -1,0 +1,9 @@
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+<h2>See Also</h2>
+<ul>
+	{{ range . }}
+	<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+	{{ end }}
+</ul>
+{{ end }}
\ No newline at end of file