doc: Merge commit '2c0d1ccdcd95de0bddeb39dca2e4d08f0d8056d7'
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 21 Jul 2017 09:00:08 +0000 (11:00 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 21 Jul 2017 09:00:08 +0000 (11:00 +0200)
146 files changed:
1  2 
docs/README.md
docs/config.toml
docs/content/_index.md
docs/content/about/license.md
docs/content/content-management/archetypes.md
docs/content/content-management/authors.md
docs/content/content-management/comments.md
docs/content/content-management/cross-references.md
docs/content/content-management/formats.md
docs/content/content-management/front-matter.md
docs/content/content-management/menus.md
docs/content/content-management/multilingual.md
docs/content/content-management/organization.md
docs/content/content-management/sections.md
docs/content/content-management/shortcodes.md
docs/content/content-management/summaries.md
docs/content/content-management/taxonomies.md
docs/content/content-management/toc.md
docs/content/content-management/types.md
docs/content/content-management/urls.md
docs/content/contribute/_index.md
docs/content/contribute/development.md
docs/content/contribute/documentation.md
docs/content/contribute/themes.md
docs/content/functions/GetPage.md
docs/content/functions/abslangurl.md
docs/content/functions/absurl.md
docs/content/functions/adddate.md
docs/content/functions/after.md
docs/content/functions/apply.md
docs/content/functions/base64.md
docs/content/functions/chomp.md
docs/content/functions/countrunes.md
docs/content/functions/countwords.md
docs/content/functions/default.md
docs/content/functions/delimit.md
docs/content/functions/dict.md
docs/content/functions/findRe.md
docs/content/functions/first.md
docs/content/functions/format.md
docs/content/functions/i18n.md
docs/content/functions/imageConfig.md
docs/content/functions/index-function.md
docs/content/functions/intersect.md
docs/content/functions/len.md
docs/content/functions/math.md
docs/content/functions/md5.md
docs/content/functions/now.md
docs/content/functions/partialCached.md
docs/content/functions/printf.md
docs/content/functions/querify.md
docs/content/functions/readfile.md
docs/content/functions/ref.md
docs/content/functions/relLangURL.md
docs/content/functions/relref.md
docs/content/functions/relurl.md
docs/content/functions/render.md
docs/content/functions/replacere.md
docs/content/functions/safeHTML.md
docs/content/functions/safeHTMLAttr.md
docs/content/functions/safeURL.md
docs/content/functions/seq.md
docs/content/functions/sha.md
docs/content/functions/shuffle.md
docs/content/functions/slice.md
docs/content/functions/sort.md
docs/content/functions/time.md
docs/content/functions/union.md
docs/content/functions/uniq.md
docs/content/functions/unix.md
docs/content/functions/urlize.md
docs/content/functions/where.md
docs/content/functions/with.md
docs/content/getting-started/_index.md
docs/content/getting-started/configuration.md
docs/content/getting-started/directory-structure.md
docs/content/getting-started/installing.md
docs/content/getting-started/quick-start.md
docs/content/getting-started/usage.md
docs/content/hosting-and-deployment/deployment-with-rsync.md
docs/content/hosting-and-deployment/deployment-with-wercker.md
docs/content/hosting-and-deployment/hosting-on-bitbucket.md
docs/content/hosting-and-deployment/hosting-on-firebase.md
docs/content/hosting-and-deployment/hosting-on-github.md
docs/content/hosting-and-deployment/hosting-on-gitlab.md
docs/content/hosting-and-deployment/hosting-on-netlify.md
docs/content/news/0-16.md
docs/content/news/0-17.md
docs/content/news/0-18.md
docs/content/news/0-19.md
docs/content/news/0-20-1.md
docs/content/news/0-20-2.md
docs/content/news/0-20-3.md
docs/content/news/0-20-4.md
docs/content/news/0-20-5.md
docs/content/news/0-20-6.md
docs/content/news/0-20-7.md
docs/content/news/0-20.md
docs/content/news/0-21.md
docs/content/news/0-22-1.md
docs/content/news/0-22.md
docs/content/news/0-23.md
docs/content/news/0-24-1.md
docs/content/news/0-24.md
docs/content/news/0-25-1.md
docs/content/news/0-25.md
docs/content/news/_index.md
docs/content/news/release-notes.md
docs/content/readfiles/bfconfig.md
docs/content/templates/404.md
docs/content/templates/alternatives.md
docs/content/templates/base.md
docs/content/templates/data-templates.md
docs/content/templates/files.md
docs/content/templates/homepage.md
docs/content/templates/internal.md
docs/content/templates/introduction.md
docs/content/templates/lists.md
docs/content/templates/lookup-order.md
docs/content/templates/menu-templates.md
docs/content/templates/ordering-and-grouping.md
docs/content/templates/output-formats.md
docs/content/templates/pagination.md
docs/content/templates/partials.md
docs/content/templates/robots.md
docs/content/templates/rss.md
docs/content/templates/section-templates.md
docs/content/templates/shortcode-templates.md
docs/content/templates/single-page-templates.md
docs/content/templates/sitemap-template.md
docs/content/templates/taxonomy-templates.md
docs/content/templates/template-debugging.md
docs/content/templates/views.md
docs/content/themes/creating.md
docs/content/themes/customizing.md
docs/content/themes/installing-and-using-themes.md
docs/content/tools/syntax-highlighting.md
docs/content/troubleshooting/_index.md
docs/content/troubleshooting/accented-characters-in-urls.md
docs/content/troubleshooting/eof-error.md
docs/content/variables/page.md
docs/content/variables/site.md
docs/content/variables/taxonomy.md
docs/layouts/shortcodes/code.html
docs/requirements.txt
docs/themes/gohugoioTheme

diff --cc docs/README.md
index 60a554e5470e7735459522fd1b8258476194fd66,0000000000000000000000000000000000000000..eba081c96de5923ba1147aefecffd17b6e760b40
mode 100644,000000..100644
--- /dev/null
@@@ -1,13 -1,0 +1,38 @@@
- ## Branches
 +# Hugo Docs
 +
 +Documentation site for [Hugo](https://github.com/gohugoio/hugo), the very fast and flexible static site generator built with love in GoLang.
 +
- * The `master` branch is the **current Hugo version** and will be auto-deployed to [gohugo.io/](https://gohugo.io/).
- * Anything not relevant to the current Hugo version goes into the `dev` branch.
- * Changes in [hugo/docs](https://github.com/gohugoio/hugo/tree/master/docs) will, in general, be merged once every release, but can be manually merged/cherry picked if needed. This goes both ways.
- * All contributions that is not tightly coupled with code changes, should be made directly to `hugoDocs`.
- * But we also merge PRs into  [hugo/docs](https://github.com/gohugoio/hugo/tree/master/docs), but preferably changes that is related to the code in the PR itself
++## Contributing
 +
- To summarize, we have two branches in this repository: `master` (current Hugo) and `dev` (next Hugo).
++We welcome contributions to Hugo of any kind including documentation, suggestions, bug reports, pull requests etc. Also check out our [contribution guide](https://gohugo.io/contribute/documentation/). We would love to hear from you. 
 +
++Note that this repository contains solely the documentation for Hugo. For contributions that aren't documentation-related please refer to the [hugo](https://github.com/gohugoio/hugo) repository. 
++
++*Pull requests shall **only** contain changes to the actual documentation. However, changes on the code base of Hugo **and** the documentation shall be a single, atomic pull request in the [hugo](https://github.com/gohugoio/hugo) repository.*
++
++
++## Build
++
++To view the documentation site locally, you need to clone this repository with submodules:
++
++```bash
++git clone --recursive https://github.com/gohugoio/hugoDocs.git
++```
++
++Or if you already have a clone locally:
++
++```bash
++git submodule update --init
++```
++Also note that the documentation version for a given version of Hugo can also be found in the `/docs` sub-folder of the [Hugo source repository](https://github.com/gohugoio/hugo).
++
++Then to view the docs in your browser, run Hugo and open up the link:
++```bash
++hugo serve
++Started building sites ...
++.
++.
++Serving pages from memory
++Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
++Press Ctrl+C to stop
++```
index aafb6aa00c5fc47b4693129e3f121af3ae0a5805,0000000000000000000000000000000000000000..08c72176fccb7df812048e260226cc7aea49e12b
mode 100644,000000..100644
--- /dev/null
@@@ -1,221 -1,0 +1,230 @@@
 +baseURL = "https://gohugo.io/"
 +paginate =  100
 +defaultContentLanguage = "en"
 +enableEmoji = true
 +# Set the unicode character used for the "return" link in page footnotes.
 +footnotereturnlinkcontents = "↩"
 +languageCode = "en-us"
 +metaDataFormat = "yaml"
 +title = "Hugo: A Fast and Flexible Website Generator"
 +theme = "gohugoioTheme"
 +
 +googleAnalytics = "UA-7131036-4"
 +
 +pluralizeListTitles = false
 +
 +# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
 +disableAliases = true
 +
++
++# Highlighting config (Pygments)
++# It is (currently) not in use, but you can do ```go in a content file if you want to.
++pygmentsCodeFences = true
++
++# See https://help.farbox.com/pygments.html
++pygmentsStyle = "friendly"
++
 +[outputs]
 +home = [ "HTML", "RSS", "REDIR" ]
++section = [ "HTML", "RSS"]
 +
 +[mediaTypes]
 +[mediaTypes."text/netlify"]
 +suffix = ""
 +delimiter = ""
 +
 +[outputFormats]
 +[outputFormats.REDIR]
 +mediatype = "text/netlify"
 +baseName = "_redirects"
 +isPlainText = true
 +notAlternative = true
 +
 +
 +[social]
 +twitter = "GoHugoIO"
 +
 +#CUSTOM PARAMS
 +[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 = "Hugo-Next"
 +  ## Setting this to true will add a "noindex" to *EVERY* page on the site
 +  removefromexternalsearch = false
 +  ## Gh repo for site footer (include trailing slash)
 +  ghrepo = "https://github.com/gohugoio/hugoDocs/"
 +  ### Edit content repo (set to automatically enter "edit" mode; this is good for "improve this page" links)
 +  ghdocsrepo = "https://github.com/gohugoio/hugoDocs/tree/master/docs"
 +  ## Gitter URL
 +  gitter = "https://gitter.im/spf13/hugo"
 +  ## Discuss Forum URL
 +  forum = "https://discourse.gohugo.io/"
 +  ## Google Tag Manager
 +  gtmid = ""
 +
 +  # First one is picked as the Twitter card image if not set on page.
 +  images = ["images/gohugoio-card.png"]
 +
 +  flex_box_interior_classes = "flex-auto w-100 w-40-l mr3 mb3 bg-white ba b--moon-gray nested-copy-line-height"
 +
 +  #sidebar_direction = "sidebar_left"
 +
 +# MARKDOWN
 +## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
 +[blackfriday]
 +      plainIDAnchors = true
 +      hrefTargetBlank = true
 +  angledQuotes = false
 +  latexDashes = true
 +
 +## As of v0.20, all content files include a default "categories" value that's the same as the section. This was a cheap future-proofing method and should/could be changed accordingly.
 +[taxonomies]
 +  category = "categories"
 +
 +# High level items
 +
 +[[menu.docs]]
 +  name = "About Hugo"
 +  weight = 1
 +  identifier = "about"
 +  url = "/about/"
 +
 +[[menu.docs]]
 +  name = "Getting Started"
 +  weight = 5
 +  identifier = "getting-started"
 +  url = "/getting-started/"
 +
 +
 +[[menu.docs]]
 +  name = "Themes"
 +  weight = 15
 +  identifier = "themes"
 +  post = "break"
 +  url = "/themes/"
 +
 +# Core Menus
 +
 +[[menu.docs]]
 +  name = "Content Management"
 +  weight = 20
 +  identifier = "content-management"
 +  post = "expanded"
 +  url = "/content-management/"
 +
 +[[menu.docs]]
 +  name = "Templates"
 +  weight = 25
 +  identifier = "templates"
 +
 +  url = "/templates/"
 +
 +[[menu.docs]]
 +  name = "Functions"
 +  weight = 30
 +  identifier = "functions"
 +  url = "/functions/"
 +
 +[[menu.docs]]
 +  name = "Variables"
 +  weight = 35
 +  identifier = "variables"
 +  url = "/variables/"
 +
 +[[menu.docs]]
 +  name = "CLI"
 +  weight = 40
 +  post = "break"
 +  identifier = "commands"
 +  url = "/commands/"
 +
 +
 +
 +# LOW LEVEL ITEMS
 +
 +
 +[[menu.docs]]
 +  name = "Troubleshooting"
 +  weight = 60
 +  identifier = "troubleshooting"
 +  url = "/troubleshooting/"
 +
 +[[menu.docs]]
 +  name = "Tools"
 +  weight = 70
 +  identifier = "tools"
 +  url = "/tools/"
 +
 +[[menu.docs]]
 +  name = "Hosting & Deployment"
 +  weight = 80
 +  identifier = "hosting-and-deployment"
 +  url = "/hosting-and-deployment/"
 +
 +[[menu.docs]]
 +  name = "Contribute"
 +  weight = 100
 +  post = "break"
 +  identifier = "contribute"
 +  url = "/contribute/"
 +
 +#[[menu.docs]]
 +#  name = "Tags"
 +#  weight = 120
 +#  identifier = "tags"
 +#  url = "/tags/"
 +
 +
 +# [[menu.docs]]
 +#   name = "Categories"
 +#   weight = 140
 +#   identifier = "categories"
 +#   url = "/categories/"
 +
 +######## QUICKLINKS
 +
 +  [[menu.quicklinks]]
 +    name = "Fundamentals"
 +    weight = 1
 +    identifier = "fundamentals"
 +    url = "/tags/fundamentals/"
 +
 +
 +
 +
 +######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES
 +
 +[[menu.global]]
 +    name = "News"
 +    weight = 1
 +    identifier = "news"
 +    url = "/news/"
 +
 +  [[menu.global]]
 +    name = "Docs"
 +    weight = 5
 +    identifier = "docs"
 +    url = "/documentation/"
 +
 +  [[menu.global]]
 +    name = "Themes"
 +    weight = 10
 +    identifier = "themes"
 +    url = "https://themes.gohugo.io/"
 +
 +  # Anything with a weight > 100 gets an external icon
 +  [[menu.global]]
 +    name = "Community"
 +    weight = 150
 +    icon = true
 +    identifier = "community"
 +    post = "external"
 +    url = "https://discourse.gohugo.io/"
 +
 +
 +  [[menu.global]]
 +    name = "GitHub"
 +    weight = 200
 +    identifier = "github"
 +    post = "external"
 +    url = "https://github.com/gohugoio/hugo"
index f23aa99e975bc0dd0a7c9713a22930575c64b064,0000000000000000000000000000000000000000..3f9ad64a4ee9c30acaed73d6bd04d859f745015f
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,49 @@@
-     tagline: HTML not Enough?
 +---
 +title: "Hugo: A Fast and Flexible Website Generator"
 +date: 2017-03-02T12:00:00-05:00
 +features:
 +  - heading: Blistering Speed
 +    image_path: /images/icon-fast.svg
 +    tagline: What's modern about waiting for your site to build?
 +    copy: Hugo is the fastest tool of its kind. At <1 ms per page, the average site builds in less than a second.
 +
 +  - heading: Robust Content Management
 +    image_path: /images/icon-content-management.svg
 +    tagline: Flexibility rules. Hugo is a content strategist's dream.
 +    copy: Hugo supports unlimited content types, taxonomies, menus, dynamic API-driven content, and more, all without plugins.
 +
 +  - heading: Shortcodes
 +    image_path: /images/icon-shortcodes.svg
 +    tagline: Hugo's shortcodes are Markdown's hidden superpower.
 +    copy: We love the beautiful simplicity of markdown’s syntax, but there are times when we want more flexibility. Hugo shortcodes allow for both beauty and flexibility.
 +
 +  - heading: Built-in Templates
 +    image_path: /images/icon-built-in-templates.svg
 +    tagline: Hugo has common patterns to get your work done quickly.
 +    copy: Hugo ships with pre-made templates to make quick work of SEO, commenting, analytics and other functions. One line of code, and you're done.
 +
 +  - heading: Multilingual and i18n
 +    image_path: /images/icon-multilingual2.svg
 +    tagline: Polyglot baked in.
 +    copy: Hugo provides full i18n support for multi-language sites with the same straightforward development experience Hugo users love in single-language sites.
 +
 +  - heading: Custom Outputs
 +    image_path: /images/icon-custom-outputs.svg
++    tagline: HTML not enough?
 +    copy: Hugo allows you to output your content in multiple formats, including JSON or AMP, and makes it easy to create your own.
 +sections:
 +  - heading: "100s of Themes"
 +    cta: Check out the Hugo's themes.
 +    link: http://themes.gohugo.io/
 +    color_classes: bg-accent-color white
 +    image: /images/homepage-screenshot-hugo-themes.jpg
 +    copy: "Hugo provides a robust theming system that is easy to implement but capable of producing even the most complicated websites."
 +  - heading: "Capable Templating"
 +    cta: Get Started.
 +    link: templates/
 +    color_classes: bg-primary-color-light black
 +    image: /images/home-page-templating-example.png
 +    copy: "Hugo's Go-based templating provides just the right amount of logic to build anything from the simple to complex. If you prefer Jade/Pug-like syntax, you can also use Amber, Ace, or any combination of the three."
 +---
 +
 +Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
index 037e62e9b16320048970d8cee731925fcc5088db,0000000000000000000000000000000000000000..7575b79c8dc8f6faecc4ae19a9077f4116fba3d8
mode 100644,000000..100644
--- /dev/null
@@@ -1,167 -1,0 +1,165 @@@
- {{% code file="apache-notice.txt" download="apache-notice.txt" %}}
- ```
 +---
 +title: Apache License
 +linktitle: License
 +description: Hugo v0.15 and later are released under the Apache 2.0 license.
 +date: 2016-02-01
 +publishdate: 2016-02-01
 +lastmod: 2016-03-02
 +categories: ["about hugo"]
 +#tags: ["License","apache"]
 +menu:
 +  docs:
 +    parent: "about"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +aliases: [/meta/license]
 +toc: true
 +---
 +
 +{{% note %}}
 +Hugo v0.15 and later are released under the Apache 2.0 license.
 +Earlier versions of Hugo were released under the [Simple Public License](https://opensource.org/licenses/Simple-2.0).
 +{{% /note %}}
 +
 +_Version 2.0, January 2004_ <br>
 +<http://www.apache.org/licenses/LICENSE-2.0>
 +
 +*Terms and Conditions for use, reproduction, and distribution*
 +
 +## 1. Definitions
 +
 +“License” shall mean the terms and conditions for use, reproduction, and
 +distribution as defined by Sections 1 through 9 of this document.
 +
 +“Licensor” shall mean the copyright owner or entity authorized by the copyright
 +owner that is granting the License.
 +
 +“Legal Entity” shall mean the union of the acting entity and all other entities
 +that control, are controlled by, or are under common control with that entity.
 +For the purposes of this definition, “control” means **(i)** the power, direct or
 +indirect, to cause the direction or management of such entity, whether by
 +contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
 +outstanding shares, or **(iii)** beneficial ownership of such entity.
 +
 +“You” (or “Your”) shall mean an individual or Legal Entity exercising
 +permissions granted by this License.
 +
 +“Source” form shall mean the preferred form for making modifications, including
 +but not limited to software source code, documentation source, and configuration
 +files.
 +
 +“Object” form shall mean any form resulting from mechanical transformation or
 +translation of a Source form, including but not limited to compiled object code,
 +generated documentation, and conversions to other media types.
 +
 +“Work” shall mean the work of authorship, whether in Source or Object form, made
 +available under the License, as indicated by a copyright notice that is included
 +in or attached to the work (an example is provided in the Appendix below).
 +
 +“Derivative Works” shall mean any work, whether in Source or Object form, that
 +is based on (or derived from) the Work and for which the editorial revisions,
 +annotations, elaborations, or other modifications represent, as a whole, an
 +original work of authorship. For the purposes of this License, Derivative Works
 +shall not include works that remain separable from, or merely link (or bind by
 +name) to the interfaces of, the Work and Derivative Works thereof.
 +
 +“Contribution” shall mean any work of authorship, including the original version
 +of the Work and any modifications or additions to that Work or Derivative Works
 +thereof, that is intentionally submitted to Licensor for inclusion in the Work
 +by the copyright owner or by an individual or Legal Entity authorized to submit
 +on behalf of the copyright owner. For the purposes of this definition,
 +“submitted” means any form of electronic, verbal, or written communication sent
 +to the Licensor or its representatives, including but not limited to
 +communication on electronic mailing lists, source code control systems, and
 +issue tracking systems that are managed by, or on behalf of, the Licensor for
 +the purpose of discussing and improving the Work, but excluding communication
 +that is conspicuously marked or otherwise designated in writing by the copyright
 +owner as “Not a Contribution.”
 +
 +“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
 +of whom a Contribution has been received by Licensor and subsequently
 +incorporated within the Work.
 +
 +## 2. Grant of Copyright License
 +
 +Subject to the terms and conditions of this License, each Contributor hereby
 +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
 +irrevocable copyright license to reproduce, prepare Derivative Works of,
 +publicly display, publicly perform, sublicense, and distribute the Work and such
 +Derivative Works in Source or Object form.
 +
 +## 3. Grant of Patent License
 +
 +Subject to the terms and conditions of this License, each Contributor hereby
 +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
 +irrevocable (except as stated in this section) patent license to make, have
 +made, use, offer to sell, sell, import, and otherwise transfer the Work, where
 +such license applies only to those patent claims licensable by such Contributor
 +that are necessarily infringed by their Contribution(s) alone or by combination
 +of their Contribution(s) with the Work to which such Contribution(s) was
 +submitted. If You institute patent litigation against any entity (including a
 +cross-claim or counterclaim in a lawsuit) alleging that the Work or a
 +Contribution incorporated within the Work constitutes direct or contributory
 +patent infringement, then any patent licenses granted to You under this License
 +for that Work shall terminate as of the date such litigation is filed.
 +
 +## 4. Redistribution
 +
 +You may reproduce and distribute copies of the Work or Derivative Works thereof
 +in any medium, with or without modifications, and in Source or Object form,
 +provided that You meet the following conditions:
 +
 +* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
 +this License; and
 +* **(b)** You must cause any modified files to carry prominent notices stating that You
 +changed the files; and
 +* **\(c)** You must retain, in the Source form of any Derivative Works that You distribute,
 +all copyright, patent, trademark, and attribution notices from the Source form
 +of the Work, excluding those notices that do not pertain to any part of the
 +Derivative Works; and
 +* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
 +
 +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
 +
 +## 5. Submission of Contributions
 +
 +Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
 +
 +## 6. Trademarks
 +
 +This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
 +
 +## 7. Disclaimer of Warranty
 +
 +Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
 +
 +## 8. Limitation of Liability
 +
 +In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
 +
 +## 9. Accepting Warranty or Additional Liability
 +
 +While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
 +
 +_END OF TERMS AND CONDITIONS_
 +
 +## APPENDIX: How to apply the Apache License to your work
 +
 +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets `[]` replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.
 +
- ```
- {{% /code %}}
++{{< code file="apache-notice.txt" download="apache-notice.txt" >}}
 +Copyright [yyyy] [name of copyright owner]
 +
 +Licensed under the Apache License, Version 2.0 (the "License");
 +you may not use this file except in compliance with the License.
 +You may obtain a copy of the License at
 +
 +  http://www.apache.org/licenses/LICENSE-2.0
 +
 +Unless required by applicable law or agreed to in writing, software
 +distributed under the License is distributed on an "AS IS" BASIS,
 +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 +See the License for the specific language governing permissions and
 +limitations under the License.
++{{< /code >}}
index d6d30b3f31ea0230aeded8f961dd8a412ef5d675,0000000000000000000000000000000000000000..9fc58139ba0e9df5300144d2ff30bd36f806da98
mode 100644,000000..100644
--- /dev/null
@@@ -1,208 -1,0 +1,196 @@@
- ```bash
 +---
 +title: Archetypes
 +linktitle: Archetypes
 +description: Archetypes allow you to create new instances of content types and set default parameters from the command line.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [archetypes,generators,metadata,front matter]
 +categories: ["content management"]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 70
 +  quicklinks:
 +weight: 70    #rem
 +draft: false
 +aliases: [/content/archetypes/]
 +toc: true
 +---
 +
 +{{% note %}}
 +This section is outdated, see https://github.com/gohugoio/hugoDocs/issues/11
 +{{% /note %}}
 +{{% todo %}}
 +See above
 +{{% /todo %}}
 +
 +## What are Archetypes?
 +
 +**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.
 +
 +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:
 +
- {{% code file="archetype-example.sh" %}}
- ```bash
++```
 +hugo new <content-section>/<file-name.md>
 +```
 +
 +We can use this pattern to create a new `.md` file in the `posts` section:
 +
- ```
- {{% /code %}}
++{{< code file="archetype-example.sh" >}}
 +hugo new posts/my-first-post.md
- ```toml
++{{< /code >}}
 +
 +{{% note "Override Content Type in a New File" %}}
 +To override the content type Hugo infers from `[content-section]`, add the `--kind` flag to the end of the `hugo new` command.
 +{{% /note %}}
 +
 +Running this command in a new site that does not have default or custom archetypes will create the following file:
 +
 +{{% output file="content/posts/my-first-post.md" %}}
- {{% code file="archetypes/default.md" %}}
- ```toml
++```
 ++++
 +date = "2017-02-01T19:20:04-07:00"
 +title = "my first post"
 +draft = true
 ++++
 +```
 +{{% /output %}}
 +
 +{{% note %}}
 +In this example, if you do not already have a `content/posts` directory, Hugo will create both `content/posts/` and `content/posts/my-first-post.md` for you.
 +{{% /note %}}
 +
 +The  auto-populated fields are worth examining:
 +
 +* `title` is generated from the new content's filename (i.e. in this case, `my-first-post` becomes `"my first post"`)
 +* `date` and `title` are the variables that ship with Hugo and are therefore included in *all* content files created with the Hugo CLI. `date` is generated in [RFC 3339 format][] by way of Go's [`now()`][] function, which returns the current time.
 +* The third variable, `draft = true`, is *not* inherited by your default or custom archetypes but is included in Hugo's automatically scaffolded `default.md` archetype for convenience.
 +
 +Three variables per content file are often not enough for effective content management of larger websites. Luckily, Hugo provides a simple mechanism for extending the number of variables through custom archetypes, as well as default archetypes to keep content creation DRY.
 +
 +## Lookup Order for Archetypes
 +
 +Similar to the [lookup order for templates][lookup] in your `layouts` directory, Hugo looks for a section- or type-specific archetype, then a default archetype, and finally an internal archetype that ships with Hugo. For example, Hugo will look for an archetype for `content/posts/my-first-post.md` in the following order:
 +
 +1. `archetypes/posts.md`
 +2. `archetypes/default.md`
 +3. `themes/<THEME>/archetypes/posts.md`
 +4. `themes/<THEME>/archetypes/default.md` (Auto-generated with `hugo new site`)
 +
 +{{% note "Using a Theme Archetype" %}}
 +If you wish to use archetypes that ship with a theme, the `theme` field must be specified in your [configuration file](/getting-started/configuration/).
 +{{% /note %}}
 +
 +## Choose Your Archetype's Front Matter Format
 +
 +By default, `hugo new` content files include front matter in the TOML format regardless of the format used in `archetypes/*.md`.
 +
 +You can specify a different default format in your site [configuration file][] file using the `metaDataFormat` directive. Possible values are `toml`, `yaml`, and `json`.
 +
 +## Default Archetypes
 +
 +Default archetypes are convenient if your content's front matter stays consistent across multiple [content sections][sections].
 +
 +### 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`. 
 +
 +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.
 +
- ```
- {{% /code %}}
++{{< code file="archetypes/default.md" >}}
 ++++
 +tags = ["golang", "hugo"]
 +categories = ["web development"]
 ++++
- {{% code file="new-post-from-default.sh" %}}
- ```bash
++{{< /code >}}
 +
 +{{% warning "EOL Characters in Text Editors"%}}
 +If you get an `EOF error` when using `hugo new`, add a carriage return after the closing `+++` or `---` for your TOML or YAML front matter, respectively. (See the [troubleshooting article on EOF errors](/troubleshooting/eof-error/) for more information.)
 +{{% /warning %}}
 +
 +### Use the Default Archetype
 +
 +With an `archetypes/default.md` in place, we can use the CLI to create a new post in the `posts` content section:
 +
- ```
- {{% /code %}}
++{{< code file="new-post-from-default.sh" >}}
 +$ hugo new posts/my-new-post.md
- ```toml
++{{< /code >}}
 +
 +Hugo then creates a new markdown file with the following front matter:
 +
 +{{% output file="content/posts/my-new-post.md" %}}
- {{% code file="archetypes/posts.md"%}}
- ```toml
++```
 ++++
 +categories = ["web development"]
 +date = "2017-02-01T19:20:04-07:00"
 +tags = ["golang", "hugo"]
 +title = "my new post"
 ++++
 +```
 +{{% /output %}}
 +
 +We see that the `title` and `date` key-values have been added in addition to the `tags` and `categories` key-values from `archetypes/default.md`.
 +
 +{{% note "Ordering of Front Matter" %}}
 +You may notice that content files created with `hugo new` do not respect the order of the key-values specified in your archetype files. This is a [known issue](https://github.com/gohugoio/hugo/issues/452).
 +{{% /note %}}
 +
 +## Custom Archetypes
 +
 +Suppose your site's `posts` section requires more sophisticated front matter than what has been specified in `archetypes/default.md`. You can create a custom archetype for your posts at `archetypes/posts.md` that includes the full set of front matter to be added to the two default archetypes fields.
 +
 +### Create a Custom Archetype
 +
- ```
- {{% /code %}}
++{{< code file="archetypes/posts.md">}}
 ++++
 +description = ""
 +tags = ""
 +categories = ""
 ++++
- {{% code file="new-post-from-custom.sh" %}}
- ```bash
++{{< /code >}}
 +
 +### Use a Custom Archetype
 +
 +With an `archetypes/posts.md` in place, you can use the Hugo CLI to create a new post with your preconfigured front matter in the `posts` content section:
 +
- ```
- {{% /code %}}
++{{< code file="new-post-from-custom.sh" >}}
 +$ hugo new posts/post-from-custom.md
- ```toml
++{{< /code >}}
 +
 +This time, Hugo recognizes our custom `archetypes/posts.md` archetype and uses it instead of `archetypes/default.md`. The generated file will now include the full list of front matter parameters, as well as the base archetype's `title` and `date`:
 +
 +{{% output file="content/posts/post-from-custom-archetype.md" %}}
- {{% code file="archetypes/functions.md" %}}
- ```yaml
++```
 ++++
 +categories = ""
 +date = 2017-02-13T17:24:43-08:00
 +description = ""
 +tags = ""
 +title = "post from custom archetype"
 ++++
 +```
 +{{% /output %}}
 +
 +### Hugo Docs Custom Archetype
 +
 +As an example of archetypes in practice, the following is the `functions` archetype from the Hugo docs:
 +
- ```
- {{% /code %}}
++{{< code file="archetypes/functions.md" >}}
 +{{< readfile file="/themes/gohugoioTheme/archetypes/functions.md" >}}
++{{< /code >}}
 +
 +{{% note %}}
 +The preceding archetype is kept up to date with every Hugo build by using Hugo's [`readFile` function](/functions/readfile/). For similar examples, see [Local File Templates](/templates/files/).
 +{{% /note %}}
 +
 +[archetypes directory]: /getting-started/directory-structure/
 +[`now()`]: http://golang.org/pkg/time/#Now
 +[configuration file]: /getting-started/configuration/
 +[sections]: /content-management/sections/
 +[content types]: /content-management/types/
 +[front matter]: /content-management/front-matter/
 +[RFC 3339 format]: https://www.ietf.org/rfc/rfc3339.txt
 +[taxonomies]: /content-management/taxonomies/
 +[lookup]: /templates/lookup/
 +[templates]: /templates/
index 80a783912ae7c3095320a208af477855c049bdb3,0000000000000000000000000000000000000000..0a0d1799d288cd57b21d15fd19a4d114b2590464
mode 100644,000000..100644
--- /dev/null
@@@ -1,193 -1,0 +1,185 @@@
- {{% code  file="data/_authors/alice.toml" %}}
- ```toml
 +---
 +title: Authors
 +linktitle: Authors
 +description:
 +date: 2016-08-22
 +publishdate: 2017-03-12
 +lastmod: 2017-03-12
 +#tags: [authors]
 +categories: ["content management"]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 55
 +weight: 55    #rem
 +draft: true
 +aliases: [/content/archetypes/]
 +toc: true
 +comments: Before this page is published, need to also update both site- and page-level variables documentation.
 +---
 +
 +
 +
 +Larger sites often have multiple content authors. Hugo provides standardized author profiles to organize relationships between content and content creators for sites operating under a distributed authorship model.
 +
 +## Author Profiles
 +
 +You can create a profile containing metadata for each author on your website. These profiles have to be saved under `data/_authors/`. The filename of the profile will later be used as an identifier. This way Hugo can associate content with one or multiple authors. An author's profile can be defined in the JSON, YAML, or TOML format.
 +
 +### Example: Author Profile
 +
 +Let's suppose Alice Allison is a blogger. A simple unique identifier would be `alice`. Now, we have to create a file called `alice.toml` in the `data/_authors/` directory. The following example is the standardized template written in TOML:
 +
- ```
- {{% /code %}}
++{{< code  file="data/_authors/alice.toml" >}}
 +givenName      = "Alice"   # or firstName as alias
 +familyName     = "Allison" # or lastName as alias
 +displayName    = "Alice Allison"
 +thumbnail      = "static/authors/alice-thumb.jpg"
 +image          = "static/authors/alice-full.jpg"
 +shortBio       = "My name is Alice and I'm a blogger."
 +bio            = "My name is Alice and I'm a blogger... some other stuff"
 +email          = "alice.allison@email.com"
 +weight         = 10
 +
 +[social]
 +    facebook   = "alice.allison"
 +    twitter    = "alice"
 +    googleplus = "aliceallison1"
 +    website    = "www.example.com"
 +
 +[params]
 +    random     = "whatever you want"
- ```yaml
++{{< /code >}}
 +
 +All variables are optional but it's advised to fill all important ones (e.g. names and biography) because themes can vary in their usage.
 +
 +You can store files for the `thumbnail` and `image` attributes in the `static` folder. Then add the path to the photos relative to `static`; e.g., `/static/path/to/thumbnail.jpg`.
 +
 +`weight` allows you to define the order of an author in an `.Authors` list and can be accessed on list or via the `.Site.Authors` variable.
 +
 +The `social` section contains all the links to the social network accounts of an author. Hugo is able to generate the account links for the most popular social networks automatically. This way, you only have to enter your username. You can find a list of all supported social networks [here](#linking-social-network-accounts-automatically). All other variables, like `website` in the example above remain untouched.
 +
 +The `params` section can contain arbitrary data much like the same-named section in the config file. What it contains is up to you.
 +
 +## Associate Content Through Identifiers
 +
 +Earlier it was mentioned that content can be associated with an author through their corresponding identifier. In our case, blogger Alice has the identifier `alice`. In the front matter of a content file, you can create a list of identifiers and assign it to the `authors` variable. Here are examples for `alice` using YAML and TOML, respectively.
 +
- ```toml
++```
 +---
 +title: Why Hugo is so Awesome
 +date: 2016-08-22T14:27:502:00
 +authors: ["alice"]
 +---
 +
 +Nothing to read here. Move along...
 +```
 +
- {{% code file="layouts/partials/author-info.html" download="author-info.html" %}}
- ```html
++```
 ++++
 +title = Why Hugo is so Awesome
 +date = "2016-08-22T14:27:502:00"
 +authors: ["alice"]
 ++++
 +
 +Nothing to read here. Move along...
 +```
 +
 +Future authors who might work on this blog post can append their identifiers to the `authors` array in the front matter as well.
 +
 +## Work with Templates
 +
 +After a successful setup it's time to give some credit to the authors by showing them on the website. Within the templates Hugo provides a list of the author's profiles if they are listed in the `authors` variable within the front matter.
 +
 +The list is accessible via the `.Authors` template variable. Printing all authors of a the blog post is straight forward:
 +
 +```
 +{{ range .Authors }}
 +    {{ .DisplayName }}
 +{{ end }}
 +=> Alice Allison
 +```
 +
 +Even if there are co-authors you may only want to show the main author. For this case you can use the `.Author` template variable **(note the singular form)**. The template variable contains the profile of the author that is first listed with his identifier in the front matter.
 +
 +{{% note %}}
 +You can find a list of all template variables to access the profile information in [Author Variables](/variables/authors/).
 +{{% /note %}}
 +
 +### Link Social Network Accounts
 +
 +As aforementioned, Hugo is able to generate links to profiles of the most popular social networks. The following social networks with their corrersponding identifiers are supported:  `github`, `facebook`, `twitter`, `googleplus`, `pinterest`, `instagram`, `youtube` and `linkedin`.
 +
 +This is can be done with the `.Social.URL` function. Its only parameter is the name of the social network as they are defined in the profile (e.g. `facebook`, `googleplus`). Custom variables like `website` remain as they are.
 +
 +Most articles feature a small section with information about the author at the end. Let's create one containing the author's name, a thumbnail, a (summarized) biography and links to all social networks:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/author-info.html" download="author-info.html" >}}
 +{{ with .Author }}
 +    <h3>{{ .DisplayName }}</h3>
 +    <img src="{{ .Thumbnail | absURL }}" alt="{{ .DisplayName }}">
 +    <p>{{ .ShortBio }}</p>
 +    <ul>
 +    {{ range $network, $username := .Social }}
 +        <li><a href="{{ $.Author.Social.URL $network }}">{{ $network }}</a></li>
 +    {{ end }}
 +    </ul>
 +{{ end }}
- ```yaml
++{{< /code >}}
 +
 +## Who Published What?
 +
 +That question can be answered with a list of all authors and another list containing all articles that they each have written. Now we have to translate this idea into templates. The [taxonomy][] feature allows us to logically group content based on information that they have in common; e.g. a tag or a category. Well, many articles share the same author, so this should sound familiar, right?
 +
 +In order to let Hugo know that we want to group content based on their author, we have to create a new taxonomy called `author` (the name corresponds to the variable in the front matter). Here is the snippet in a `config.yaml` and `config.toml`, respectively:
 +
- ```toml
++```
 +taxonomies:
 +    author: authors
 +```
 +
- {{% code file="layouts/taxonomy/author.term.html" download="author.term.html" %}}
- ```html
++```
 +[taxonomies]
 +    author = "authors"
 +```
 +
 +
 +### List All Authors
 +
 +In the next step we can create a template to list all authors of your website. Later, the list can be accessed at `www.example.com/authors/`. Create a new template in the `layouts/taxonomy/` directory called `authors.term.html`. This template will be exclusively used for this taxonomy.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/taxonomy/author.term.html" download="author.term.html" >}}
 +<ul>
 +{{ range $author, $v := .Data.Terms }}
 +    {{ $profile := $.Authors.Get $author }}
 +    <li>
 +        <a href="{{ printf "%s/%s/" $.Data.Plural $author | absURL }}">
 +            {{ $profile.DisplayName }} - {{ $profile.ShortBio }}
 +        </a>
 +    </li>
 +{{ end }}
 +</ul>
- {{% code file="layouts/taxonomy/author.html" download="author.html" %}}
- ```html
++{{< /code >}}
 +
 +`.Data.Terms` contains the identifiers of all authors and we can range over it to create a list with all author names. The `$profile` variable gives us access to the profile of the current author. This allows you to generate a nice info box with a thumbnail, a biography and social media links, like at the [end of a blog post](#linking-social-network-accounts-automatically).
 +
 +### List Each Author's Publications
 +
 +Last but not least, we have to create the second list that contains all publications of an author. Each list will be shown in its own page and can be accessed at `www.example.com/authors/<IDENTIFIER>`. Replace `<IDENTIFIER>` with a valid author identifier like `alice`.
 +
 +The layout for this page can be defined in the template `layouts/taxonomy/author.html`.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/taxonomy/author.html" download="author.html" >}}
 +{{ range .Data.Pages }}
 +    <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
 +    <span>written by {{ .Author.DisplayName }}</span>
 +    {{ .Summary }}
 +{{ end }}
++{{< /code >}}
 +
 +The example above generates a simple list of all posts written by a single author. Inside the loop you've access to the complete set of [page variables][pagevars]. Therefore, you can add additional information about the current posts like the publishing date or the tags.
 +
 +With a lot of content this list can quickly become very long. Consider to use the [pagination][] feature. It splits the list into smaller chunks and spreads them over multiple pages.
 +
 +[pagevars]: /variables/page/
 +[pagination]: /templates/pagination/
index 33387e5700498c19a57d9335b1bcaac0b9bc711c,0000000000000000000000000000000000000000..2db4497383260bdf22145f0e256e8b532b224f34
mode 100644,000000..100644
--- /dev/null
@@@ -1,84 -1,0 +1,84 @@@
- ```toml
 +---
 +title: Comments
 +linktitle: Comments
 +description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-09
 +#tags: [sections,content,organization]
 +categories: [project organization, fundamentals]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 140
 +weight: 140   #rem
 +draft: false
 +aliases: [/extras/comments/]
 +toc: true
 +---
 +
 +Hugo ships with support for [Disqus](https://disqus.com/), a third-party service that provides comment and community capabilities to websites via JavaScript.
 +
 +Your theme may already support Disqus, but if not, it is easy to add to your templates via [Hugo's built-in Disqus partial][disquspartial].
 +
 +## Add Disqus
 +
 +Hugo comes with all the code you need to load Disqus into your templates. Before adding Disqus to your site, you'll need to [set up an account][disqussetup].
 +
 +### Configure Disqus
 +
 +Disqus comments require you set a single value in your [site's configuration file][configuration]. The following show the configuration variable in a `config.toml` and `config.yml`, respectively:
 +
- ```yaml
++```
 +disqusShortname = "yourdiscussshortname"
 +```
 +
++```
 +disqusShortname: "yourdiscussshortname"
 +```
 +
 +For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter][] of a single content file:
 +
 +* `disqus_identifier`
 +* `disqus_title`
 +* `disqus_url`
 +
 +### Render Hugo's Built-in Disqus Partial Template
 +
 +See [Partial Templates][partials] to learn how to add the Disqus partial to your Hugo website's templates.
 +
 +## Comments Alternatives
 +
 +There are a few alternatives to commenting on static sites for those who do not want to use Disqus:
 +
 +* [Static Man](https://staticman.net/)
 +* [txtpen](https://txtpen.com)
 +* [IntenseDebate](http://intensedebate.com/)
 +* [Graph Comment][]
 +* [Muut](http://muut.com/)
 +* [isso](http://posativ.org/isso/) (Self-hosted, Python)
 +    * [Tutorial on Implementing Isso with Hugo][issotutorial]
 +
 +
 +<!-- I don't think this is worth including in the documentation since it seems that Steve is no longer supporting or developing this project. rdwatters - 2017-02-29.-->
 +<!-- * [Kaiju](https://github.com/spf13/kaiju) -->
 +
 +<!-- ## Kaiju
 +
 +[Kaiju](https://github.com/spf13/kaiju) is an open-source project started by [spf13](http://spf13.com/) (Hugo’s author) to bring easy and fast real time discussions to the web.
 +
 +Written using Go, Socket.io, and [MongoDB][], Kaiju is very fast and easy to deploy.
 +
 +It is in early development but shows promise. If you have interest, please help by contributing via pull request, [opening an issue in the Kaiju GitHub repository][kaijuissue], or [Tweeting about it][tweet]. Every bit helps. -->
 +
 +[configuration]: /getting-started/configuration/
 +[disquspartial]: /templates/partials/#disqus
 +[disqussetup]: https://disqus.com/profile/signup/
 +[forum]: https://discourse.gohugo.io
 +[front matter]: /content-management/front-matter/
 +[Graph Comment]: https://graphcomment.com/
 +[kaijuissue]: https://github.com/spf13/kaiju/issues/new
 +[issotutorial]: https://stiobhart.net/2017-02-24-isso-comments/
 +[partials]: /templates/partials/
 +[MongoDB]: https://www.mongodb.com/
 +[tweet]: https://twitter.com/spf13
index 9a279533017ea171fa87f809a97166c660b5d973,0000000000000000000000000000000000000000..7ee81f3dbd2a96902781fb9acf2ece0b2426ea47
mode 100644,000000..100644
--- /dev/null
@@@ -1,125 -1,0 +1,123 @@@
- ```md
 +---
 +title: Cross References
 +description: Hugo makes it easy to link documents together.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-31
 +categories: [content management]
 +#tags: ["cross references","references", "anchors", "urls"]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 100
 +weight: 100   #rem
 +aliases: [/extras/crossreferences/]
 +toc: true
 +---
 +
 +
 + The `ref` and `relref` shortcodes link documents together, both of which are [built-in Hugo shortcodes][]. These shortcodes are also used to provide links to headings inside of your content, whether across documents or within a document. The only difference between `ref` and `relref` is whether the resulting URL is absolute (`http://1.com/about/`) or relative (`/about/`), respectively.
 +
 +## Use `ref` and `relref`
 +
- ```md
++```
 +{{</* ref "document" */>}}
 +{{</* ref "#anchor" */>}}
 +{{</* ref "document#anchor" */>}}
 +{{</* relref "document" */>}}
 +{{</* relref "#anchor" */>}}
 +{{</* relref "document#anchor" */>}}
 +```
 +
 +The single parameter to `ref` is a string with a content `documentname` (e.g., `about.md`) with or without an appended in-document `anchor` (`#who`) without spaces.
 +
 +### Document Names
 +
 +The `documentname` is the name of a document, including the format extension; this may be just the filename, or the relative path from the `content/` directory. With a document `content/blog/post.md`, either format will produce the same result:
 +
- ```bash
++```
 +{{</* relref "blog/post.md" */>}} => `/blog/post/`
 +{{</* relref "post.md" */>}} => `/blog/post/`
 +```
 +
 +If you have the same filename used across multiple sections, you should only use the relative path format; otherwise, the behavior will be `undefined`. This is best illustrated with an example `content` directory:
 +
- {{% code file="content/meta/my-article.md" copy="false" %}}
- ```md
++```
 +.
 +└── content
 +    ├── events
 +    │   └── my-birthday.md
 +    ├── galleries
 +    │   └── my-birthday.md
 +    ├── meta
 +    │   └── my-article.md
 +    └── posts
 +        └── my-birthday.md
 +```
 +
 +To be sure to get the correct reference in this case, use the full path: 
 +
- ```
- {{% /code %}}
++{{< code file="content/meta/my-article.md" copy="false" >}}
 +{{</* relref "events/my-birthday.md" */>}} => /events/my-birthday/
- ```md
++{{< /code >}}
 +
 +{{< todo >}}Remove this warning when https://github.com/gohugoio/hugo/issues/3703 is released.{{< /todo >}}
 +
 +A relative document name must *not* begin with a slash (`/`).
- ```md
++```
 +{{</* relref "/events/my-birthday.md" */>}} => ""
 +```
 +
 +### With Multiple Output Formats
 +
 +If the page exists in multiple [output formats][], `ref` or `relref` can be used with a output format name:
 +
 +```
 + [Neat]({{</* ref "blog/neat.md" "amp" */>}})
 +```
 +
 +### Anchors
 +
 +When an `anchor` is provided by itself, the current page’s unique identifier will be appended; when an `anchor` is provided appended to `documentname`, the found page's unique identifier will be appended:
 +
- ```md
++```
 +{{</* relref "#anchors" */>}} => #anchors:9decaf7
 +{{</* relref "about-hugo/hugo-features.md#content" */>}} => /blog/post/#who:badcafe
 +```
 +
 +The above examples render as follows for this very page as well as a reference to the "Content" heading in the Hugo docs features pageyoursite
 +
- * `{{</* ref "blog/post.md" */>}}` => `http://yoursite.com/blog/post/`
- * `{{</* ref "post.md#tldr" */>}}` => `http://yoursite.com/blog/post/#tldr:caffebad`
++```
 +{{</* relref "#who" */>}} => #who:9decaf7
 +{{</* relref "blog/post.md#who" */>}} => /blog/post/#who:badcafe
 +```
 +
 +More information about document unique identifiers and headings can be found [below]({{< ref "#hugo-heading-anchors" >}}).
 +
 +### Examples
 +
- ```md
++* `{{</* ref "blog/post.md" */>}}` => `http://example.com/blog/post/`
++* `{{</* ref "post.md#tldr" */>}}` => `http://example.com/blog/post/#tldr:caffebad`
 +* `{{</* relref "post.md" */>}}` => `/blog/post/`
 +* `{{</* relref "blog/post.md#tldr" */>}}` => `/blog/post/#tldr:caffebad`
 +* `{{</* ref "#tldr" */>}}` => `#tldr:badcaffe`
 +* `{{</* relref "#tldr" */>}}` => `#tldr:badcaffe`
 +
 +## Hugo Heading Anchors
 +
 +When using Markdown document types, Hugo generates heading anchors automatically. The generated anchor for this section is `hugo-heading-anchors`. Because the heading anchors are generated automatically, Hugo takes some effort to ensure that heading anchors are unique both inside a document and across the entire site.
 +
 +Ensuring heading uniqueness across the site is accomplished with a unique identifier for each document based on its path. Unless a document is renamed or moved between sections *in the filesystem*, the unique identifier for the document will not change: `blog/post.md` will always have a unique identifier of `81df004c333b392d34a49fd3a91ba720`.
 +
 +`ref` and `relref` were added so you can make these reference links without having to know the document’s unique identifier. (The links in document tables of contents are automatically up-to-date with this value.)
 +
++```
 +{{</* relref "content-management/cross-references.md#hugo-heading-anchors" */>}}
 +/content-management/cross-references/#hugo-heading-anchors:77cd9ea530577debf4ce0f28c8dca242
 +```
 +
 +
 +[built-in Hugo shortcodes]: /content-management/shortcodes/#using-the-built-in-shortcodes
 +[lists]: /templates/lists/
 +[output formats]: /templates/output-formats/
 +[shortcode]: /content-management/shortcodes/
index ae6276db36ece1aa902d11bbd55bdbdb529c864b,0000000000000000000000000000000000000000..be84e7cf47efac82b4ff81d2f5568968d68f68ae
mode 100644,000000..100644
--- /dev/null
@@@ -1,249 -1,0 +1,241 @@@
- {{% code file="content/my-to-do-list.md" %}}
- ```markdown
 +---
 +title: Supported Content Formats
 +linktitle: Supported Content Formats
 +description: Markdown and Emacs Org-Mode have native support, and additional formats (e.g. Asciidoc) come via external helpers.
 +date: 2017-01-10
 +publishdate: 2017-01-10
 +lastmod: 2017-04-06
 +categories: [content management]
 +#tags: [markdown,asciidoc,mmark,content format]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 20
 +weight: 20    #rem
 +draft: false
 +aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/,/tutorials/mathjax/]
 +toc: true
 +---
 +
 +**Markdown is the main content format** and comes in two flavours:  The excellent [Blackfriday project][blackfriday] (name your files `*.md` or set `markup = "markdown"` in front matter) or its fork [Mmark][mmark] (name your files `*.mmark` or set `markup = "mmark"` in front matter), both very fast markdown engines written in Go.
 +
 +For Emacs users, [goorgeous](https://github.com/chaseadamsio/goorgeous) provides built-in native support for Org-mode  (name your files `*.org` or set `markup = "org"` in front matter) 
 +
 +{{% note "Deeply Nested Lists" %}}
 +Before you begin writing your content in markdown, Blackfriday has a known issue [(#329)](https://github.com/russross/blackfriday/issues/329) with handling deeply nested lists. Luckily, there is an easy workaround. Use 4-spaces (i.e., <kbd>tab</kbd>) rather than 2-space indentations.
 +{{% /note %}}
 +
 +## Configure BlackFriday Markdown Rendering
 +
 +You can configure multiple aspects of Blackfriday as show in the following list. See the docs on [Configuration][config] for the full list of explicit directions you can give to Hugo when rendering your site.
 +
 +{{< readfile file="/content/readfiles/bfconfig.md" markdown="true" >}}
 +
 +## Extend Markdown
 +
 +Hugo provides some convenient methods for extending markdown.
 +
 +### Task Lists
 +
 +Hugo supports [GitHub-styled task lists (i.e., TODO lists)][gfmtasks] for the Blackfriday markdown renderer. If you do not want to use this feature, you can disable it in your configuration.
 +
 +#### Example Task List Input
 +
- ```
- {{% /code %}}
++{{< code file="content/my-to-do-list.md" >}}
 +- [ ] a task list item
 +- [ ] list syntax required
 +- [ ] incomplete
 +- [x] completed
- ```html
++{{< /code >}}
 +
 +#### Example Task List Output
 +
 +The preceding markdown produces the following HTML in your rendered website:
 +
- ```yaml
++```
 +<ul class="task-list">
 +    <li><input type="checkbox" disabled="" class="task-list-item"> a task list item</li>
 +    <li><input type="checkbox" disabled="" class="task-list-item"> list syntax required</li>
 +    <li><input type="checkbox" disabled="" class="task-list-item"> incomplete</li>
 +    <li><input type="checkbox" checked="" disabled="" class="task-list-item"> completed</li>
 +</ul>
 +```
 +
 +#### Example Task List Display
 +
 +The following shows how the example task list will look to the end users of your website. Note that visual styling of lists is up to you. This list has been styled according to [the Hugo Docs stylesheet][hugocss].
 +
 +- [ ] a task list item
 +- [ ] list syntax required
 +- [ ] incomplete
 +- [x] completed
 +
 +### Emojis
 +
 +To add emojis directly to content, set `enableEmoji` to `true` in your [site configuration][config]. To use emojis in templates or shortcodes, see [`emojify` function][].
 +
 +For a full list of emojis, see the [Emoji cheat sheet][emojis].
 +
 +### Shortcodes
 +
 +If you write in Markdown and find yourself frequently embedding your content with raw HTML, Hugo provides built-in shortcodes functionality. This is one of the most powerful features in Hugo and allows you to create your own Markdown extensions very quickly.
 +
 +See [Shortcodes][sc] for usage, particularly for the built-in shortcodes that ship with Hugo, and [Shortcode Templating][sct] to learn how to build your own.
 +
 +### Code Blocks
 +
 +Hugo supports GitHub-flavored markdown's use of triple back ticks, as well as provides a special [`highlight` nested shortcode][hlsc] to render syntax highlighting via [Pygments][]. For usage examples and a complete explanation, see the [syntax highlighting documentation][hl] in [developer tools][].
 +
 +## Mmark
 +
 +Mmark is a [fork of BlackFriday][mmark] and markdown superset that is well suited for writing [IETF documentation][ietf]. You can see examples of the syntax in the [Mmark GitHub repository][mmarkgh] or the full syntax on [Miek Gieben's website][].
 +
 +### Use Mmark
 +
 +As Hugo ships with Mmark, using the syntax is as easy as changing the extension of your content files from `.md` to `.mmark`.
 +
 +In the event that you want to only use Mmark in specific files, you can also define the Mmark syntax in your content's front matter:
 +
- {{% code file="add-mathjax-to-page.html" %}}
- ```html
++```
 +---
 +title: My Post
 +date: 2017-04-01
 +markdown: mmark
 +---
 +```
 +
 +{{% warning %}}
 +Thare are some features not available in Mmark; one example being that shortcodes are not translated when used in an included `.mmark` file ([#3131](https://github.com/gohugoio/hugo/issues/3137)), and `EXTENSION_ABBREVIATION` ([#1970](https://github.com/gohugoio/hugo/issues/1970)) and the aforementioned GFM todo lists ([#2270](https://github.com/gohugoio/hugo/issues/2270)) are not fully supported. Contributions are welcome.
 +{{% /warning %}}
 +
 +## MathJax with Hugo
 +
 +[MathJax](http://www.mathjax.org/) is a JavaScript library that allows the display of mathematical expressions described via a LaTeX-style syntax in the HTML (or Markdown) source of a web page. As it is a pure a JavaScript library, getting it to work within Hugo is fairly straightforward, but does have some oddities that will be discussed here.
 +
 +This is not an introduction into actually using MathJax to render typeset mathematics on your website. Instead, this page is a collection of tips and hints for one way to get MathJax working on a website built with Hugo.
 +
 +### Enable MathJax
 +
 +The first step is to enable MathJax on pages that you would like to have typeset math. There are multiple ways to do this (adventurous readers can consult the [Loading and Configuring](http://docs.mathjax.org/en/latest/configuration.html) section of the MathJax documentation for additional methods of including MathJax), but the easiest way is to use the secure MathJax CDN by include a `<script>` tag for the officially recommended secure CDN ([cdn.js.com](https://cdnjs.com)):
 +
- ```
- {{% /code %}}
++{{< code file="add-mathjax-to-page.html" >}}
 +<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
 +</script>
- {{% code file="mathjax-markdown-solution.html" %}}
- ```js
++{{< /code >}}
 +
 +One way to ensure that this code is included in all pages is to put it in one of the templates that live in the `layouts/partials/` directory. For example, I have included this in the bottom of my template `footer.html` because I know that the footer will be included in every page of my website.
 +
 +### Options and Features
 +
 +MathJax is a stable open-source library with many features. I encourage the interested reader to view the [MathJax Documentation](http://docs.mathjax.org/en/latest/index.html), specifically the sections on [Basic Usage](http://docs.mathjax.org/en/latest/index.html#basic-usage) and [MathJax Configuration Options](http://docs.mathjax.org/en/latest/index.html#mathjax-configuration-options).
 +
 +### Issues with Markdown
 +
 +{{% note %}}
 +The following issues with Markdown assume you are using `.md` for content and BlackFriday for parsing. Using [Mmark](#mmark) as your content format will obviate the need for the following workarounds.
 +
 +When using Mmark with MathJax, use `displayMath: [['$$','$$'], ['\\[','\\]']]`. See the [Mmark `README.md`](https://github.com/miekg/mmark/wiki/Syntax#math-blocks) for more information. In addition to MathJax, Mmark has been shown to work well with [KaTeX](https://github.com/Khan/KaTeX). See this [related blog post from a Hugo user](http://nosubstance.me/post/a-great-toolset-for-static-blogging/).
 +{{% /note %}}
 +
 +After enabling MathJax, any math entered between proper markers (see the [MathJax documentation][mathjaxdocs]) will be processed and typeset in the web page. One issue that comes up, however, with Markdown is that the underscore character (`_`) is interpreted by Markdown as a way to wrap text in `emph` blocks while LaTeX (MathJax) interprets the underscore as a way to create a subscript. This "double speak" of the underscore can result in some unexpected and unwanted behavior.
 +
 +### Solution
 +
 +There are multiple ways to remedy this problem. One solution is to simply escape each underscore in your math code by entering `\_` instead of `_`. This can become quite tedious if the equations you are entering are full of subscripts.
 +
 +Another option is to tell Markdown to treat the MathJax code as verbatim code and not process it. One way to do this is to wrap the math expression inside a `<div>` `</div>` block. Markdown would ignore these sections and they would get passed directly on to MathJax and processed correctly. This works great for display style mathematics, but for inline math expressions the line break induced by the `<div>` is not acceptable. The syntax for instructing Markdown to treat inline text as verbatim is by wrapping it in backticks (`` ` ``). You might have noticed, however, that the text included in between backticks is rendered differently than standard text (on this site these are items highlighted in red). To get around this problem, we could create a new CSS entry that would apply standard styling to all inline verbatim text that includes MathJax code. Below I will show the HTML and CSS source that would accomplish this (note this solution was adapted from [this blog post](http://doswa.com/2011/07/20/mathjax-in-markdown.html)---all credit goes to the original author).
 +
- ```
- {{% /code %}}
++{{< code file="mathjax-markdown-solution.html" >}}
 +<script type="text/x-mathjax-config">
 +MathJax.Hub.Config({
 +  tex2jax: {
 +    inlineMath: [['$','$'], ['\\(','\\)']],
 +    displayMath: [['$$','$$'], ['\[','\]']],
 +    processEscapes: true,
 +    processEnvironments: true,
 +    skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
 +    TeX: { equationNumbers: { autoNumber: "AMS" },
 +         extensions: ["AMSmath.js", "AMSsymbols.js"] }
 +  }
 +});
 +</script>
 +
 +<script type="text/x-mathjax-config">
 +  MathJax.Hub.Queue(function() {
 +    // Fix <code> tags after MathJax finishes running. This is a
 +    // hack to overcome a shortcoming of Markdown. Discussion at
 +    // https://github.com/mojombo/jekyll/issues/199
 +    var all = MathJax.Hub.getAllJax(), i;
 +    for(i = 0; i < all.length; i += 1) {
 +        all[i].SourceElement().parentNode.className += ' has-jax';
 +    }
 +});
 +</script>
- {{% code file="mathjax-style.css" %}}
- ```css
++{{< /code >}}
 +
 +
 +
 +As before, this content should be included in the HTML source of each page that will be using MathJax. The next code snippet contains the CSS that is used to have verbatim MathJax blocks render with the same font style as the body of the page.
 +
- ```
- {{% /code %}}
++{{< code file="mathjax-style.css" >}}
 +code.has-jax {
 +    font: inherit;
 +    font-size: 100%;
 +    background: inherit;
 +    border: inherit;
 +    color: #515151;
 +}
++{{< /code >}}
 +
 +In the CSS snippet, notice the line `color: #515151;`. `#515151` is the value assigned to the `color` attribute of the `body` class in my CSS. In order for the equations to fit in with the body of a web page, this value should be the same as the color of the body.
 +
 +### Usage
 +
 +With this setup, everything is in place for a natural usage of MathJax on pages generated using Hugo. In order to include inline mathematics, just put LaTeX code in between `` `$ TeX Code $` `` or `` `\( TeX Code \)` ``. To include display style mathematics, just put LaTeX code in between `<div>$$TeX Code$$</div>`. All the math will be properly typeset and displayed within your Hugo generated web page!
 +
 +## Additional Formats Through External Helpers
 +
 +Hugo has new concept called _external helpers_. It means that you can write your content using [Asciidoc][ascii], [reStructuredText][rest]. If you have files with associated extensions, Hugo will call external commands to generate the content. ([See the Hugo source code for external helpers][helperssource].)
 +
 +For example, for Asciidoc files, Hugo will try to call the `asciidoctor` or `asciidoc` command. This means that you will have to install the associated tool on your machine to be able to use these formats. ([See the Asciidoctor docs for installation instructions](http://asciidoctor.org/docs/install-toolchain/)).
 +
 +To use these formats, just use the standard extension and the front matter exactly as you would do with natively supported `.md` files.
 +
 +{{% warning "Performance of External Helpers" %}}
 +Because additional formats are external commands generation performance will rely heavily on the performance of the external tool you are using. As this feature is still in its infancy, feedback is welcome.
 +{{% /warning %}}
 +
 +## Learn Markdown
 +
 +Markdown syntax is simple enough to learn in a single sitting. The following are excellent resources to get you up and running:
 +
 +* [Daring Fireball: Markdown, John Gruber (Creator of Markdown)][fireball]
 +* [Markdown Cheatsheet, Adam Pritchard][mdcheatsheet]
 +* [Markdown Tutorial (Interactive), Garen Torikian][mdtutorial]
 +
 +[`emojify` function]: /functions/emojify/
 +[ascii]: http://asciidoc.org/
 +[bfconfig]: /getting-started/configuration/#configuring-blackfriday-rendering
 +[blackfriday]: https://github.com/russross/blackfriday
 +[mmark]: https://github.com/miekg/mmark
 +[config]: /getting-started/configuration/
 +[developer tools]: /tools/
 +[emojis]: https://www.webpagefx.com/tools/emoji-cheat-sheet/
 +[fireball]: https://daringfireball.net/projects/markdown/
 +[gfmtasks]: https://guides.github.com/features/mastering-markdown/#syntax
 +[helperssource]: https://github.com/gohugoio/hugo/blob/77c60a3440806067109347d04eb5368b65ea0fe8/helpers/general.go#L65
 +[hl]: /tools/syntax-highlighting/
 +[hlsc]: /content-management/shortcodes/#highlight
 +[hugocss]: /css/style.css
 +[ietf]: https://tools.ietf.org/html/
 +[mathjaxdocs]: https://docs.mathjax.org/en/latest/
 +[mdcheatsheet]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
 +[mdtutorial]: http://www.markdowntutorial.com/
 +[Miek Gieben's website]: https://miek.nl/2016/March/05/mmark-syntax-document/
 +[mmark]: https://github.com/miekg/mmark
 +[mmarkgh]: https://github.com/miekg/mmark/wiki/Syntax
 +[org]: http://orgmode.org/
 +[Pygments]: http://pygments.org/
 +[rest]: http://docutils.sourceforge.net/rst.html
 +[sc]: /content-management/shortcodes/
 +[sct]: /templates/shortcode-templates/
index 104050cf3df6c06de3d7bf386e2e2cb965e61737,0000000000000000000000000000000000000000..070328670e6e1d16ceb7196ad8197a48ce409eaf
mode 100644,000000..100644
--- /dev/null
@@@ -1,198 -1,0 +1,198 @@@
- ```toml
 +---
 +title: Front Matter
 +linktitle:
 +description: Hugo allows you to add front matter in yaml, toml, or json to your content files.
 +date: 2017-01-09
 +publishdate: 2017-01-09
 +lastmod: 2017-02-24
 +categories: [content management]
 +#tags: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 30
 +weight: 30    #rem
 +draft: false
 +aliases: [/content/front-matter/]
 +toc: true
 +---
 +
 +**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.
 +
 +## Front Matter Formats
 +
 +Hugo supports three formats for front matter, each with their own identifying tokens.
 +
 +TOML
 +: identified by opening and closing `+++`.
 +
 +YAML
 +: identified by opening and closing `---`.
 +
 +JSON
 +: a single JSON object surrounded by '`{`' and '`}`', followed by a new line.
 +
 +### TOML Example
 +
- ```yaml
++```
 ++++
 +title = "spf13-vim 3.0 release and new website"
 +description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
 +tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ]
 +date = "2012-04-06"
 +categories = [
 +  "Development",
 +  "VIM"
 +]
 +slug = "spf13-vim-3-0-release-and-new-website"
 ++++
 +```
 +
 +### YAML Example
 +
- ```json
++```
 +---
 +title: "spf13-vim 3.0 release and new website"
 +description: "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
 +#tags: [ ".vimrc", "plugins", "spf13-vim", "vim" ]
 +lastmod: 2015-12-23
 +date: "2012-04-06"
 +categories:
 +  - "Development"
 +  - "VIM"
 +slug: "spf13-vim-3-0-release-and-new-website"
 +---
 +```
 +
 +### JSON Example
 +
- ```yaml
++```
 +{
 +    "title": "spf13-vim 3.0 release and new website",
 +    "description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
 +    "tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ],
 +    "date": "2012-04-06",
 +    "categories": [
 +        "Development",
 +        "VIM"
 +    ],
 +    "slug": "spf13-vim-3-0-release-and-new-website"
 +}
 +```
 +
 +## Front Matter Variables
 +
 +### Predefined
 +
 +There are a few predefined variables that Hugo is aware of. See [Page Variables][pagevars] for how to call many of these predefined variables in your templates.
 +
 +`aliases`
 +: an array of one or more aliases (e.g., old published paths of renamed content) that will be created in the output directory structure . See [Aliases][aliases] for details.
 +
 +`date`
 +: the datetime at which the content was created; note this value is auto-populated according to Hugo's built-in [archetype][].
 +
 +`description`
 +: the description for the content.
 +
 +`draft`
 +: if `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command.
 +
 +`expiryDate`
 +: the datetime at which the content should no longer be published by Hugo; expired content will not be rendered unless the `--buildExpired` flag is passed to the `hugo` command.
 +
 +`isCJKLanguage`
 +: if `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages.
 +
 +`keywords`
 +: the meta keywords for the content.
 +
 +`layout`
 +: the layout Hugo should select from the [lookup order][lookup] when rendering the content. If a `type` is not specified in the front matter, Hugo will look for the layout of the same name in the layout directory that corresponds with a content's section. See ["Defining a Content Type"][definetype]
 +
 +`lastmod`
 +: the datetime at which the content was last modified.
 +
 +`linkTitle`
 +: used for creating links to content; if set, Hugo defaults to using the `linktitle` before the `title`. Hugo can also [order lists of content by `linktitle`][bylinktitle].
 +
 +`markup`
 +: **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
 +
 +`outputs`
 +: allows you to specify output formats specific to the content. See [output formats][outputs].
 +
 +`publishDate`
 +: if in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`.
 +
 +`slug`
 +: appears as the tail of the output URL. A value specified in front matter will override the segment of the URL based on the filename.
 +
 +`taxonomies`
 +: these will use the field name of the plural form of the index; see the `tags` and `categories` in the above front matter examples.
 +
 +`title`
 +: the title for the content.
 +
 +`type`
 +: the type of the content; this value will be automatically derived from the directory (i.e., the [section][]) if not specified in front matter.
 +
 +`url`
 +: the full path to the content from the web root. It makes no assumptions about the path of the content file. It also ignores any language prefixes of
 +the multilingual feature.
 +
 +`weight`
 +: used for [ordering your content in lists][ordering].
 +
 +{{% note "Hugo's Default URL Destinations" %}}
 +If neither `slug` nor `url` is present and [permalinks are not configured otherwise in your site `config` file](/content-management/urls/#permalinks), Hugo will use the filename of your content to create the output URL. See [Content Organization](/content-management/organization) for an explanation of paths in Hugo and [URL Management](/content-management/urls/) for ways to customize Hugo's default behaviors.
 +{{% /note %}}
 +
 +### User-Defined
 +
 +You can add fields to your front matter arbitrarily to meet your needs. These user-defined key-values are placed into a single `.Params` variable for use in your templates.
 +
 +The following fields can be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables][] section provides more information on using Hugo's page- and site-level variables in your templates.
 +
++```
 +include_toc: true
 +show_comments: false
 +```
 +
 +These two user-defined fields can then be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables][variables] section provides more information on using Hugo's page- and site-level variables in your templates.
 +
 +
 +## Order Content Through Front Matter
 +
 +You can assign content-specific `weight` in the front matter of your content. These values are especially useful for [ordering][ordering] in list views. You can use `weight` for ordering of content and the convention of [`<TAXONOMY>_weight`][taxweight] for ordering content within a taxonomy. See [Ordering and Grouping Hugo Lists][lists] to see how `weight` can be used to organize your content in list views.
 +
 +## Override Global Markdown Configuration
 +
 +It's possible to set some options for Markdown rendering in a content's front matter as an override to the [BlackFriday rendering options set in your project configuration][config].
 +
 +## Front Matter Format Specs
 +
 +* [TOML Spec][toml]
 +* [YAML Spec][yaml]
 +* [JSON Spec][json]
 +
 +[variables]: /variables/
 +[aliases]: /content-management/urls/#aliases/
 +[archetype]: /content-management/archetypes/
 +[bylinktitle]: /templates/lists/#by-link-title
 +[config]: /getting-started/configuration/ "Hugo documentation for site configuration"
 +[content type]: /content-management/types/
 +[contentorg]: /content-management/organization/
 +[definetype]: /content-management/types/#defining-a-content-type "Learn how to specify a type and a layout in a content's front matter"
 +[json]: /documents/ecma-404-json-spec.pdf "Specification for JSON, JavaScript Object Notation"
 +[lists]: /templates/lists/#ordering-content "See how to order content in list pages; for example, templates that look to specific _index.md for content and front matter."
 +[lookup]: /templates/lookup-order/ "Hugo traverses your templates in a specific order when rendering content to allow for DRYer templating."
 +[ordering]: /templates/lists/ "Hugo provides multiple ways to sort and order your content in list templates"
 +[outputs]: /templates/output-formats/ "With the release of v22, you can output your content to any text format using Hugo's familiar templating"
 +[pagevars]: /variables/page/
 +[section]: /content-management/sections/
 +[taxweight]: /content-management/taxonomies/
 +[toml]: https://github.com/toml-lang/toml "Specification for TOML, Tom's Obvious Minimal Language"
 +[urls]: /content-management/urls/
 +[variables]: /variables/
 +[yaml]: http://yaml.org/spec/ "Specification for YAML, YAML Ain't Markup Language"
index ddcf3002edb7d9120da48747b101ccad3b34c266,0000000000000000000000000000000000000000..7c877afc8b379217c542a5e4e1cfde18be0a0481
mode 100644,000000..100644
--- /dev/null
@@@ -1,183 -1,0 +1,179 @@@
- ```yaml
 +---
 +title: Menus
 +linktitle: Menus
 +description: Hugo has a simple yet powerful menu system.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-31
 +categories: [content management]
 +#tags: [menus]
 +draft: false
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 120
 +weight: 120   #rem
 +aliases: [/extras/menus/]
 +toc: true
 +---
 +
 +{{% note "Lazy Blogger"%}}
 +If all you want is a simple menu for your sections, see the ["Section Menu for Lazy Bloggers" in Menu Templates](/templates/menu-templates/#section-menu-for-lazy-blogger).
 +{{% /note %}}
 +
 +You can do this:
 +
 +* Place content in one or many menus
 +* Handle nested menus with unlimited depth
 +* Create menu entries without being attached to any content
 +* Distinguish active element (and active branch)
 +
 +## What is a Menu in Hugo?
 +
 +A **menu** is a named array of menu entries accessible by name via the [`.Site.Menus` site variable][sitevars]. For example, you can access your site's `main` menu via `.Site.Menus.main`.
 +
 +{{% note "Menus on Multilingual Sites" %}}
 +If you make use of the [multilingual feature](/content-management/multilingual/), you can define language-independent menus.
 +{{% /note %}}
 +
 +A menu entry has the following properties (i.e., variables) available to it:
 +
 +`.URL`
 +: string
 +
 +`.Name`
 +: string
 +
 +`.Menu`
 +: string
 +
 +`.Identifier`
 +: string
 +
 +`.Pre`
 +: template.HTML
 +
 +`.Post`
 +: template.HTML
 +
 +`.Weight`
 +: int
 +
 +`.Parent`
 +: string
 +
 +`.Children`
 +: Menu
 +
 +Note that menus also have the following functions available as well:
 +
 +`.HasChildren`
 +: boolean
 +
 +Additionally, there are some relevant functions available to menus on a page:
 +
 +`.IsMenuCurrent`
 +: (menu string, menuEntry *MenuEntry ) boolean
 +
 +`.HasMenuCurrent`
 +: (menu string, menuEntry *MenuEntry) boolean
 +
 +## Add content to menus
 +
 +Hugo allows you to add content to a menu via the content's [front matter](/content-management/front-matter/).
 +
 +### Simple
 +
 +If all you need to do is add an entry to a menu, the simple form works well.
 +
 +#### A Single Menu
 +
- ```yaml
++```
 +---
 +menu: "main"
 +---
 +```
 +
 +#### Multiple Menus
 +
- ```yaml
++```
 +---
 +menu: ["main", "footer"]
 +---
 +```
 +
 +#### Advanced
 +
 +
- {{% code file="config.toml" %}}
- ```toml
++```
 +---
 +menu:
 +  docs:
 +    parent: 'extras'
 +    weight: 20
 +---
 +```
 +
 +## Add Non-content Entries to a Menu
 +
 +You can also add entries to menus that aren’t attached to a piece of content. This takes place in your Hugo project's [`config` file][config].
 +
 +Here’s an example snippet pulled from a `config.toml`:
 +
- ```
- {{% /code %}}
++{{< code file="config.toml" >}}
 +[[menu.main]]
 +    name = "about hugo"
 +    pre = "<i class='fa fa-heart'></i>"
 +    weight = -110
 +    identifier = "about"
 +    url = "/about/"
 +[[menu.main]]
 +    name = "getting started"
 +    pre = "<i class='fa fa-road'></i>"
 +    weight = -100
 +    url = "/getting-started/"
- {{% code file="config.yml" %}}
- ```yaml
++{{< /code >}}
 +
 +Here's the equivalent snippet in a `config.yaml`:
 +
- ```
- {{% /code %}}
++{{< code file="config.yml" >}}
 +---
 +menu:
 +  docs:
 +      - Name: "about hugo"
 +        Pre: "<i class='fa fa-heart'></i>"
 +        Weight: -110
 +        Identifier: "about"
 +        URL: "/about/"
 +      - Name: "getting started"
 +        Pre: "<i class='fa fa-road'></i>"
 +        Weight: -100
 +        URL: "/getting-started/"
 +---
++{{< /code >}}
 +
 +{{% note %}}
 +The URLs must be relative to the context root. If the `baseURL` is `http://example.com/mysite/`, then the URLs in the menu must not include the context root `mysite`. Using an absolute URL will overide the baseURL. If the value used for `URL` in the above example is `http://subdomain.example.com/`, the output will be `http://subdomain.example.com`.
 +{{% /note %}}
 +
 +## Nesting
 + 
 +All nesting of content is done via the `parent` field.
 +
 +The parent of an entry should be the identifier of another entry. The identifier should be unique (within a menu).
 +
 +The following order is used to determine an Identifier:
 +
 +`.Name > .LinkTitle > .Title`
 +
 +This means that `.Title` will be used unless `.LinkTitle` is present, etc. In practice, `.Name` and `.Identifier` are only used to structure relationships and therefore never displayed.
 +
 +In this example, the top level of the menu is defined in your [site `config` file][config]). All content entries are attached to one of these entries via the `.Parent` field.
 +
 +## Render Menus
 +
 +See [Menu Templates](/templates/menu-templates/) for information on how to render your site menus within your templates.
 +
 +[config]: /getting-started/configuration/
 +[multilingual]: /content-management/multilingual/
 +[sitevars]: /variables/
index 58644640d960c8d13627b7d7bb81027c5e823b3f,0000000000000000000000000000000000000000..e3c65a26dfdafe5ec47387a490294c6c1a56cf6a
mode 100644,000000..100644
--- /dev/null
@@@ -1,300 -1,0 +1,294 @@@
- {{% code file="config.toml" download="config.toml" %}}
- ```toml
 +---
 +title: Multilingual Mode
 +linktitle: Multilingual and i18n
 +description: Hugo supports the creation of websites with multiple languages side by side.
 +date: 2017-01-10
 +publishdate: 2017-01-10
 +lastmod: 2017-01-10
 +categories: [content management]
 +#tags: [multilingual,i18n, internationalization]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 150
 +weight: 150   #rem
 +draft: false
 +aliases: [/content/multilingual/,/content-management/multilingual/]
 +toc: true
 +---
 +
 +You should define the available languages in a `Languages` section in your site configuration.
 +
 +## Configure Languages
 +
 +The following is an example of a TOML site configuration for a multilingual Hugo project:
 +
- ```
- {{% /code %}}
++{{< code file="config.toml" download="config.toml" >}}
 +DefaultContentLanguage = "en"
 +copyright = "Everything is mine"
 +
 +[params.navigation]
 +help  = "Help"
 +
 +[Languages]
 +[Languages.en]
 +title = "My blog"
 +weight = 1
 +[Languages.en.params]
 +linkedin = "english-link"
 +
 +[Languages.fr]
 +copyright = "Tout est à moi"
 +title = "Mon blog"
 +weight = 2
 +[Languages.fr.params]
 +linkedin = "lien-francais"
 +[Languages.fr.navigation]
 +help  = "Aide"
- {{% code file="bf-config.toml" %}}
- ```toml
++{{< /code >}}
 +
 +Anything not defined in a `[Languages]` block will fall back to the global
 +value for that key (e.g., `copyright` for the English [`en`] language).
 +
 +With the configuration above, all content, sitemap, RSS feeds, paginations,
 +and taxonomy pages will be rendered below `/` in English (your default content language) and then below `/fr` in French.
 +
 +When working with front matter `Params` in [single page templates][singles], omit the `params` in the key for the translation.
 +
 +If you want all of the languages to be put below their respective language code, enable `defaultContentLanguageInSubdir: true`.
 +
 +Only the obvious non-global options can be overridden per language. Examples of global options are `baseURL`, `buildDrafts`, etc.
 +
 +## Taxonomies and Blackfriday
 +
 +Taxonomies and [Blackfriday configuration][config] can also be set per language:
 +
 +
- ```
- {{% /code %}}
++{{< code file="bf-config.toml" >}}
 +[Taxonomies]
 +tag = "tags"
 +
 +[blackfriday]
 +angledQuotes = true
 +hrefTargetBlank = true
 +
 +[Languages]
 +[Languages.en]
 +weight = 1
 +title = "English"
 +[Languages.en.blackfriday]
 +angledQuotes = false
 +
 +[Languages.fr]
 +weight = 2
 +title = "Français"
 +[Languages.fr.Taxonomies]
 +plaque = "plaques"
- ```yaml
++{{< /code >}}
 +
 +## Translate Your Content
 +
 +Translated articles are identified by the name of the content file.
 +
 +### Examples of Translated Articles
 +
 +1. `/content/about.en.md`
 +2. `/content/about.fr.md`
 +
 +In this eample, the `about.md` will be assigned the configured `defaultContentLanguage`. 
 +
 +1. `/content/about.md`
 +2. `/content/about.fr.md`
 +
 +This way, you can slowly start to translate your current content without having to rename everything. If left unspecified, the default value for `defaultContentLanguage` is `en`.
 +
 +By having the same *base filename*, the content pieces are linked together as translated pieces.
 +
 +If you need distinct URLs per language, you can set the slug in the non-default language file. For example, you can define a custom slug for a French translation in the front matter of `content/about.fr.md` as follows:
 +
- {{% code file="layouts/partials/i18nlist.html" %}}
- ```html
++```
 +slug: "a-propos"
 +
 +```
 +
 +At render, Hugo will build both `/about/` and `/a-propos/` as properly linked translated pages.
 +
 +{{%note %}}
 +Hugo currently uses the base filename as the translation key, which can be an issue with identical filenames in different sections.
 +We will fix this in https://github.com/gohugoio/hugo/issues/2699
 +{{% /note %}}
 +{{< todo >}}Rewrite/remove the above one issue is fixed.{{< /todo >}}
 +
 +## Link to Translated Content
 +
 +To create a list of links to translated content, use a template similar to the following:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/i18nlist.html" >}}
 +{{ if .IsTranslated }}
 +<h4>{{ i18n "translations" }}</h4>
 +<ul>
 +    {{ range .Translations }}
 +    <li>
 +        <a href="{{ .Permalink }}">{{ .Lang }}: {{ .Title }}{{ if .IsPage }} ({{ i18n "wordCount" . }}){{ end }}</a>
 +    </li>
 +    {{ end}}
 +</ul>
 +{{ end }}
- ```bash
++{{< /code >}}
 +
 +The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template, be it for a [single content page][contenttemplate] or the [homepage][]. It will not print anything if there are no translations for a given page, or if there are translations---in the case of the homepage, section listing, etc.---a site with only render one language.
 +
 +The above also uses the [`i18n` function][i18func] described in the next section.
 +
 +## Translation of Strings
 +
 +Hugo uses [go-i18n][] to support string translations. [See the project's source repository][go-i18n-source] to find tools that will help you manage your translation workflows.
 +
 +Translations are collected from the `themes/<THEME>/i18n/` folder (built into the theme), as well as translations present in `i18n/` at the root of your project. In the `i18n`, the translations will be merged and take precedence over what is in the theme folder. Language files should be named according to [RFC 5646][] with names such as `en-US.toml`, `fr.toml`, etc.
 +
 +From within your templates, use the `i18n` function like this:
 +
 +```
 +{{ i18n "home" }}
 +```
 +
 +This uses a definition like this one in `i18n/en-US.toml`:
 +
 +```
 +[home]
 +other = "Home"
 +```
 +
 +Often you will want to use to the page variables in the translations strings. To do that, pass on the "." context when calling `i18n`:
 +
 +```
 +{{ i18n "wordCount" . }}
 +```
 +
 +This uses a definition like this one in `i18n/en-US.toml`:
 +
 +```
 +[wordCount]
 +other = "This article has {{ .WordCount }} words."
 +```
 +An example of singular and plural form:
 +
 +```
 +[readingTime]
 +one = "One minute read"
 +other = "{{.Count}} minutes read"
 +```
 +And then in the template:
 +
 +```
 +{{ i18n "readingTime" .ReadingTime }}
 +```
 +To track down missing translation strings, run Hugo with the `--i18n-warnings` flag:
 +
- ```toml
++```
 + hugo --i18n-warnings | grep i18n
 +i18n|MISSING_TRANSLATION|en|wordCount
 +```
 +
 +## Customize Dates
 +
 +At the time of this writing, Golang does not yet have support for internationalized locales, but if you do some work, you can simulate it. For example, if you want to use French month names, you can add a data file like ``data/mois.yaml`` with this content:
 +
 +~~~yaml
 +1: "janvier"
 +2: "février"
 +3: "mars"
 +4: "avril"
 +5: "mai"
 +6: "juin"
 +7: "juillet"
 +8: "août"
 +9: "septembre"
 +10: "octobre"
 +11: "novembre"
 +12: "décembre"
 +~~~
 +
 +... then index the non-English date names in your templates like so:
 +
 +~~~html
 +<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
 +  Article publié le {{ .Date.Day }} {{ index $.Site.Data.mois (printf "%d" .Date.Month) }} {{ .Date.Year }} (dernière modification le {{ .Lastmod.Day }} {{ index $.Site.Data.mois (printf "%d" .Lastmod.Month) }} {{ .Lastmod.Year }})
 +</time>
 +~~~
 +
 +This technique extracts the day, month and year by specifying ``.Date.Day``, ``.Date.Month``, and ``.Date.Year``, and uses the month number as a key, when indexing the month name data file.
 +
 +## Menus
 +
 +You can define your menus for each language independently. The [creation of a menu][menus] works analogous to earlier versions of Hugo, except that they have to be defined in their language-specific block in the configuration file:
 +
- ```html
++```
 +defaultContentLanguage = "en"
 +
 +[languages.en]
 +weight = 0
 +languageName = "English"
 +
 +[[languages.en.menu.main]]
 +url    = "/"
 +name   = "Home"
 +weight = 0
 +
 +
 +[languages.de]
 +weight = 10
 +languageName = "Deutsch"
 +
 +[[languages.de.menu.main]]
 +url    = "/"
 +name   = "Startseite"
 +weight = 0
 +```
 +
 +The rendering of the main navigation works as usual. `.Site.Menus` will just contain the menu of the current language. Pay attention to the generation of the menu links. `absLangURL` takes care that you link to the correct locale of your website. Otherwise, both menu entries would link to the English version as the default content language that resides in the root directory.
 +
++```
 +<ul>
 +    {{- $currentPage := . -}}
 +    {{ range .Site.Menus.main -}}
 +    <li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
 +        <a href="{{ .URL | absLangURL }}">{{ .Name }}</a>
 +    </li>
 +    {{- end }}
 +</ul>
 +
 +```
 +
 +## Missing translations
 +
 +If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown.
 +
 +While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
 +
 +{{% note %}}
 +Hugo will generate your website with these missing translation placeholders. It might not be suited for production environments.
 +{{% /note %}}
 +
 +## Multilingual Themes support
 +
 +To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria:
 +
 +* Come from the built-in `.Permalink` or `.URL`
 +* Be constructed with
 +    * The [`relLangURL` template function][rellangurl] or the [`absLangURL` template function][abslangurl] **OR**
 +    * Prefixed with `{{ .LanguagePrefix }}`
 +
 +If there is more than one language defined, the `LanguagePrefix` variable will equal `/en` (or whatever your `CurrentLanguage` is). If not enabled, it will be an empty string and is therefore harmless for single-language Hugo websites.
 +
 +[abslangurl]: /functions/abslangurl
 +[config]: /getting-started/configuration/
 +[contenttemplate]: /templates/single-page-templates/
 +[go-i18n-source]: https://github.com/nicksnyder/go-i18n
 +[go-i18n]: https://github.com/nicksnyder/go-i18n
 +[homepage]: /templates/homepage/
 +[i18func]: /functions/i18n/
 +[menus]: /content-management/menus/
 +[rellangurl]: /functions/rellangurl
 +[RFC 5646]: https://tools.ietf.org/html/rfc5646
 +[singles]: /templates/single-page-templates/
index 2f6e20740c02a4c882b7e81051c3ce3bb90a94e5,0000000000000000000000000000000000000000..33780c0ebdf44371dadeace7f94b96c98e4f40ec
mode 100644,000000..100644
--- /dev/null
@@@ -1,247 -1,0 +1,241 @@@
-     |   └── _index.md  // <- http://yoursite.com/about/
 +---
 +title: Content Organization
 +linktitle: Organization
 +description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [content management,fundamentals]
 +#tags: [sections,content,organization]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 10
 +weight: 10    #rem
 +draft: false
 +aliases: [/content/sections/]
 +toc: true
 +---
 +
 +{{% note %}}
 +This section is not updated with the new nested sections support in Hugo 0.24, see https://github.com/gohugoio/hugoDocs/issues/36
 +{{% /note %}}
 +{{% todo %}}
 +See above
 +{{% /todo %}}
 +
 +## Organization of Content Source
 +
 +In Hugo, your content should be organized in a manner that reflects the rendered website.
 +
 +While Hugo supports content nested at any level, the top levels (i.e. `content/<DIRECTORIES>`) are special in Hugo and are considered the content [sections][]. Without any additional configuration, the following will just work:
 +
 +```
 +.
 +└── content
 +    └── about
-     |   ├── firstpost.md   // <- http://yoursite.com/post/firstpost/
++    |   └── _index.md  // <- http://example.com/about/
 +    ├── post
-     |   |   └── ness.md  // <- http://yoursite.com/post/happy/ness/
-     |   └── secondpost.md  // <- http://yoursite.com/post/secondpost/
++    |   ├── firstpost.md   // <- http://example.com/post/firstpost/
 +    |   ├── happy
-         ├── first.md       // <- http://yoursite.com/quote/first/
-         └── second.md      // <- http://yoursite.com/quote/second/
++    |   |   └── ness.md  // <- http://example.com/post/happy/ness/
++    |   └── secondpost.md  // <- http://example.com/post/secondpost/
 +    └── quote
- The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseurl = "http://yoursite.com"` in your [site's configuration file][config].
++        ├── first.md       // <- http://example.com/quote/first/
++        └── second.md      // <- http://example.com/quote/second/
 +```
 +
 +## Path Breakdown in Hugo
 +
- ```bash
++The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseurl = "http://example.com"` in your [site's configuration file][config].
 +
 +### Index Pages: `_index.md`
 +
 +`_index.md` has a special role in Hugo. It allows you to add front matter and content to your [list templates][lists] as of v0.18. These templates include those for [section templates][], [taxonomy templates][], [taxonomy terms templates][], and your [homepage template][]. In your templates, you can grab information from `_index.md` using the [`.Site.GetPage` function][getpage].
 +
 +You can keep one `_index.md` for your homepage and one in each of your content sections, taxonomies, and taxonomy terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
 +
 +
- ```bash
++```
 +.         url
 +.       ⊢--^-⊣
 +.        path    slug
 +.       ⊢--^-⊣⊢---^---⊣
 +.           filepath
 +.       ⊢------^------⊣
 +content/posts/_index.md
 +```
 +
 +At build, this will output to the following destination with the associated values:
 +
- http://yoursite.com/posts/index.html
++```
 +
 +                     url ("/posts/")
 +                    ⊢-^-⊣
 +       baseurl      section ("posts")
 +⊢--------^---------⊣⊢-^-⊣
 +        permalink
 +⊢----------^-------------⊣
- ```bash
++http://example.com/posts/index.html
 +```
 +
 +### Single Pages in Sections
 +
 +Single content files in each of your sections are going to be rendered as [single page templates][singles]. Here is an example of a single `post` within `posts`:
 +
 +
- ```bash
++```
 +                   path ("posts/my-first-hugo-post.md")
 +.       ⊢-----------^------------⊣
 +.      section        slug
 +.       ⊢-^-⊣⊢--------^----------⊣
 +content/posts/my-first-hugo-post.md
 +```
 +
 +At the time Hugo builds your site, the content will be output to the following destination:
 +
- http://yoursite.com/posts/my-first-hugo-post/index.html
++```
 +
 +                               url ("/posts/my-first-hugo-post/")
 +                   ⊢------------^----------⊣
 +       baseurl     section     slug
 +⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣
 +                 permalink
 +⊢--------------------^---------------------⊣
- ```bash
++http://example.com/posts/my-first-hugo-post/index.html
 +```
 +
 +### Section with Nested Directories
 +
 +To continue the example, the following demonstrates destination paths for a file located at `content/events/chicago/lollapalooza.md` in the same site:
 +
 +
- http://yoursite.com/events/chicago/lollapalooza/
++```
 +                    section
 +                    ⊢--^--⊣
 +                               url
 +                    ⊢-------------^------------⊣
 +
 +      baseURL             path        slug
 +⊢--------^--------⊣ ⊢------^-----⊣⊢----^------⊣
 +                  permalink
 +⊢----------------------^-----------------------⊣
- This isn't in the front matter, but is the actual name of the file minus the extension. This will be the name of the file in the destination (e.g., `content/posts/my-post.md` becomes `yoursite.com/posts/my-post/`).
++http://example.com/events/chicago/lollapalooza/
 +```
 +
 +{{% note %}}
 +As of v0.20, Hugo does not recognize nested sections. While you can nest as many content *directories* as you'd like, any child directory of a section will still be considered the same section as that of its parents. Therefore, in the above example, `{{.Section}}` for `lollapalooza.md` is `events` and *not* `chicago`. See the [related issue on GitHub](https://github.com/gohugoio/hugo/issues/465).
 +{{% /note %}}
 +
 +## Paths Explained
 +
 +The following concepts will provide more insight into the relationship between your project's organization and the default behaviors of Hugo when building the output website.
 +
 +### `section`
 +
 +A default content type is determined by a piece of content's section. `section` is determined by the location within the project's `content` directory. `section` *cannot* be specified or overridden in front matter.
 +
 +### `slug`
 +
 +A content's `slug` is either `name.extension` or `name/`. The value for `slug` is determined by
 +
 +* the name of the content file (e.g., `lollapalooza.md`) OR
 +* front matter overrides
 +
 +### `path`
 +
 +A content's `path` is determined by the section's path to the file. The file `path`
 +
 +* is based on the path to the content's location AND
 +* does not include the slug
 +
 +### `url`
 +
 +The `url` is the relative URL for the piece of content. The `url`
 +
 +* is based on the content's location within the directory structure OR
 +* is defined in front matter and *overrides all the above*
 +
 +## Override Destination Paths via Front Matter
 +
 +Hugo believes that you organize your content with a purpose. The same structure that works to organize your source content is used to organize the rendered site. As displayed above, the organization of the source content will be mirrored in the destination.
 +
 +There are times where you may need more control over your content. In these cases, there are fields that can be specified in the front matter to determine the destination of a specific piece of content.
 +
 +The following items are defined in this order for a specific reason: items explained further down in the list will override earlier items, and not all of these items can be defined in front matter:
 +
 +### `filename`
 +
- {{% code file="content/posts/old-post.md" %}}
- ```yaml
++This isn't in the front matter, but is the actual name of the file minus the extension. This will be the name of the file in the destination (e.g., `content/posts/my-post.md` becomes `example.com/posts/my-post/`).
 +
 +### `slug`
 +
 +When defined in the front matter, the `slug` can take the place of the filename for the destination.
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/old-post.md" >}}
 +---
 +title: New Post
 +slug: "new-post"
 +---
- yoursite.com/posts/new-post/
++{{< /code >}}
 +
 +This will render to the following destination according to Hugo's default behavior:
 +
 +```
- {{% code file="content/posts/my-post.md" %}}
- ```yaml
++example.com/posts/new-post/
 +```
 +
 +### `section`
 +
 +`section` is determined by a content's location on disk and *cannot* be specified in the front matter. See [sections][] for more information.
 +
 +### `type`
 +
 +A content's `type` is also determined by its location on disk but, unlike `section`, it *can* be specified in the front matter. See [types][]. This can come in especially handy when you want a piece of content to render using a different layout. In the following example, you can create a layout at `layouts/new/mylayout.html` that Hugo will use to render this piece of content, even in the midst of many other posts.
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/my-post.md" >}}
 +---
 +title: My Post
 +type: new
 +layout: mylayout
 +---
- {{% code file="content/posts/old-url.md" %}}
- ```yaml
++{{< /code >}}
 +<!-- See https://discourse.gohugo.io/t/path-not-works/6387 -->
 +<!-- ### `path`
 +
 +`path` can be provided in the front matter. This will replace the actual path to the file on disk. Destination will create the destination with the same path, including the section. -->
 +
 +### `url`
 +
 +A complete URL can be provided. This will override all the above as it pertains to the end destination. This must be the path from the baseURL (starting with a `/`). `url` will be used exactly as it provided in the front matter and will ignore the `--uglyURLs` setting in your site configuration:
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/old-url.md" >}}
 +---
 +title: Old URL
 +url: /blog/new-url/
 +---
- Assuming your `baseURL` is [configured][config] to `https://yoursite.com`, the addition of `url` to the front matter will make `old-url.md` render to the following destination:
++{{< /code >}}
 +
- https://yoursite.com/blog/new-url/
++Assuming your `baseURL` is [configured][config] to `https://example.com`, the addition of `url` to the front matter will make `old-url.md` render to the following destination:
 +
 +```
++https://example.com/blog/new-url/
 +```
 +
 +You can see more information on how to control output paths in [URL Management][urls].
 +
 +[config]: /getting-started/configuration/
 +[formats]: /content-management/formats/
 +[front matter]: /content-management/front-matter/
 +[getpage]: /functions/getpage/
 +[homepage template]: /templates/homepage/
 +[homepage]: /templates/homepage/
 +[lists]: /templates/lists/
 +[pretty]: /content-management/urls/#pretty-urls
 +[section templates]: /templates/section-templates/
 +[sections]: /content-management/sections/
 +[singles]: /templates/single-page-templates/
 +[taxonomy templates]: /templates/taxonomy-templates/
 +[taxonomy terms templates]: /templates/taxonomy-templates/
 +[types]: /content-management/types/
 +[urls]: /content-management/urls/
index b7d95d011d9cd8b60497a932f1431cdd2478358e,0000000000000000000000000000000000000000..dcb0025d16d487edda07745451d7f9b3441821ae
mode 100644,000000..100644
--- /dev/null
@@@ -1,73 -1,0 +1,73 @@@
- ```bash
 +---
 +title: Content Sections
 +linktitle: Sections
 +description: Hugo supports content sections, which according to Hugo's default behavior, will reflect the structure of the rendered website.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [content management]
 +#tags: [lists,sections,content types,organization]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 50
 +weight: 50    #rem
 +draft: false
 +aliases: [/content/sections/]
 +toc: true
 +---
 +
 +{{% note %}}
 +This section is not updated with the new nested sections support in Hugo 0.24, see https://github.com/gohugoio/hugoDocs/issues/36
 +{{% /note %}}
 +{{% todo %}}
 +See above
 +{{% /todo %}}
 +
 +Hugo believes that you organize your content with a purpose. The same structure that works to organize your source content is used to organize the rendered site (see [directory structure][]).
 +
 +Following this pattern, Hugo uses the top level of your content organization as the content **section**.
 +
 +The following example shows a content directory structure for a website that has three sections: "authors," "events," and "posts":
 +
-     |   ├── _index.md     // <- yoursite.com/authors/
-     |   ├── john-doe.md   // <- yoursite.com/authors/john-doe/
-     |   └── jane-doe.md   // <- yoursite.com/authors/jane-doe/
++```
 +.
 +└── content
 +    ├── authors
-     |   ├── _index.md     // <- yoursite.com/events/
-     |   ├── event-1.md    // <- yoursite.com/events/event-1/
-     |   ├── event-2.md    // <- yoursite.com/events/event-2/
-     |   └── event-3.md    // <- yoursite.com/events/event-3/
++    |   ├── _index.md     // <- example.com/authors/
++    |   ├── john-doe.md   // <- example.com/authors/john-doe/
++    |   └── jane-doe.md   // <- example.com/authors/jane-doe/
 +    └── events
-     |   ├── _index.md     // <- yoursite.com/posts/
-     |   ├── event-1.md    // <- yoursite.com/posts/event-1/
-     |   ├── event-2.md    // <- yoursite.com/posts/event-2/
-     |   ├── event-3.md    // <- yoursite.com/posts/event-3/
-     |   ├── event-4.md    // <- yoursite.com/posts/event-4/
-     |   └── event-5.md    // <- yoursite.com/posts/event-5/
++    |   ├── _index.md     // <- example.com/events/
++    |   ├── event-1.md    // <- example.com/events/event-1/
++    |   ├── event-2.md    // <- example.com/events/event-2/
++    |   └── event-3.md    // <- example.com/events/event-3/
 +    └── posts
++    |   ├── _index.md     // <- example.com/posts/
++    |   ├── event-1.md    // <- example.com/posts/event-1/
++    |   ├── event-2.md    // <- example.com/posts/event-2/
++    |   ├── event-3.md    // <- example.com/posts/event-3/
++    |   ├── event-4.md    // <- example.com/posts/event-4/
++    |   └── event-5.md    // <- example.com/posts/event-5/
 +```
 +
 +## Content Section Lists
 +
 +Hugo will automatically create pages for each section root that list all of the content in that section. See the documentation on [section templates][] for details on customizing the way these pages are rendered.
 +
 +As of Hugo v0.18, section pages can also have a content file and front matter. These section content files must be placed in their corresponding section folder and named `_index.md` in order for Hugo to correctly render the front matter and content.
 +
 +{{% warning "`index.md` vs `_index.md`" %}}
 +Hugo themes developed before v0.18 often used an `index.md`(i.e., without the leading underscore [`_`]) in a content section as a hack to emulate the behavior of `_index.md`. The hack may work...*sometimes*; however, the order of page rendering can be unpredictable in Hugo. What works now may fail to render appropriately as your site grows. It is **strongly advised** to use `_index.md` as content for your section index pages. **Note:** `_index.md`'s layout, as representative of a section, is a [list page template](/templates/section-templates/) and *not* a [single page template](/templates/single-page-templates/). If you want to alter the new default behavior for `_index.md`, configure `disableKinds` accordingly in your [site's configuration](/getting-started/configuration/).
 +{{% /warning %}}
 +
 +## Content *Section* vs Content *Type*
 +
 +By default, everything created within a section will use the [content type][] that matches the section name. For example, Hugo will assume that `posts/post-1.md` has a `posts` content type. If you are using an [archetype][] for your posts section, Hugo will generate front matter according to what it finds in `archetypes/posts.md`.
 +
 +[archetype]: /content-management/archetypes/
 +[content type]: /content-management/types/
 +[directory structure]: /getting-started/directory-structure/
 +[section templates]: /templates/section-templates/
 +
 +
index 2b4467ff875847a7a2c4b9d178fc48a0f806f2a9,0000000000000000000000000000000000000000..3482d6722bcb1feaadbcc910fa25efabb7a3390f
mode 100644,000000..100644
--- /dev/null
@@@ -1,431 -1,0 +1,409 @@@
- ```md
 +---
 +title: Shortcodes
 +linktitle:
 +description: Shortcodes are simple snippets inside your content files calling built-in or custom templates.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-31
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 35
 +weight: 35    #rem
 +categories: [content management]
 +#tags: [markdown,content,shortcodes]
 +draft: false
 +aliases: [/extras/shortcodes/]
 +toc: true
 +---
 +
 +## What a Shortcode is
 +
 +Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video `<iframes>`) to Markdown content. We think this contradicts the beautiful simplicity of Markdown's syntax.
 +
 +Hugo created **shortcodes** to circumvent these limitations.
 +
 +A shortcode is a simple snippet inside a content file that Hugo will render using a predefined template. Note that shortcodes will not work in template files. If you need the type of drop-in functionality that shortcodes provide but in a template, you most likely want a [partial template][partials] instead.
 +
 +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
 +
 +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.
 +
 +The first word in the shortcode declaration is always the name of the shortcode. Parameters follow the name. Depending upon how the shortcode is defined, the parameters may be named, positional, or both, although you can't mix parameter types in a single call. The format for named parameters models that of HTML with the format `name="value"`.
 +
 +Some shortcodes use or require closing shortcodes. Again like HTML, the opening and closing shortcodes match (name only) with the closing declaration, which is prepended with a slash.
 +
 +Here are two examples of paired shortcodes:
 +
- ```md
++```
 +{{%/* mdshortcode */%}}Stuff to `process` in the *center*.{{%/* /mdshortcode */%}}
 +```
 +
- ```md
++```
 +{{</* highlight go */>}} A bunch of code here {{</* /highlight */>}}
 +```
 +
 +The examples above use two different delimiters, the difference being the `%` character in the first and the `<>` characters in the second.
 +
 +### Shortcodes with Markdown
 +
 +The `%` character indicates that the shortcode's inner content---called in the [shortcode template][sctemps] with the [`.Inner` variable][scvars]---needs further processing by the page's rendering processor (i.e. markdown via Blackfriday). In the following example, Blackfriday would convert `**World**` to `<strong>World</strong>`:
 +
- ```md
++```
 +{{%/* myshortcode */%}}Hello **World!**{{%/* /myshortcode */%}}
 +```
 +
 +### Shortcodes Without Markdown
 +
 +The `<` character indicates that the shortcode's inner content does *not* need further rendering. Often shortcodes without markdown include internal HTML:
 +
- {{% code file="figure-input-example.md" %}}
- ```markdown
++```
 +{{</* myshortcode */>}}<p>Hello <strong>World!</strong></p>{{</* /myshortcode */>}}
 +```
 +
 +### Nested Shortcodes
 +
 +You can call shortcodes within other shortcodes by creating your own templates that leverage the `.Parent` variable. `.Parent` allows you to check the context in which the shortcode is being called. See [Shortcode templates][sctemps].
 +
 +## Use Hugo's Built-in Shortcodes
 +
 +Hugo ships with a set of predefined shortcodes that represent very common usage. These shortcodes are provided for author convenience and to keep your markdown content clean.
 +
 +### `figure`
 +
 +`figure` is an extension of the image syntax in markdown, which does not provide a shorthand for the more semantic [HTML5 `<figure>` element][figureelement].
 +
 +The `figure` shortcode can use the following named parameters:
 +
 +* `src`
 +* `link`
 +* `title`
 +* `caption`
 +* `class`
 +* `attr` (i.e., attribution)
 +* `attrlink`
 +* `alt`
 +
 +#### Example `figure` Input
 +
- ```
- {{% /code %}}
++{{< code file="figure-input-example.md" >}}
 +{{</* figure src="/media/spf13.jpg" title="Steve Francia" */>}}
- ```html
++{{< /code >}}
 +
 +#### Example `figure` Output
 +
 +{{% output file="figure-output-example.html" %}}
- ```html
++```
 +<figure>
 +  <img src="/media/spf13.jpg"  />
 +  <figcaption>
 +      <h4>Steve Francia</h4>
 +  </figcaption>
 +</figure>
 +```
 +{{% /output %}}
 +
 +### `gist`
 +
 +Bloggers often want to include GitHub gists when writing posts. Let's suppose we want to use the [gist at the following url][examplegist]:
 +
- ```md
++```
 +https://gist.github.com/spf13/7896402
 +```
 +
 +We can embed the gist in our content via username and gist ID pulled from the URL:
 +
- {{% code file="gist-input.md" %}}
- ```md
++```
 +{{</* gist spf13 7896402 */>}}
 +```
 +
 +#### Example `gist` Input
 +
 +If the gist contains several files and you want to quote just one of them, you can pass the filename (quoted) as an optional third argument:
 +
- ```
- {{% /code %}}
++{{< code file="gist-input.md" >}}
 +{{</* gist spf13 7896402 "img.html" */>}}
- ```html
++{{< /code >}}
 +
 +#### Example `gist` Output
 +
 +{{% output file="gist-output.html" %}}
- {{% code file="content/tutorials/learn-html.md" %}}
- ```html
++```
 +{{< gist spf13 7896402 >}}
 +```
 +{{% /output %}}
 +
 +#### Example `gist` Display
 +
 +To demonstrate the remarkably efficiency of Hugo's shortcode feature, we have embedded the `spf13` `gist` example in this page. The following simulates the experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
 +
 +{{< gist spf13 7896402 >}}
 +
 +### `highlight`
 +
 +This shortcode will convert the source code provided into syntax-highlighted HTML. Read more on [highlighting](/tools/syntax-highlighting/). `highlight` takes exactly one required `language` parameter and requires a closing shortcode.
 +
 +#### Example `highlight` Input
 +
- ```
- {{% /code %}}
++{{< code file="content/tutorials/learn-html.md" >}}
 +{{</* highlight html */>}}
 +<section id="main">
 +  <div>
 +   <h1 id="title">{{ .Title }}</h1>
 +    {{ range .Data.Pages }}
 +        {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</section>
 +{{</* /highlight */>}}
- ```html
++{{< /code >}}
 +
 +#### Example `highlight` Output
 +
 +The `highlight` shortcode example above would produce the following HTML when the site is rendered:
 +
 +{{% output file="tutorials/learn-html/index.html" %}}
- ```html
++```
 +<span style="color: #f92672">&lt;section</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;main&quot;</span><span style="color: #f92672">&gt;</span>
 +  <span style="color: #f92672">&lt;div&gt;</span>
 +   <span style="color: #f92672">&lt;h1</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;title&quot;</span><span style="color: #f92672">&gt;</span>{{ .Title }}<span style="color: #f92672">&lt;/h1&gt;</span>
 +    {{ range .Data.Pages }}
 +        {{ .Render &quot;summary&quot;}}
 +    {{ end }}
 +  <span style="color: #f92672">&lt;/div&gt;</span>
 +<span style="color: #f92672">&lt;/section&gt;</span>
 +```
 +{{% /output %}}
 +
 +{{% note "More on Syntax Highlighting" %}}
 +To see even more options for adding syntax-highlighted code blocks to your website, see [Syntax Highlighting in Developer Tools](/tools/syntax-highlighting/).
 +{{% /note %}}
 +
 +### `instagram`
 +
 +If you'd like to embed a photo from [Instagram][], you only need the photo's ID. You can discern an Instagram photo ID from the URL:
 +
- {{% code file="instagram-input.md" %}}
- ```md
++```
 +https://www.instagram.com/p/BWNjjyYFxVx/
 +```
 +
 +#### Example `instagram` Input
 +
- ```
- {{% /code %}}
++{{< code file="instagram-input.md" >}}
 +{{</* instagram BWNjjyYFxVx */>}}
- {{% code file="instagram-input-hide-caption.md" %}}
- ```md
++{{< /code >}}
 +
 +You also have the option to hide the caption:
 +
- ```
- {{% /code %}}
++{{< code file="instagram-input-hide-caption.md" >}}
 +{{</* instagram BWNjjyYFxVx hidecaption */>}}
- ```html
++{{< /code >}}
 +
 +#### Example `instagram` Output
 +
 +By adding the preceding `hidecaption` example, the following HTML will be added to your rendered website's markup:
 +
 +{{% output file="instagram-hide-caption-output.html" %}}
- ```md
++```
 +{{< instagram BWNjjyYFxVx hidecaption >}}
 +```
 +{{% /output %}}
 +
 +#### Example `instagram` Display
 +
 +Using the preceding `instagram` with hidecaption` example above, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
 +
 +{{< instagram BWNjjyYFxVx hidecaption >}}
 +
 +
 +### `ref` and `relref`
 +
 +These shortcodes will look up the pages by their relative path (e.g., `blog/post.md`) or their logical name (`post.md`) and return the permalink (`ref`) or relative permalink (`relref`) for the found page.
 +
 +`ref` and `relref` also make it possible to make fragmentary links that work for the header links generated by Hugo.
 +
 +{{% note "More on Cross References" %}}
 +Read a more extensive description of `ref` and `relref` in the [cross references](/content-management/cross-references/) documentation.
 +{{% /note %}}
 +
 +`ref` and `relref` take exactly one required parameter of _reference_, quoted and in position `0`.
 +
 +#### Example `ref` and `relref` Input
 +
- ```html
++```
 +[Neat]({{</* ref "blog/neat.md" */>}})
 +[Who]({{</* relref "about.md#who" */>}})
 +```
 +
 +#### Example `ref` and `relref` Output
 +
 +Assuming that standard Hugo pretty URLs are turned on.
 +
- ```html
++```
 +<a href="/blog/neat">Neat</a>
 +<a href="/about/#who:c28654c202e73453784cfd2c5ab356c0">Who</a>
 +```
 +
 +### `speakerdeck`
 +
 +To embed slides from [Speaker Deck][], click on "&lt;&#8239;/&gt;&nbsp;Embed" (under Share right next to the template on Speaker Deck) and copy the URL:
 +
- {{% code file="speakerdeck-example-input.md" %}}
- ```md
++```
 +<script async class="speakerdeck-embed" data-id="4e8126e72d853c0060001f97" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
 +```
 +
 +#### `speakerdeck` Example Input
 +
 +Extract the value from the field `data-id` and pass it to the shortcode:
 +
- ```
- {{% /code %}}
++{{< code file="speakerdeck-example-input.md" >}}
 +{{</* speakerdeck 4e8126e72d853c0060001f97 */>}}
- ```html
++{{< /code >}}
 +
 +#### `speakerdeck` Example Output
 +
 +{{% output file="speakerdeck-example-input.md" %}}
- {{% code file="example-tweet-input.md" %}}
- ```md
++```
 +{{< speakerdeck 4e8126e72d853c0060001f97 >}}
 +```
 +{{% /output %}}
 +
 +#### `speakerdeck` Example Display
 +
 +For the preceding `speakerdeck` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
 +
 +{{< speakerdeck 4e8126e72d853c0060001f97 >}}
 +
 +### `tweet`
 +
 +You want to include a single tweet into your blog post? Everything you need is the URL of the tweet:
 +
 +```
 +https://twitter.com/spf13/status/877500564405444608
 +```
 +
 +#### Example `tweet` Input
 +
 +Pass the tweet's ID from the URL as a parameter to the `tweet` shortcode:
 +
- ```
- {{% /code %}}
++{{< code file="example-tweet-input.md" >}}
 +{{</* tweet 877500564405444608 */>}}
- ```html
++{{< /code >}}
 +
 +#### Example `tweet` Output
 +
 +Using the preceding `tweet` example, the following HTML will be added to your rendered website's markup:
 +
 +{{% output file="example-tweet-output.html" %}}
- {{% code file="example-vimeo-input.md" %}}
- ```md
++```
 +{{< tweet 877500564405444608 >}}
 +```
 +{{% /output %}}
 +
 +#### Example `tweet` Display
 +
 +Using the preceding `tweet` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
 +
 +{{< tweet 877500564405444608 >}}
 +
 +### `vimeo`
 +
 +Adding a video from [Vimeo][] is equivalent to the YouTube shortcode above.
 +
 +```
 +https://vimeo.com/channels/staffpicks/146022717
 +```
 +
 +#### Example `vimeo` Input
 +
 +Extract the ID from the video's URL and pass it to the `vimeo` shortcode:
 +
- ```
- {{% /code %}}
++{{< code file="example-vimeo-input.md" >}}
 +{{</* vimeo 146022717 */>}}
- ```html
++{{< /code >}}
 +
 +#### Example `vimeo` Output
 +
 +Using the preceding `vimeo` example, the following HTML will be added to your rendered website's markup:
 +
 +{{% output file="example-vimeo-output.html" %}}
- ```md
++```
 +{{< vimeo 146022717 >}}
 +```
 +{{% /output %}}
 +
 +{{% tip %}}
 +If you want to further customize the visual styling of the YouTube or Vimeo output, add a `class` named parameter when calling the shortcode. The new `class` will be added to the `<div>` that wraps the `<iframe>` *and* will remove the inline styles. Note that you will need to call the `id` as a named parameter as well.
 +
- {{% code file="example-youtube-input.md" %}}
- ```md
++```
 +{{</* vimeo id="146022717" class="my-vimeo-wrapper-class" */>}}
 +```
 +{{% /tip %}}
 +
 +#### Example `vimeo` Display
 +
 +Using the preceding `vimeo` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
 +
 +{{< vimeo 146022717 >}}
 +
 +### `youtube`
 +
 +The `youtube` shortcode embeds a responsive video player for [YouTube videos][]. Only the ID of the video is required, e.g.:
 +
 +```
 +https://www.youtube.com/watch?v=w7Ft2ymGmfc
 +```
 +
 +
 +#### Example `youtube` Input
 +
 +Copy the YouTube video ID that follows `v=` in the video's URL and pass it to the `youtube` shortcode:
 +
- ```
- {{% /code %}}
++{{< code file="example-youtube-input.md" >}}
 +{{</* youtube w7Ft2ymGmfc */>}}
- {{% code file="example-youtube-input-with-autoplay.md" %}}
- ```md
++{{< /code >}}
 +
 +Furthermore, you can automatically start playback of the embedded video by setting the `autoplay` parameter to `true`. Remember that you can't mix named an unnamed parameters, so you'll need to assign the yet unnamed video id to the parameter `id`:
 +
 +
- ```
- {{% /code %}}
++{{< code file="example-youtube-input-with-autoplay.md" >}}
 +{{</* youtube id="w7Ft2ymGmfc" autoplay="true" */>}}
- {{% code file="example-youtube-output.html" %}}
- ```html
++{{< /code >}}
 +
 +#### Example `youtube` Output
 +
 +Using the preceding `youtube` example, the following HTML will be added to your rendered website's markup:
 +
- ```
- {{% /code %}}
++{{< code file="example-youtube-output.html" >}}
 +{{< youtube id="w7Ft2ymGmfc" autoplay="true" >}}
++{{< /code >}}
 +
 +#### Example `youtube` Display
 +
 +Using the preceding `youtube` example (without `autoplay="true"`), the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup. The video is also include in the [Quick Start of the Hugo documentation][quickstart].
 +
 +{{< youtube w7Ft2ymGmfc >}}
 +
 +## Create Custom Shortcodes
 +
 +To learn more about creating custom shortcodes, see the [shortcode template documentation][].
 +
 +[`figure` shortcode]: #figure
 +[contentmanagementsection]: /content-management/formats/
 +[examplegist]: https://gist.github.com/spf13/7896402
 +[figureelement]: http://html5doctor.com/the-figure-figcaption-elements/ "An article from HTML5 doctor discussing the fig and figcaption elements."
 +[Instagram]: https://www.instagram.com/
 +[pagevariables]: /variables/page/
 +[partials]: /templates/partials/
 +[Pygments]: http://pygments.org/
 +[quickstart]: /getting-started/quick-start/
 +[sctemps]: /templates/shortcode-templates/
 +[scvars]: /variables/shortcodes/
 +[shortcode template documentation]: /templates/shortcode-templates/
 +[Speaker Deck]: https://speakerdeck.com/
 +[templatessection]: /templates/
 +[Vimeo]: https://vimeo.com/
 +[YouTube Videos]: https://www.youtube.com/
index 83abfb63f122cbdd1784630ac52965f134105522,0000000000000000000000000000000000000000..eea976d0ed13469f8c6bec07ad15b08b0727ae9d
mode 100644,000000..100644
--- /dev/null
@@@ -1,83 -1,0 +1,81 @@@
- {{% code file="page-list-with-summaries.html" %}}
- ```html
 +---
 +title: Content Summaries
 +linktitle: Summaries
 +description: Hugo generates summaries of your content. 
 +date: 2017-01-10
 +publishdate: 2017-01-10
 +lastmod: 2017-01-10
 +categories: [content management]
 +#tags: [summaries,abstracts,read more]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 90
 +weight: 90    #rem
 +draft: false
 +aliases: [/content/summaries/,/content-management/content-summaries/]
 +toc: true
 +---
 +
 +With the use of the `.Summary` [page variable][pagevariables], Hugo generates summaries of content to use as a short version in summary views.
 +
 +## Summary Splitting Options
 +
 +* Hugo-defined Summary Split
 +* User-defined Summary Split
 +
 +It is natural to accompany the summary with links to the original content, and a common design pattern is to see this link in the form of a "Read More ..." button. See the `.RelPermalink`, `.Permalink`, and `.Truncated` [page variables][pagevariables].
 +
 +### Hugo-defined: Automatic Summary Splitting
 +
 +By default, Hugo automatically takes the first 70 words of your content as its summary and stores it into the `.Summary` page variable for use in your templates. Taking the Hugo-defined approach to summaries may save time, but it has pros and cons:
 +
 +* **Pros:** Automatic, no additional work on your part.
 +* **Cons:** All HTML tags are stripped from the summary, and the first 70 words, whether they belong to a heading or to different paragraphs, are all put into one paragraph.
 +
 +{{% note %}}
 +The Hugo-defined summaries are set to use word count calculated by splitting the text by one or more consecutive white space characters. If you are creating content in a `CJK` language and want to use Hugo's automatic summary splitting, set `hasCJKLanguage` to `true` in you [site configuration](/getting-started/configuration/).
 +{{% /note %}}
 +
 +### User-defined: Manual Summary Splitting
 +
 +Alternatively, you may add the <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> summary divider where you want to split the article. For [org content][org], use `# more` where you want to split the article. Content that comes before the summary divider will be used as that content's summary and stored in the `.Summary` page variable with all HTML formatting intact.
 +
 +{{% note "Summary Divider"%}}
 +The concept of a *summary divider* is not unique to Hugo. It is also called the "more tag" or "excerpt separator" in other literature.
 +{{% /note %}}
 +
 +* Pros: Freedom, precision, and improved rendering.  All HTML tags and formatting are preserved.
 +* Cons: Extra work for content authors, since they need to remember to type <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> (or `# more` for [org content][org]) in each content file. This can be automated by adding the summary divider below the front matter of an [archetype](/content-management/archetypes/).
 +
 +{{% warning "Be Precise with the Summary Divider" %}}
 +Be careful to enter <code>&#60;&#33;&#45;&#45;more&#45;&#45;&#62;</code> exactly; i.e., all lowercase and with no whitespace.
 +{{% /warning %}}
 +
 +## Example: First 10 Articles with Summaries
 +
 +You can show content summaries with the following code. You could use the following snippet, for example, in a [section template][].
 +
- ```
- {{% /code %}}
++{{< code file="page-list-with-summaries.html" >}}
 +{{ range first 10 .Data.Pages }}
 +    <article>
 +      <!-- this <div> includes the title summary -->
 +      <div>
 +        <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
 +        {{ .Summary }}
 +      </div>
 +      {{ if .Truncated }}
 +      <!-- This <div> includes a read more link, but only if the summary is truncated... -->
 +      <div>
 +        <a href="{{ .RelPermalink }}">Read More…</a>
 +      </div>
 +      {{ end }}
 +    </article>
 +{{ end }}
++{{< /code >}}
 +
 +Note how the `.Truncated` boolean valuable may be used to hide the "Read More..." link when the content is not truncated; i.e., when the summary contains the entire article.
 +
 +[org]: /content-management/formats/
 +[pagevariables]: /variables/page/
 +[section template]: /templates/section-templates/
index 78317d9f24870f9eb081d7b8a894d72de1035585,0000000000000000000000000000000000000000..fcefa5c80f2996e802412de785438b18d88eb7d6
mode 100644,000000..100644
--- /dev/null
@@@ -1,238 -1,0 +1,238 @@@
-         The Six Sense    <- Content
 +---
 +title: Taxonomies
 +linktitle:
 +description: Hugo includes support for user-defined taxonomies to help you  demonstrate logical relationships between content for the end users of your website.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [taxonomies,metadata,front matter,terms]
 +categories: [content management]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 80
 +weight: 80    #rem
 +draft: false
 +aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes]
 +toc: true
 +---
 +
 +## What is a Taxonomy?
 +
 +Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications of logical relationships between content.
 +
 +### Definitions
 +
 +Taxonomy
 +: a categorization that can be used to classify content
 +
 +Term
 +: a key within the taxonomy
 +
 +Value
 +: a piece of content assigned to a term
 +
 +## Example Taxonomy: Movie Website
 +
 +Let's assume you are making a website about movies. You may want to include the following taxonomies:
 +
 +* Actors
 +* Directors
 +* Studios
 +* Genre
 +* Year
 +* Awards
 +
 +Then, in each of the movies, you would specify terms for each of these taxonomies (i.e., in the [front matter][] of each of your movie content files). From these terms, Hugo would automatically create pages for each Actor, Director, Studio, Genre, Year, and Award, with each listing all of the Movies that matched that specific Actor, Director, Studio, Genre, Year, and Award.
 +
 +### Movie Taxonomy Organization
 +
 +To continue with the example of a movie site, the following demonstrates content relationships from the perspective of the taxonomy:
 +
 +```
 +Actor                    <- Taxonomy
 +    Bruce Willis         <- Term
- ```toml
++        The Sixth Sense    <- Content
 +        Unbreakable      <- Content
 +        Moonrise Kingdom <- Content
 +    Samuel L. Jackson    <- Term
 +        Unbreakable      <- Content
 +        The Avengers     <- Content
 +        xXx              <- Content
 +```
 +
 +From the perspective of the content, the relationships would appear differently, although the data and labels used are the same:
 +
 +```
 +Unbreakable                 <- Content
 +    Actors                  <- Taxonomy
 +        Bruce Willis        <- Term
 +        Samuel L. Jackson   <- Term
 +    Director                <- Taxonomy
 +        M. Night Shyamalan  <- Term
 +    ...
 +Moonrise Kingdom            <- Content
 +    Actors                  <- Taxonomy
 +        Bruce Willis        <- Term
 +        Bill Murray         <- Term
 +    Director                <- Taxonomy
 +        Wes Anderson        <- Term
 +    ...
 +```
 +
 +## Hugo Taxonomy Defaults
 +
 +Hugo natively supports taxonomies. 
 +
 +Without adding a single line to your site's configuration file, Hugo will automatically create taxonomies for `tags` and `categories`. If you do not want Hugo to create any taxonomies, set `disableKinds` in your site's configuration to the following:
 +
- * A single page at `yoursite.com/categories/` that lists all the [terms within the taxonomy][]
++```
 +disableKinds = ["taxonomy","taxonomyTerm"]
 +```
 +
 +### Default Destinations
 +
 +When taxonomies are used---and [taxonomy templates][] are provided---Hugo will automatically create both a page listing all the taxonomy's terms and individual pages with lists of content associated with each term. For example, a `categories` taxonomy declared in your your configuration and used in your content front matter will create the following pages:
 +
- ```toml
++* A single page at `example.com/categories/` that lists all the [terms within the taxonomy][]
 +* [Individual taxonomy list pages][taxonomy templates] (e.g., `/categories/development/`) for each of the terms that shows a listing of all pages marked as part of that taxonomy within any content file's [front matter][]
 +
 +## Configure Taxonomies
 +
 +Taxonomies must be defined in your [website configuration][config] before they can be used throughout the site. You need to provide both the plural and singular labels for each taxonomy. For example, `singular key = "plural value"` for TOML and `singular key: "plural value"` for YAML.
 +
 +### Example: TOML Taxonomy Configuration
 +
- ```yaml
++```
 +[taxonomies]
 +  tag = "tags"
 +  category = "categories"
 +  series = "series"
 +```
 +
 +### Example: YAML Taxonomy Configuration
 +
- ```toml
++```
 +taxonomies:
 +  tag: "tags"
 +  category: "categories"
 +  series: "series"
 +```
 +
 +### Preserve Taxonomy Values
 +
 +By default, taxonomy names are normalized.
 +
 +Therefore, if you want to have a taxonomy term with special characters such as `Gérard Depardieu` instead of `Gerard Depardieu`, set the value for `preserveTaxonomyNames` to `true` in your [site configuration][config]. Hugo will then preserve special characters in taxonomy values but will still title-ize the values for titles and normalize them in URLs.
 +
 +Note that if you use `preserveTaxonomyNames` and intend to manually construct URLs to the archive pages, you will need to pass the taxonomy values through the [`urlize` template function][].
 +
 +{{% note %}}
 +You can add content and front matter to your taxonomy list and taxonomy terms pages. See [Content Organization](/content-management/organization/) for more information on how to add an `_index.md` for this purpose.
 +
 +Note also that taxonomy [permalinks](/content-management/urls/) are *not* configurable.
 +{{% /note %}}
 +
 +## Add Taxonomies to Content
 +
 +Once a taxonomy is defined at the site level, any piece of content can be assigned to it, regardless of [content type][] or [content section][].
 +
 +Assigning content to a taxonomy is done in the [front matter][]. Simply create a variable with the *plural* name of the taxonomy and assign all terms you want to apply to the instance of the content type.
 +
 +{{% note %}}
 +If you would like the ability to quickly generate content files with preconfigured taxonomies or terms, read the docs on [Hugo archetypes](/content-management/archetypes/).
 +{{% /note %}}
 +
 +### Example: TOML Front Matter with Taxonomies
 +
- ```yaml
++```
 ++++
 +title = "Hugo: A fast and flexible static site generator"
 +tags = [ "Development", "Go", "fast", "Blogging" ]
 +categories = [ "Development" ]
 +series = [ "Go Web Dev" ]
 +slug = "hugo"
 +project_url = "https://github.com/gohugoio/hugo"
 ++++
 +```
 +
 +### Example: YAML Front Matter with Taxonomies
 +
- ```json
++```
 +---
 +title: "Hugo: A fast and flexible static site generator"
 +#tags: ["Development", "Go", "fast", "Blogging"]
 +categories: ["Development"]
 +categories: ["Go Web Dev"]
 +slug: "hugo"
 +project_url: "https://github.com/gohugoio/hugo"
 +---
 +```
 +
 +### Example: JSON Front Matter with Taxonomies
 +
- ```toml
++```
 +{
 +    "title": "Hugo: A fast and flexible static site generator",
 +    "tags": [
 +        "Development",
 +        "Go",
 +        "fast",
 +        "Blogging"
 +    ],
 +    "categories" : [
 +        "Development"
 +    ],
 +    "series" : [
 +        "Go Web Dev"
 +    ],
 +    "slug": "hugo",
 +    "project_url": "https://github.com/gohugoio/hugo"
 +}
 +```
 +
 +## Order Taxonomies
 +
 +A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in [taxonomy list templates][] and is declared in a content file's [front matter][]. The convention for declaring taxonomic weight is `taxonomyname_weight`.
 +
 +The following TOML and YAML examples show a piece of content that has a weight of 22, which can be used for ordering purposes when rendering the pages assigned to the "a", "b" and "c" values of the `tags` taxonomy. It has also been assigned the weight of 44 when rendering the "d" category page.
 +
 +### Example: TOML Taxonomic `weight`
 +
- ```yaml
++```
 ++++
 +title = "foo"
 +tags = [ "a", "b", "c" ]
 +tags_weight = 22
 +categories = ["d"]
 +categories_weight = 44
 ++++
 +```
 +
 +### Example: YAML Taxonomic `weight`
 +
++```
 +---
 +title: foo
 +#tags: [ "a", "b", "c" ]
 +tags_weight: 22
 +categories: ["d"]
 +categories_weight: 44
 +---
 +```
 +
 +By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies.
 +
 +{{% note "Limits to Ordering Taxonomies" %}}
 +Currently taxonomies only support the [default `weight => date` ordering of list content](/templates/lists/#default-weight-date). For more information, see the documentation on [taxonomy templates](/templates/taxonomy-templates/).
 +{{% /note %}}
 +
 +[`urlize` template function]: /functions/urlize/
 +[content section]: /content-management/sections/
 +[content type]: /content-management/types/
 +[documentation on archetypes]: /content-management/archetypes/
 +[front matter]: /content-management/front-matter/
 +[taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-page-templates
 +[taxonomy templates]: /templates/taxonomy-templates/
 +[terms within the taxonomy]: /templates/taxonomy-templates/#taxonomy-terms-templates "See how to order terms associated with a taxonomy"
 +[config]: /getting-started/configuration/
index de4d9266a58a3b15119f5ef2e734e3324a843aa1,0000000000000000000000000000000000000000..13da764dc6cf80cbe13d546749ad30ab00c4b322
mode 100644,000000..100644
--- /dev/null
@@@ -1,95 -1,0 +1,91 @@@
- ```md
 +---
 +title: Table of Contents
 +linktitle:
 +description: Hugo can automatically parse Markdown content and create a Table of Contents you can use in your templates.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [content management]
 +#tags: [table of contents, toc]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 130
 +weight: 130   #rem
 +draft: false
 +aliases: [/extras/toc/,/content-management/toc/]
 +toc: true
 +---
 +
 +{{% note "TOC Heading Levels are Fixed" %}}
 +Currently, the `{{.TableOfContents}}` [page variable](/variables/page/) does not allow you to specify which heading levels you want the TOC to render. [See the related GitHub discussion (#1778)](https://github.com/gohugoio/hugo/issues/1778). As such, the resulting `<nav id="TableOfContents"><ul></ul></nav>` is going to start at `<h1>` when pulling from `{{.Content}}`.
 +{{% /note %}}
 +
 +## Usage
 +
 +Create your markdown the way you normally would with the appropriate headings. Here is some example content:
 +
- {{% code file="layout/_default/single.html" download="single.html" %}}
- ```html
++```
 +<!-- Your front matter up here -->
 +
 +## Introduction
 +
 +One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin.
 +
 +## My Heading
 +
 +He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment.
 +
 +### My Subheading
 +
 +A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards the viewer. Gregor then turned to look out the window at the dull weather. Drops
 +```
 +
 +Hugo will take this Markdown and create a table of contents from `## Introduction`, `## My Heading`, and `### My Subheading` and then store it in the [page variable][pagevars]`.TableOfContents`.
 +
 +The built-in `.TableOfContents` variables outputs a `<nav id="TableOfContents">` element with a child `<ul>`, whose child `<li>` elements begin with any `<h1>`'s (i.e., `#` in markdown) inside your content.'
 +
 +## Template Example: Basic TOC
 +
 +The following is an example of a very basic [single page template][]:
 +
- ```
- {{% /code %}}
++{{< code file="layout/_default/single.html" download="single.html" >}}
 +{{ define "main" }}
 +<main>
 +    <article>
 +    <header>
 +        <h1>{{ .Title }}</h1>
 +    </header>
 +        {{ .Content }}
 +    </article>
 +    <aside>
 +        {{ .TableOfContents }}
 +    </aside>
 +</main>
 +{{ end }}
- {{% code file="layouts/partials/toc.html" download="toc.html" %}}
- ```html
++{{< /code >}}
 +
 +## Template Example: TOC Partial
 +
 +The following is a [partial template][partials] that adds slightly more logic for page-level control over your table of contents. It assumes you are using a `toc` field in your content's [front matter][] that, unless specifically set to `false`, will add a TOC to any page with a `.WordCount` (see [Page Variables][pagevars]) greater than 400. This example also demonstrates how to use [conditionals][] in your templating:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/toc.html" download="toc.html" >}}
 +{{ if and (gt .WordCount 400 ) (ne .Params.toc "false") }}
 +<aside>
 +    <header>
 +    <h2>{{.Title}}</h2>
 +    </header>
 +    {{.TableOfContents}}
 +</aside>
 +{{ end }}
++{{< /code >}}
 +
 +{{% note %}}
 +With the preceding example, even pages with > 400 words *and* `toc` not set to `false` will not render a table of contents if there are no headings in the page for the `{{.TableOfContents}}` variable to pull from.
 +{{% /note %}}
 +
 +[conditionals]: /templates/introduction/#conditionals
 +[front matter]: /content-management/table-of-contents/
 +[pagevars]: /variables/page/
 +[partials]: /templates/partials/
 +[single page template]: /templates/single-page-templates/
index 46222c18044e203ab3c47041d800d0b8b9e98bc2,0000000000000000000000000000000000000000..5a469f9999a7cc159bf93736daa9941433276441
mode 100644,000000..100644
--- /dev/null
@@@ -1,101 -1,0 +1,99 @@@
- {{% code file="content/events/my-first-event.md" copy="false" %}}
- ```toml
 +---
 +title: Content Types
 +linktitle: Types
 +description: Hugo supports sites with multiple content types and assumes your site will be organized into sections, where each section represents the corresponding type.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [content management]
 +#tags: [lists,sections,content types,types,organization]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 60
 +weight: 60    #rem
 +draft: false
 +aliases: [/content/types]
 +toc: true
 +---
 +
 +A **content type** can have a unique set of metadata (i.e., [front matter][]) or customized [template][] and can be created by the `hugo new` command via [archetypes][].
 +
 +## What is a Content Type
 +
 +[Tumblr][] is a good example of a website with multiple content types. A piece of "content" could be a photo, quote, or a post, each with different sets of metadata and different visual rendering.
 +
 +## Assign a Content Type
 +
 +Hugo assumes that your site will be organized into [sections][] and each section represents a corresponding type. This is to reduce the amount of configuration necessary for new Hugo projects.
 +
 +If you are taking advantage of this default behavior, each new piece of content you place into a section will automatically inherit the type. Therefore a new file created at `content/posts/new-post.md` will automatically be assigned the type `posts`. Alternatively, you can set the content type in a content file's [front matter][] in the field "`type`".
 +
 +## Create New Content of a Specific Type
 +
 +You can manually add files to your content directories, but Hugo can create and populate a new content file with preconfigured front matter via [archetypes][].
 +
 +## Define a Content Type
 +
 +Creating a new content type is easy. You simply define the templates and archetype unique to your new content type, or Hugo will use defaults.
 +
 +
 +{{% note "Declaring Content Types" %}}
 +Remember, all of the following are *optional*. If you do not specifically declare content types in your front matter or develop specific layouts for content types, Hugo is smart enough to assume the content type from the file path and section. (See [Content Sections](/content-management/sections/) for more information.)
 +{{% /note %}}
 +
 +The following examples take you stepwise through creating a new type layout for a content file that contains the following front matter:
 +
- ```
- {{% /code %}}
++{{< code file="content/events/my-first-event.md" copy="false" >}}
 ++++
 +title = My First Event
 +date = "2016-06-24T19:20:04-07:00"
 +description = "Today is my 36th birthday. How time flies."
 +type = "event"
 +layout = "birthday"
 ++++
++{{< /code >}}
 +
 +By default, Hugo assumes `*.md` under `events` is of the `events` content type. However, we have specified that this particular file at `content/events/ my-first-event.md` is of type `event` and should render using the `birthday` layout.
 +
 +### Create a Type Layout Directory
 +
 +Create a directory with the name of the type in `/layouts`. For creating these custom layouts, **type is always singular**; e.g., `events => event` and `posts => post`.
 +
 +For this example, you need to create `layouts/event/birthday.html`.
 +
 +{{% note %}}
 +If you have multiple content files in your `events` directory that are of the `special` type and you don't want to define the `layout` specifically for each piece of content, you can create a layout at `layouts/special/single.html` to observe the [single page template lookup order](/templates/single-page-templates/).
 +{{% /note %}}
 +
 +{{% warning %}}
 +With the "everything is a page" data model introduced in v0.18 (see [Content Organization](/content-management/organization/)), you can use `_index.md` in content directories to add both content and front matter to [list pages](/templates/lists/). However, `type` and `layout` declared in the front matter of `_index.md` are *not* currently respected at build time as of v0.19. This is a known issue [(#3005)](https://github.com/gohugoio/hugo/issues/3005).
 +{{% /warning %}}
 +
 +### Create Views
 +
 +Many sites support rendering content in a few different ways; e.g., a single page view and a summary view to be used when displaying a [list of section contents][sectiontemplates].
 +
 +Hugo limits assumptions about how you want to display your content to an intuitive set of sane defaults and will support as many different views of a content type as your site requires. All that is required for these additional views is that a template exists in each `/layouts/<TYPE>` directory with the same name.
 +
 +### Custom Content Type Template Lookup Order
 +
 +The lookup order for the `content/events/my-first-event.md` templates would be as follows:
 +
 +* `layouts/event/birthday.html`
 +* `layouts/event/single.html`
 +* `layouts/events/single.html`
 +* `layouts/_default/single.html`
 +
 +### Create a Corresponding Archetype
 +
 +We can then create a custom archetype with preconfigured front matter at `event.md` in the `/archetypes` directory; i.e. `archetypes/event.md`.
 +
 +Read [Archetypes][archetypes] for more information on archetype usage with `hugo new`.
 +
 +[archetypes]: /content-management/archetypes/
 +[front matter]: /content-management/front-matter/
 +[sectiontemplates]: /templates/section-templates/
 +[sections]: /content-management/sections/
 +[template]: /templates/
 +[Tumblr]: https://www.tumblr.com/
index e600763c620a4f74c699ab406784eef3125bc00b,0000000000000000000000000000000000000000..74f2f772ed02fffa68a9410911fd9ca61bfb82e4
mode 100644,000000..100644
--- /dev/null
@@@ -1,285 -1,0 +1,277 @@@
- {{% code file="config.yml" copy="false" %}}
- ```yaml
 +---
 +title: URL Management
 +linktitle: URL Management
 +description: Hugo supports permalinks, aliases, link canonicalization, and multiple options for handling relative vs absolute URLs.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-09
 +#tags: [aliases,redirects,permalinks,urls]
 +categories: [content management]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 110
 +weight: 110   #rem
 +draft: false
 +aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
 +toc: true
 +---
 +
 +## Permalinks
 +
 +The default Hugo target directory for your built website is `public/`. However, you can change this value by specifying a different `publishDir` in your [site configuration][config]. The directories created at build time for a section reflect the position of the content's directory within the `content` folder and namespace matching its layout within the `contentdir` hierarchy.
 +
 +The `permalinks` option in your [site configuration][config] allows you to adjust the directory paths (i.e., the URLs) on a per-section basis. This will change where the files are written to and will change the page's internal "canonical" location, such that template references to `.RelPermalink` will honor the adjustments made as a result of the mappings in this option.
 +
 +{{% note "Default Publish and Content Folders" %}}
 +These examples use the default values for `publishDir` and `contentDir`; i.e., `publish` and `content`, respectively. You can override the default values in your [site's `config` file](/getting-started/configuration/).
 +{{% /note %}}
 +
 +For example, if one of your [sections][] is called `post` and you want to adjust the canonical path to be hierarchical based on the year, month, and post title, you could set up the following configurations in YAML and TOML, respectively.
 +
 +### YAML Permalinks Configuration Example
 +
- ```
- {{% /code %}}
++{{< code file="config.yml" copy="false" >}}
 +permalinks:
 +  post: /:year/:month/:title/
- {{% code file="config.toml" copy="false" %}}
- ```toml
++{{< /code >}}
 +
 +### TOML Permalinks Configuration Example
 +
- ```
- {{% /code %}}
++{{< code file="config.toml" copy="false" >}}
 +[permalinks]
 +  post = "/:year/:month/:title/"
- Only the content under `post/` will have the new URL structure. For example, the file `content/post/sample-entry.md` with `date: 2017-02-27T19:20:00-05:00` in its front matter will render to `public/2017/02/sample-entry/index.html` at build time and therefore be reachable at `http://yoursite.com/2013/11/sample-entry/`.
++{{< /code >}}
 +
- {{% code file="content/posts/my-awesome-post.md" copy="false" %}}
- ```toml
++Only the content under `post/` will have the new URL structure. For example, the file `content/post/sample-entry.md` with `date: 2017-02-27T19:20:00-05:00` in its front matter will render to `public/2017/02/sample-entry/index.html` at build time and therefore be reachable at `http://example.com/2013/11/sample-entry/`.
 +
 +### Permalink Configuration Values
 +
 +The following is a list of values that can be used in a `permalink` definition in your site `config` file. All references to time are dependent on the content's date.
 +
 +`:year`
 +: the 4-digit year
 +
 +`:month`
 +: the 2-digit month
 +
 +`:monthname`
 +: the name of the month
 +
 +`:day`
 +: the 2-digit day
 +
 +`:weekday`
 +: the 1-digit day of the week (Sunday = 0)
 +
 +`:weekdayname`
 +: the name of the day of the week
 +
 +`:yearday`
 +: the 1- to 3-digit day of the year
 +
 +`:section`
 +: the content's section
 +
 +`:title`
 +: the content's title
 +
 +`:slug`
 +: the content's slug (or title if no slug is provided in the front matter)
 +
 +`:filename`
 +: the content's filename (without extension)
 +
 +## Aliases
 +
 +For people migrating existing published content to Hugo, there's a good chance you need a mechanism to handle redirecting old URLs.
 +
 +Luckily, redirects can be handled easily with **aliases** in Hugo.
 +
 +### Example: Aliases
 +
 +Let's assume you create a new piece of content at `content/posts/my-awesome-blog-post.md`. The content is a revision of your previous post at `content/posts/my-original-url.md`. You can create an `aliases` field in the front matter of your new `my-awesome-blog-post.md` where you can add previous paths. The following examples show how to create this filed in TOML and YAML front matter, respectively.
 +
 +#### TOML Front Matter
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
 ++++
 +aliases = [
 +    "/posts/my-original-url/",
 +    "/2010/01/01/even-earlier-url.html"
 +]
 ++++
- {{% code file="content/posts/my-awesome-post.md" copy="false" %}}
- ```yaml
++{{< /code >}}
 +
 +#### YAML Front Matter
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
 +---
 +aliases:
 +    - /posts/my-original-url/
 +    - /2010/01/01/even-earlier-url.html
 +---
- Now when you visit any of the locations specified in aliases---i.e., *assuming the same site domain*---you'll be redirected to the page they are specified on. For example, a visitor to `yoursite.com/posts/my-original-url/` will be immediately redirected to `yoursite.com/posts/my-awesome-blog-post/`.
++{{< /code >}}
 +
- ```yaml
++Now when you visit any of the locations specified in aliases---i.e., *assuming the same site domain*---you'll be redirected to the page they are specified on. For example, a visitor to `example.com/posts/my-original-url/` will be immediately redirected to `example.com/posts/my-awesome-blog-post/`.
 +
 +### Example: Aliases in Multilingual
 +
 +On [multilingual sites][multilingual], each translation of a post can have unique aliases. To use the same alias across multiple languages, prefix it with the language code.
 +
 +In `/posts/my-new-post.es.md`:
 +
- ```yaml
++```
 +---
 +aliases:
 +    - /es/posts/my-original-post/
 +---
 +```
 +
 +### How Hugo Aliases Work
 +
 +When aliases are specified, Hugo creates a directory to match the alias entry. Inside the directory, Hugo creates an `.html` file specifying the canonical URL for the page and the new redirect target.
 +
 +For example, a content file at `posts/my-intended-url.md` with the following in the front matter:
 +
- Assuming a `baseURL` of `yoursite.com`, the contents of the auto-generated alias `.html` found at `https://yoursite.com/posts/my-old-url/ will contain the following:`
++```
 +---
 +title: My New post
 +aliases: [/posts/my-old-url/]
 +---
 +```
 +
- ```html
++Assuming a `baseURL` of `example.com`, the contents of the auto-generated alias `.html` found at `https://example.com/posts/my-old-url/ will contain the following:`
 +
-     <title>http://yoursite.com/posts/my-intended-url</title>
-     <link rel="canonical" href="http://yoursite.com/posts/my-intended-url"/>
++```
 +<!DOCTYPE html>
 +<html>
 +  <head>
-     <meta http-equiv="refresh" content="0; url=http://yoursite.com/posts/my-intended-url"/>
++    <title>http://example.com/posts/my-intended-url</title>
++    <link rel="canonical" href="http://example.com/posts/my-intended-url"/>
 +    <meta name=\"robots\" content=\"noindex\">
 +    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case. If an end user of your website goes to `https://yoursite.com/posts/my-old-url`, they will now be automatically redirected to the newer, correct URL. The addition of `<meta name=\"robots\" content=\"noindex\">` lets search engine bots know they they should not crawl and index your new alias page.
++    <meta http-equiv="refresh" content="0; url=http://example.com/posts/my-intended-url"/>
 +  </head>
 +</html>
 +```
 +
- ```bash
++The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case. If an end user of your website goes to `https://example.com/posts/my-old-url`, they will now be automatically redirected to the newer, correct URL. The addition of `<meta name=\"robots\" content=\"noindex\">` lets search engine bots know they they should not crawl and index your new alias page.
 +
 +### Customize 
 +You may customize this alias page by creating an `alias.html` template in the
 +layouts folder of your site (i.e., `layouts/alias.html`). In this case, the data passed to the template is
 +
 +`Permalink`
 +: the link to the page being aliased
 +
 +`Page`
 +: the Page data for the page being aliased
 +
 +### Important Behaviors of Aliases
 +
 +1. Hugo makes no assumptions about aliases. They also do not change based
 +on your UglyURLs setting. You need to provide absolute paths to your web root
 +and the complete filename or directory.
 +2. Aliases are rendered *before* any content are rendered and therefore will be overwritten by any content with the same location.
 +
 +## Pretty URLs
 +
 +Hugo's default behavior is to render your content with "pretty" URLs. No non-standard server-side configuration is required for these pretty URLs to work.
 +
 +The following demonstrates the concept:
 +
- => yoursite.com/posts/index.html
++```
 +content/posts/_index.md
- => yoursite.com/posts/post-1/
++=> example.com/posts/index.html
 +content/posts/post-1.md
- If you would like to have are often referred to as "ugly URLs" (e.g., yoursite.com/urls.html), set `uglyurls = true` or `uglyurls: true` in your site's `config.toml` or `config.yaml`, respectively. You can also use the `--uglyURLs=true` [flag from the command line][usage] with `hugo` or `hugo server`..
++=> example.com/posts/post-1/
 +```
 +
 +## Ugly URLs
 +
- ```bash
++If you would like to have are often referred to as "ugly URLs" (e.g., example.com/urls.html), set `uglyurls = true` or `uglyurls: true` in your site's `config.toml` or `config.yaml`, respectively. You can also use the `--uglyURLs=true` [flag from the command line][usage] with `hugo` or `hugo server`..
 +
 +If you want a specific piece of content to have an exact URL, you can specify this in the [front matter][] under the `url` key. The following are examples of the same content directory and what the eventual URL structure will be when Hugo runs with its default behavior.
 +
 +See [Content Organization][contentorg] for more details on paths.
 +
-     |   └── _index.md  // <- http://yoursite.com/about/
++```
 +.
 +└── content
 +    └── about
-     |   ├── firstpost.md   // <- http://yoursite.com/post/firstpost/
++    |   └── _index.md  // <- http://example.com/about/
 +    ├── post
-     |   |   └── ness.md  // <- http://yoursite.com/post/happy/ness/
-     |   └── secondpost.md  // <- http://yoursite.com/post/secondpost/
++    |   ├── firstpost.md   // <- http://example.com/post/firstpost/
 +    |   ├── happy
-         ├── first.md       // <- http://yoursite.com/quote/first/
-         └── second.md      // <- http://yoursite.com/quote/second/
++    |   |   └── ness.md  // <- http://example.com/post/happy/ness/
++    |   └── secondpost.md  // <- http://example.com/post/secondpost/
 +    └── quote
- ```bash
++        ├── first.md       // <- http://example.com/quote/first/
++        └── second.md      // <- http://example.com/quote/second/
 +```
 +
 +Here's the same organization run with `hugo --uglyURLs`:
 +
-     |   └── _index.md  // <- http://yoursite.com/about/index.html
++```
 +.
 +└── content
 +    └── about
-     |   ├── firstpost.md   // <- http://yoursite.com/post/firstpost.html
++    |   └── _index.md  // <- http://example.com/about/index.html
 +    ├── post
-     |   |   └── ness.md    // <- http://yoursite.com/post/happy/ness.html
-     |   └── secondpost.md  // <- http://yoursite.com/post/secondpost.html
++    |   ├── firstpost.md   // <- http://example.com/post/firstpost.html
 +    |   ├── happy
-         ├── first.md       // <- http://yoursite.com/quote/first.html
-         └── second.md      // <- http://yoursite.com/quote/second.html
++    |   |   └── ness.md    // <- http://example.com/post/happy/ness.html
++    |   └── secondpost.md  // <- http://example.com/post/secondpost.html
 +    └── quote
- By setting `canonifyURLs` to `true`, all relative URLs would instead be *canonicalized* using `baseURL`.  For example, assuming you have `baseURL = https://yoursite.com/`, the relative URL `/css/foo.css` would be turned into the absolute URL `http://yoursite.com/css/foo.css`.
++        ├── first.md       // <- http://example.com/quote/first.html
++        └── second.md      // <- http://example.com/quote/second.html
 +```
 +
 +
 +## Canonicalization
 +
 +By default, all relative URLs encountered in the input are left unmodified, e.g. `/css/foo.css` would stay as `/css/foo.css`. The `canonifyURLs` field in your site `config` has a default value of `false`.
 +
- ```bash
++By setting `canonifyURLs` to `true`, all relative URLs would instead be *canonicalized* using `baseURL`.  For example, assuming you have `baseURL = https://example.com/`, the relative URL `/css/foo.css` would be turned into the absolute URL `http://example.com/css/foo.css`.
 +
 +Benefits of canonicalization include fixing all URLs to be absolute, which may aid with some parsing tasks. Note, however, that all modern browsers handle this on the client without issue.
 +
 +Benefits of non-canonicalization include being able to have scheme-relative resource inclusion; e.g., so that `http` vs `https` can be decided according to how the page was retrieved.
 +
 +{{% note "`canonifyURLs` default change" %}}
 +In the May 2014 release of Hugo v0.11, the default value of `canonifyURLs` was switched from `true` to `false`, which we think is the better default and should continue to be the case going forward. Please verify and adjust your website accordingly if you are upgrading from v0.10 or older versions.
 +{{% /note %}}
 +
 +To find out the current value of `canonifyURLs` for your website, you may use the handy `hugo config` command added in v0.13.
 +
++```
 +hugo config | grep -i canon
 +```
 +
 +Or, if you are on Windows and do not have `grep` installed:
 +
 +```
 +hugo config | FINDSTR /I canon
 +```
 +
 +## Override URLS with Front Matter
 +
 +In addition to specifying permalink values in your site configuration for different content sections, Hugo provides even more granular control for individual pieces of content.
 +
 +Both `slug` and `url` can be defined in individual front matter. For more information on content destinations at build time, see [Content Organization][contentorg].
 +
 +## Relative URLs
 +
 +By default, all relative URLs are left unchanged by Hugo, which can be problematic when you want to make your site browsable from a local file system.
 +
 +Setting `relativeURLs` to `true` in your [site configuration][config] will cause Hugo to rewrite all relative URLs to be relative to the current content.
 +
 +For example, if your `/post/first/` page contains a link to `/about/`, Hugo will rewrite the URL to `../../about/`.
 +
 +[config]: /getting-started/configuration/
 +[contentorg]: /content-management/organization/
 +[front matter]: /content-management/front-matter/
 +[multilingual]: /content-management/multilingual/
 +[sections]: /content-management/sections/
 +[usage]: /getting-started/usage/
index 1df15f6c94b01a322c15fbbdc08b9a4fdcc38a7c,0000000000000000000000000000000000000000..c28d90cdb9db32f9fc0118cd90b935ef29c6bf20
mode 100644,000000..100644
--- /dev/null
@@@ -1,23 -1,0 +1,23 @@@
- title: Contributing to the Hugo Project
- linktitle: Contributing to Hugo
 +---
++title: Contribute to the Hugo Project
++linktitle: Contribute to Hugo
 +description: Contribute to Hugo development and documentation.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [contribute]
 +#tags: []
 +menu:
 +  docs:
 +    parent: "contribute"
 +    weight: 01
 +weight: 01    #rem
 +draft: false
 +slug:
 +aliases: [/tutorials/how-to-contribute-to-hugo/,/community/contributing/]
 +toc: false
 +---
 +
 +Hugo relies heavily on the enthusiasm and participation of the open-source community. We need your support in both its development and documentation.
 +
 +Hugo's contribution guidelines are [detailed in a `CONTRIBUTING.md`](https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md) in the Hugo source repository on GitHub.
index bf90f7a28815a7c615acefc5446e472ba66371d1,0000000000000000000000000000000000000000..8261c0e1b503bc9891c4303424f646778a21ceac
mode 100644,000000..100644
--- /dev/null
@@@ -1,412 -1,0 +1,410 @@@
- ```bash
 +---
 +title: Contribute to Hugo Development
 +linktitle: Development
 +description: Hugo relies heavily on contributions from the open source community.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [contribute]
 +#tags: [dev,open source]
 +authors: [digitalcraftsman]
 +menu:
 +  docs:
 +    parent: "contribute"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/contribute/development/]
 +toc: true
 +---
 +
 +## Introduction
 +
 +Hugo is an open-source project and lives by the work of its [contributors][]. There are plenty of [open issues][issues], and we need your help to make Hugo even more awesome. You don't need to be a Go guru to contribute to the project's development.
 +
 +## Assumptions
 +
 +This contribution guide takes a step-by-step approach in hopes of helping newcomers. Therefore, we only assume the following:
 +
 +* You are new to Git or open-source projects in general
 +* You are a fan of Hugo and enthusiastic about contributing to the project
 +
 +{{% note "Additional Questions?" %}}
 +If you're struggling at any point in this contribution guide, reach out to the Hugo community in [Hugo's Discussion forum](https://discourse.gohugo.io).
 +{{% /note %}}
 +
 +## Install Go
 +
 +The installation of Go should take only a few minutes. You have more than one option to get Go up and running on your machine.
 +
 +If you are having trouble following the installation guides for go, check out [Go Bootcamp, which contains setups for every platform][gobootcamp] or reach out to the Hugo community in the [Hugo Discussion Forums][forums].
 +
 +### Install Go From Source
 +
 +[Download the latest stable version of Go][godl] and follow the official [Golang installation guide][goinstall].
 +
 +Once you're finished installing Go, let's confirm everything is working correctly. Open a terminal---or command line under Windows--and type the following:
 +
- ```bash
++```
 +go version
 +```
 +
 +You should see something similar to the following written to the console. Note that the version here reflects the most recent version of Go as of the last update for this page:
 +
- ```bash
++```
 +go version go1.8 darwin/amd64
 +```
 +
 +Next, make sure that you set up your `GOPATH` [as described in the installation guide][setupgopath].
 +
 +You can print the `GOPATH` with `echo $GOPATH`. You should see a non-empty string containing a valid path to your Go workspace; .e.g.:
 +
- {{% code file="install-go.sh" %}}
- ```bash
++```
 +/Users/<yourusername>/Code/go
 +```
 +
 +### Install Go with Homebrew
 +
 +If you are a macOS user and have [Homebrew](https://brew.sh/) installed on your machine, installing Go is as simple as the following command:
 +
- ```
- {{% /code %}}
++{{< code file="install-go.sh" >}}
 +brew install go
- Hub is a great tool for working with GitHub. The main site for it is [www.hub.github.com](https://hub.github.com/). Feel free to install this little Git wrapper.
++{{< /code >}}
 +
 +### Install Go via GVM
 +
 +More experienced users can use the [Go Version Manager][gvm] (GVM). GVM allows you to switch between different Go versions *on the same machine*. If you're a beginner, you probably don't need this feature. However, GVM makes it easy to upgrade to a new released Go version with just a few commands.
 +
 +GVM comes in especially handy if you follow the development of Hugo over a longer period of time. Future versions of Hugo will usually be compiled with the latest version of Go. Sooner or later, you will have to upgrade if you want to keep up.
 +
 +## Create a GitHub Account
 +
 +If you're going to contribute code, you'll need to have an account on GitHub. Go to [www.github.com/join](https://github.com/join) and set up a personal account.
 +
 +## Install Git on Your System
 +
 +You will need to have Git installed on your computer to contribute to Hugo development. Teaching git is outside the scope of the Hugo docs, but if you're looking for an excellent reference to learn the basics of Git, we recommend the [Git book][gitbook] if you are not sure where to begin. The used terminology will be explained with annotations.
 +
 +Git is a [version control system](https://en.wikipedia.org/wiki/Version_control) to track the changes of source code. Hugo depends on smaller third-party packages that are used to extend the functionality. We use them because we don't want to reinvent the wheel.
 +
 +Go ships with a sub-command called `get` that will download these packages for us when we setup our working environment. The source code of the packages is tracked with Git. `get` will interact with the Git servers of the package hosters in order to fetch all dependencies.
 +
 +Move back to the terminal and check if Git is already installed. Type in `git version` and press enter. You can skip the rest of this section if the command returned a version number. Otherwise [download](https://git-scm.com/downloads) the lastest version of Git and follow this [installation guide](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
 +
 +Finally, check again with `git version` if Git was installed successfully.
 +
 +### Git Graphical Front Ends
 +
 +There are several [GUI clients](https://git-scm.com/downloads/guis) that help you to operate Git. Not all are available for all operating systems and maybe differ in their usage. Thus, so we will use the command line since the commands are everywhere the same.
 +
 +### Install Hub on Your System (Optional)
 +
- ```sh
++Hub is a great tool for working with GitHub. The main site for it is [hub.github.com](https://hub.github.com/). Feel free to install this little Git wrapper.
 +
 +On a Mac, you can install [Hub](https://github.com/github/hub) using [Homebrew](https://brew.sh):
 +
- ```sh
++```
 +brew install hub
 +```
 +
 +Now we'll create an [alias in Bash](http://tldp.org/LDP/abs/html/aliases.html) so that typing `git` actually runs `Hub`:
 +
- ```sh
++```
 +echo "alias git='hub'" >> ~/.bash_profile
 +```
 +
 +Confirm the installation:
 +
- ```sh
++```
 +git version 2.6.3
 +hub version 2.2.2
 +```
 +
 +## Set up your working copy
 +
 +The working copy is set up locally on your computer. It's what you'll edit, compile, and end up pushing back to GitHub. The main steps are cloning the repository and creating your fork as a remote.
 +
 +### Clone the repository
 +
 +We assume that you've set up your `GOPATH` (see the section above if you're unsure about this). You should now copy the Hugo repository down to your computer. You'll hear this called "clone the repo". GitHub's [help pages](https://help.github.com/articles/cloning-a-repository/) give us a short explanation:
 +
 +> When you create a repository on GitHub, it exists as a remote repository. You can create a local clone of your repository on your computer and sync between the two locations.
 +
 +We're going to clone the [master Hugo repository](https://github.com/gohugoio/hugo). That seems counter-intuitive, since you won't have commit rights on it. But it's required for the Go workflow. You'll work on a copy of the master and push your changes to your own repository on GitHub.
 +
 +So, let's clone that master repository:
 +
- ```sh
++```
 +go get -v -u github.com/gohugoio/hugo
 +```
 +
 +### Fork the repository
 +
 +If you're not fimiliar with this term, GitHub's [help pages](https://help.github.com/articles/fork-a-repo/) provide again a simple explanation:
 +
 +> A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
 +
 +#### Fork by hand
 +
 +Open the [Hugo repository](https://github.com/gohugoio/hugo) on GitHub and click on the "Fork" button in the top right.
 +
 +![Fork button](/images/contribute/development/forking-a-repository.png)
 +
 +Now open your fork repository on GitHub and copy the remote url of your fork. You can choose between HTTPS and SSH as protocol that Git should use for the following operations. HTTPS works always [if you're not sure](https://help.github.com/articles/which-remote-url-should-i-use/).
 +
 +![Copy remote url](/images/contribute/development/copy-remote-url.png)
 +
 +Switch back to the terminal and move into the directory of the cloned master repository from the last step.
 +
- ```sh
++```
 +cd $GOPATH/src/github.com/gohugoio/hugo
 +```
 +
 +Now Git needs to know that our fork exists by adding the copied remote url:
 +
- ```sh
++```
 +git remote add <YOUR-GITHUB-USERNAME> <COPIED REMOTE-URL>
 +```
 +
 +#### Fork with Hub
 +
 +Alternatively, you can use the Git wrapper Hub. Hub makes forking a repository easy:
 +
- ```sh
++```
 +git fork
 +```
 +
 +That command will log in to GitHub using your account, create a fork of the repository that you're currently working in, and add it as a remote to your working copy.
 +
 +#### Trust, but verify
 +
 +Let's check if everything went right by listing all known remotes:
 +
- ```sh
++```
 +git remote -v
 +```
 +
 +The output should look similar:
 +
- ```sh
++```
 +digitalcraftsman    git@github.com:digitalcraftsman/hugo.git (fetch)
 +digitalcraftsman    git@github.com:digitalcraftsman/hugo.git (push)
 +origin  https://github.com/gohugoio/hugo (fetch)
 +origin  https://github.com/gohugoio/hugo (push)
 +```
 +
 +## The Hugo Git Contribution Workflow
 +
 +### Create a new branch
 +
 +You should never develop against the "master" branch. The development team will not accept a pull request against that branch. Instead, create a descriptive named branch and work on it.
 +
 +First, you should always pull the latest changes from the master repository:
 +
- ```sh
++```
 +git checkout master
 +git pull
 +```
 +
 +Now we can create a new branch for your additions:
 +
- ```sh
++```
 +git checkout -b <BRANCH-NAME>
 +```
 +
 +You can check on which branch your are with `git branch`. You should see a list of all local branches. The current branch is indicated with a little asterisk.
 +
 +### Contribute to Documentation
 +
 +Perhaps you want to start contributing to the Hugo docs. If so, you can ignore most of the following steps and focus on the `/docs` directory within your newly cloned repository. You can change directories into the Hugo docs using `cd docs`.
 +
 +You can start Hugo's built-in server via `hugo server`. Browse the documentation by entering [http://localhost:1313](http://localhost:1313) in the address bar of your browser. The server automatically updates the page whenever you change content.
 +
 +We have developed a [separate Hugo documentation contribution guide][docscontrib] for more information on how the Hugo docs are built, organized, and improved by the generosity of people like you.
 +
 +### Build Hugo
 +
 +While making changes in the codebase it's a good idea to build the binary to test them:
 +
- ```sh
++```
 +go build -o hugo main.go
 +```
 +
 +### Test 
 +Sometimes changes on the codebase can cause unintended side effects. Or they don't work as expected. Most functions have their own test cases. You can find them in files ending with `_test.go`.
 +
 +Make sure the commands `go test ./...` passes, and `go build` completes.
 +
 +### Formatting 
 +The Go code styleguide maybe is opiniated but it ensures that the codebase looks the same, regardless who wrote the code. Go comes with its own formatting tool. Let's apply the styleguide to our addtions:
 +
- ```sh
++```
 +go fmt ./...
 +```
 +
 +Once you made your additions commit your changes. Make sure that you follow our [code contribution guidelines](https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md):
 +
- ```sh
++```
 +# Add all changed files
 +git add --all
 +git commit --message "YOUR COMMIT MESSAGE"
 +```
 +
 +The commit message should describe what the commit does (e.g. add feature XYZ), not how it is done.
 +
 +### Modify commits
 +
 +You noticed some commit messages don't fulfill the code contribution guidelines or you just forget something to add some files? No problem. Git provides the necessary tools to fix such problems. The next two methods cover all common cases.
 +
 +If you are unsure what a command does leave the commit as it is. We can fix your commits later in the pull request.
 +
 +#### Modify the last commit
 +
 +Let's say you want to modify the last commit message. Run the following command and replace the current message:
 +
- ```sh
++```
 +git commit --amend -m"YOUR NEW COMMIT MESSAGE"
 +```
 +
 +Take a look at the commit log to see the change:
 +
- ```sh
++```
 +git log
 +# Exit with q
 +```
 +
 +After making the last commit you may forgot something. There is no need to create a new commit. Just add the latest changes and merge them into the intended commit:
 +
- ```sh
++```
 +git add --all
 +git commit --amend
 +```
 +
 +#### Modify multiple commits
 +
 +{{% warning "Be Careful Modifying Multiple Commits"%}}
 +Modifications such as those described in this section can have serious unintended consequences. Skip this section if you're not sure!
 +{{% /warning %}}
 +
 +This is a bit more advanced. Git allows you to [rebase](https://git-scm.com/docs/git-rebase) commits interactively. In other words: it allows you to rewrite the commit history.
 +
- ```sh
++```
 +git rebase --interactive @~6
 +```
 +
 +The `6` at the end of the command represents the number of commits that should be modified. An editor should open and present a list of last six commit messages:
 +
- ```sh
++```
 +pick 80d02a1 tpl: Add hasPrefix to the template funcs' "smoke test"
 +pick aaee038 tpl: Sort the smoke tests
 +pick f0dbf2c tpl: Add the other test case for hasPrefix
 +pick 911c35b Add "How to contribute to Hugo" tutorial
 +pick 33c8973 Begin workflow
 +pick 3502f2e Refactoring and typo fixes
 +```
 +
 +In the case above we should merge the last to commits in the commit of this tutorial (`Add "How to contribute to Hugo" tutorial`). You can "squash" commits, i.e. merge two or more commits into a single one.
 +
 +All operations are written before the commit message. Replace "pick" with an operation. In this case `squash` or `s` for short:
 +
- ```sh
++```
 +pick 80d02a1 tpl: Add hasPrefix to the template funcs' "smoke test"
 +pick aaee038 tpl: Sort the smoke tests
 +pick f0dbf2c tpl: Add the other test case for hasPrefix
 +pick 911c35b Add "How to contribute to Hugo" tutorial
 +squash 33c8973 Begin workflow
 +squash 3502f2e Refactoring and typo fixes
 +```
 +
 +We also want to rewrite the commits message of the third last commit. We forgot "docs:" as prefix according to the code contribution guidelines. The operation to rewrite a commit is called `reword` (or `r` as shortcut).
 +
 +You should end up with a similar setup:
 +
- ```sh
++```
 +pick 80d02a1 tpl: Add hasPrefix to the template funcs' "smoke test"
 +pick aaee038 tpl: Sort the smoke tests
 +pick f0dbf2c tpl: Add the other test case for hasPrefix
 +reword 911c35b Add "How to contribute to Hugo" tutorial
 +squash 33c8973 Begin workflow
 +squash 3502f2e Refactoring and typo fixes
 +```
 +
 +Close the editor. It should open again with a new tab. A text is instructing you to define a new commit message for the last two commits that should be merged (aka "squashed"). Save the file with <kbd>CTRL</kbd>+<kbd>S</kbd> and close the editor again.
 +
 +A last time a new tab opens. Enter a new commit message and save again. Your terminal should contain a status message. Hopefully this one:
 +
- ```sh
++```
 +Successfully rebased and updated refs/heads/<BRANCHNAME>.
 +```
 +
 +Check the commit log if everything looks as expected. Should an error occur you can abort this rebase with `git rebase --abort`.
 +
 +### Push commits
 +
 +To push our commits to the fork on GitHub we need to speficy a destination. A destination is defined by the remote and a branch name. Earlier, the defined that the remote url of our fork is the same as our GitHub handle, in my case `digitalcraftsman`. The branch should have the same as our local one. This makes it easy to identify corresponding branches.
 +
++```
 +git push --set-upstream <YOUR-GITHUB-USERNAME> <BRANCHNAME>
 +```
 +
 +Now Git knows the destination. Next time when you to push commits you just need to enter `git push`.
 +
 +If you modified your commit history in the last step GitHub will reject your try to push. This is a safety-feature because the commit history isn't the same and new commits can't be appended as usual. You can enforce this push explicitly with `git push --force`.
 +
 +## Open a pull request
 +
 +We made a lot of progress. Good work. In this step we finally open a pull request to submit our additions. Open the [Hugo master repository](https://github.com/gohugoio/hugo/) on GitHub in your browser.
 +
 +You should find a green button labeld with "New pull request". But GitHub is clever and probably suggests you a pull request like in the beige box below:
 +
 +![Open a pull request](/images/contribute/development/open-pull-request.png)
 +
 +The new page summaries the most important information of your pull request. Scroll down and you find the additions of all your commits. Make sure everything looks as expected and click on "Create pull request".
 +
 +### Accept the contributor license agreement
 +
 +Last but not least you should accept the contributor license agreement (CLA). A new comment should be added automatically to your pull request. Click on the yellow badge, accept the agreement and authenticate yourself with your GitHub account. It just takes a few clicks and only needs to be done once.
 +
 +![Accept the CLA](/images/contribute/development/accept-cla.png)
 +
 +### Automatic builds
 +
 +We use the [Travis CI loop](https://travis-ci.org/gohugoio/hugo) (Linux and OS&nbsp;X) and [AppVeyor](https://ci.appveyor.com/project/gohugoio/hugo/branch/master) (Windows) to compile Hugo with your additions. This should ensure that everything works as expected before merging your pull request. This in most cases only relevant if you made changes to the codebase of Hugo.
 +
 +![Automic builds and their status](/images/contribute/development/ci-errors.png)
 +
 +Above you can see that Travis wasn't able to compile the changes in this pull request. Click on "Details" and try to investigate why the build failed. But it doesn't have to be your fault. Mostly, the `master` branch that we used as foundation for your pull request should build without problems.
 +
 +If you have questions, leave a comment in the pull request. We are willing to assist you.
 +
 +## Where to start?
 +
 +Thank you for reading through this contribution guide. Hopefully, we will see you again soon on GitHub. There are plenty of [open issues][issues] for you to help with.
 +
 +Feel free to [open an issue][newissue] if you think you found a bug or you have a new idea to improve Hugo. We are happy to hear from you.
 +
 +## Additional References for Learning Git and Golang
 +
 +* [Codecademy's Free "Learn Git" Course][codecademy] (Free)
 +* [Code School and GitHub's "Try Git" Tutorial][trygit] (Free)
 +* [The Git Book][gitbook] (Free)
 +* [Go Bootcamp][gobootcamp]
 +* [GitHub Pull Request Tutorial, Thinkful][thinkful]
 +
 +
 +[codecademy]: https://www.codecademy.com/learn/learn-git
 +[contributors]: https://github.com/gohugoio/hugo/graphs/contributors
 +[docscontrib]: /contribute/documentation/
 +[forums]: https://discourse.gohugo.io
 +[gitbook]: https://git-scm.com/
 +[gobootcamp]: http://www.golangbootcamp.com/book/get_setup
 +[godl]: https://golang.org/dl/
 +[goinstall]: https://golang.org/doc/install
 +[gvm]: https://github.com/moovweb/gvm
 +[issues]: https://github.com/gohugoio/hugo/issues
 +[newissue]: https://github.com/gohugoio/hugo/issues/new
 +[releases]: /getting-started/
 +[setupgopath]: https://golang.org/doc/code.html#Workspaces
 +[thinkful]: https://www.thinkful.com/learn/github-pull-request-tutorial/
 +[trygit]: https://try.github.io/levels/1/challenges/1
index 2a95cf17783d0ae88bc333f9e287c9713ac492ea,0000000000000000000000000000000000000000..c2e06dcaf431ee9c8cacc9c98ad67ac75a465f95
mode 100644,000000..100644
--- /dev/null
@@@ -1,376 -1,0 +1,364 @@@
- ```git
 +---
 +title: Contribute to the Hugo Docs
 +linktitle: Documentation
 +description: Documentation is an integral part of any open source project. The Hugo docs are as much a work in progress as the source it attempts to cover.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [contribute]
 +#tags: [docs,documentation,community, contribute]
 +menu:
 +  docs:
 +    parent: "contribute"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +aliases: [/contribute/docs/]
 +toc: true
 +---
 +
 +## Create Your Fork
 +
 +It's best to make changes to the Hugo docs on your local machine to check for consistent visual styling. Make sure you've created a fork of [hugoDocs](https://github.com/gohugoio/hugoDocs) on GitHub and cloned the repository locally on your machine. For more information, you can see [GitHub's documentation on "forking"][ghforking] or follow along with [Hugo's development contribution guide][hugodev].
 +
 +You can then create a separate branch for your additions. Be sure to choose a descriptive branch name that best fits the type of content. The following is an example of a branch name you might use for adding a new website to the showcase:
 +
- {{% code file="archetypes/functions.md" %}}
- ```yaml
++```
 +git checkout -b jon-doe-showcase-addition
 +```
 +
 +## Add New Content
 +
 +The Hugo docs make heavy use of Hugo's [archetypes][] feature. All content sections in Hugo documentation have an assigned archetype.
 +
 +Adding new content to the Hugo docs follows the same pattern, regardless of the content section:
 +
 +```
 +hugo new <DOCS-SECTION>/<new-content-lowercase>.md
 +```
 +
 +{{% note "`title:`, `date:`, and Field Order" %}}
 +`title` and `date` fields are added automatically when using archetypes via `hugo new`. Do not be worried if the order of the new file's front matter fields on your local machine is different than that of the examples provided in the Hugo docs. This is a known issue [(#452)](https://github.com/gohugoio/hugo/issues/452).
 +{{% /note %}}
 +
 +### Add a New Function
 +
 +Once you have cloned the Hugo repository, you can create a new function via the following command. Keep the file name lowercase.
 +
 +```
 +hugo new functions/newfunction.md
 +```
 +
 +The archetype for `functions` according to the Hugo theme is as follows:
 +
- ```
- {{% /code %}}
++{{< code file="archetypes/functions.md" >}}
 +{{< readfile file="/themes/gohugoioTheme/archetypes/functions.md">}}
- {{% code file="archetypes/tutorials.md" %}}
- ```yaml
++{{< /code >}}
 +
 +#### New Function Required Fields
 +
 +Here is a review of the front matter fields automatically generated for you using `hugo new functions/*`:
 +
 +***`title`***
 +: this will be auto-populated in all lowercase when you use `hugo new` generator.
 +
 +***`linktitle`***
 +: the function's actual casing (e.g., `replaceRE` rather than `replacere`).
 +
 +***`description`***
 +: a brief description used to populate the [Functions Quick Reference](/functions/).
 +
 +`categories`
 +: currently auto-populated with 'functions` for future-proofing and portability reasons only; ignore this field.
 +
 +`tags`
 +: only if you think it will help end users find other related functions
 +
 +`signature`
 +: this is a signature/syntax definition for calling the function (e.g., `apply SEQUENCE FUNCTION [PARAM...]`).
 +
 +`workson`
 +: acceptable values include `lists`,`taxonomies`, `terms`, `groups`, and `files`.
 +
 +`hugoversion`
 +: the version of Hugo that will ship with this new function.
 +
 +`relatedfuncs`
 +: other [templating functions][] you feel are related to your new function to help fellow Hugo users.
 +
 +`{{.Content}}`
 +: an extended description of the new function; examples are not only welcomed but encouraged.
 +
 +In the body of your function, expand the short description used in the front matter. Include as many examples as possible, and leverage the Hugo docs [`code` shortcode](#adding-code-blocks). If you are unable to add examples but would like to solicit help from the Hugo community, add `needsexample: true` to your front matter.
 +
 +### Add a New Tutorial
 +
 +Once you have cloned the Hugo repository, you can create a new tutorial via the following command. Name the markdown file accordingly:
 +
 +```
 +hugo new tutorials/my-new-tutorial.md
 +```
 +
 +The archetype for the `tutorials` content type is as follows:
 +
- ```
- {{% /code %}}
++{{< code file="archetypes/tutorials.md" >}}
 +{{< readfile file="/themes/gohugoioTheme/archetypes/tutorials.md">}}
- ````html
- ```html
++{{< /code >}}
 +
 +## Add Code Blocks
 +
 +Code blocks are crucial for providing examples of Hugo's new features to end users of the Hugo docs. Whenever possible, create examples that you think Hugo users will be able to implement in their own projects.
 +
 +### Standard Syntax
 +
 +Across all pages on the Hugo docs, the typical triple-back-tick markdown syntax is used. If you do not want to take the extra time to implement the following code block shortcodes, please use standard GitHub-flavored markdown. The Hugo docs use a version of [highlight.js](https://highlightjs.org/) with a specific set of languages.
 +
 +Your options for languages are `xml`/`html`, `go`/`golang`, `md`/`markdown`/`mkd`, `handlebars`, `apache`, `toml`, `yaml`, `json`, `css`, `asciidoc`, `ruby`, `powershell`/`ps`, `scss`, `sh`/`zsh`/`bash`/`git`, `http`/`https`, and `javascript`/`js`.
 +
- ````
++```
++```
 +<h1>Hello world!</h1>
 +```
- ````markdown
++```
 +
 +### Code Block Shortcode
 +
 +The Hugo documentation comes with a very robust shortcode for adding interactive code blocks.
 +
 +{{% note %}}
 +With the `code` shortcodes, *you must include triple back ticks and a language declaration*. This was done by design so that the shortcode wrappers were easily added to legacy documentation and will be that much easier to remove if needed in future versions of the Hugo docs.
 +{{% /note %}}
 +
 +### `code`
 +
 +`code` is the Hugo docs shortcode you'll use most often. `code` requires has only one named parameter: `file`. Here is the pattern:
 +
- ```language
++```
 +{{%/* code file="smart/file/name/with/path.html" download="download.html" copy="true" */%}}
- ````
++```
 +A whole bunch of coding going on up in here!
 +```
 +{{%/* /code */%}}
- ````md
++```
 +
 +The following are the arguments passed into `code`:
 +
 +***`file`***
 +: the only *required* argument. `file` is needed for styling but also plays an important role in helping users create a mental model around Hugo's directory structure. Visually, this will be displayed as text in the top left of the code block.
 +
 +`download`
 +: if omitted, this will have no effect on the rendered shortcode. When a value is added to `download`, it's used as the filename for a downloadable version of the code block.
 +
 +`copy`
 +: a copy button is added automatically to all `code` shortcodes. If you want to keep the filename and styling of `code` but don't want to encourage readers to copy the code (e.g., a "Do not do" snippet in a tutorial), use `copy="false"`.
 +
 +#### Example `code` Input
 +
 +This example HTML code block tells Hugo users the following:
 +
 +1. This file *could* live in `layouts/_default`, as demonstrated by `layouts/_default/single.html` as the value for `file`.
 +2. This snippet is complete enough to be downloaded and implemented in a Hugo project, as demonstrated by `download="single.html"`.
 +
- ```html
++```
 +{{%/* code file="layouts/_default/single.html" download="single.html" */%}}
- ````
++```
 +{{ define "main" }}
 +<main>
 +    <article>
 +        <header>
 +            <h1>{{.Title}}</h1>
 +            {{with .Params.subtitle}}
 +            <span>{{.}}</span>
 +        </header>
 +        <div>
 +            {{.Content}}
 +        </div>
 +        <aside>
 +            {{.TableOfContents}}
 +        </aside>
 +    </article>
 +</main>
 +{{ end }}
 +```
 +{{%/* /code */%}}
- {{% code file="layouts/_default/single.html" download="single.html" %}}
- ```html
++```
 +
 +##### Example 'code' Display
 +
 +The output of this example will render to the Hugo docs as follows:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/single.html" download="single.html" >}}
 +{{ define "main" }}
 +<main>
 +    <article>
 +        <header>
 +            <h1>{{.Title}}</h1>
 +            {{with .Params.subtitle}}
 +            <span>{{.}}</span>
 +        </header>
 +        <div>
 +            {{.Content}}
 +        </div>
 +        <aside>
 +            {{.TableOfContents}}
 +        </aside>
 +    </article>
 +</main>
 +{{ end }}
- ````html
++{{< /code >}}
 +
 +<!-- #### Output Code Block
 +
 +The `output` shortcode is almost identical to the `code` shortcode but only takes and requires `file`. The purpose of `output` is to show *rendered* HTML and therefore almost always follows another basic code block *or* and instance of the `code` shortcode:
 +
- ```html
++```
 +{{%/* output file="post/my-first-post/index.html" */%}}
- ````
++```
 +<h1>This is my First Hugo Blog Post</h1>
 +<p>I am excited to be using Hugo.</p>
 +```
 +{{%/* /output */%}}
- ```html
++```
 +
 +The preceding `output` example will render as follows to the Hugo docs:
 +
 +{{% output file="post/my-first-post/index.html" %}}
- ```markdown
++```
 +<h1>This is my First Hugo Blog Post</h1>
 +<p>I am excited to be using Hugo.</p>
 +```
 +{{% /output %}} -->
 +
 +## Blockquotes
 +
 +Blockquotes can be added to the Hugo documentation using [typical Markdown blockquote syntax][bqsyntax]:
 +
- ```markdown
++```
 +> Without the threat of punishment, there is no joy in flight.
 +```
 +
 +The preceding blockquote will render as follows in the Hugo docs:
 +
 +> Without the threat of punishment, there is no joy in flight.
 +
 +However, you can add a quick and easy `<cite>` element (added on the client via JavaScript) by separating your main blockquote and the citation with a hyphen with a single space on each side:
 +
- {{% code file="note-with-heading.md" %}}
- ```markdown
++```
 +> Without the threat of punishment, there is no joy in flight. - [Kobo Abe](https://en.wikipedia.org/wiki/Kobo_Abe)
 +```
 +
 +Which will render as follows in the Hugo docs:
 +
 +> Without the threat of punishment, there is no joy in flight. - [Kobo Abe][abe]
 +
 +{{% note "Blockquotes `!=` Admonitions" %}}
 +Previous versions of Hugo documentation used blockquotes to draw attention to text. This is *not* the [intended semantic use of `<blockquote>`](http://html5doctor.com/cite-and-blockquote-reloaded/). Use blockquotes when quoting. To note or warn your user of specific information, use the admonition shortcodes that follow.
 +{{% /note %}}
 +
 +## Admonitions
 +
 +**Admonitions** are common in technical documentation. The most popular is that seen in [reStructuredText Directives][sourceforge]. From the SourceForge documentation:
 +
 +> Admonitions are specially marked "topics" that can appear anywhere an ordinary body element can. They contain arbitrary body elements. Typically, an admonition is rendered as an offset block in a document, sometimes outlined or shaded, with a title matching the admonition type. - [SourceForge][sourceforge]
 +
 +The Hugo docs contain three admonitions: `note`, `tip`, and `warning`.
 +
 +### `note` Admonition
 +
 +Use the `note` shortcode when you want to draw attention to information subtly. `note` is intended to be less of an interruption in content than is `warning`.
 +
 +#### Example `note` Input
 +
- ```
- {{% /code %}}
++{{< code file="note-with-heading.md" >}}
 +{{%/* note */%}}
 +Here is a piece of information I would like to draw your **attention** to.
 +{{%/* /note */%}}
- ```html
++{{< /code >}}
 +
 +#### Example `note` Output
 +
 +{{% output file="note-with-heading.html" %}}
- {{% code file="using-tip.md" %}}
- ```markdown
++```
 +{{% note %}}
 +Here is a piece of information I would like to draw your **attention** to.
 +{{% /note %}}
 +```
 +{{% /output %}}
 +
 +#### Example `note` Display
 +
 +{{% note %}}
 +Here is a piece of information I would like to draw your **attention** to.
 +{{% /note %}}
 +
 +### `tip` Admonition
 +
 +Use the `tip` shortcode when you want to give the reader advice. `tip`, like `note`, is intended to be less of an interruption in content than is `warning`.
 +
 +#### Example `tip` Input
 +
- ```
- {{% /code %}}
++{{< code file="using-tip.md" >}}
 +{{%/* tip */%}}
 +Here's a bit of advice to improve your productivity with Hugo.
 +{{%/* /tip */%}}
- ```html
++{{< /code >}}
 +
 +#### Example `tip` Output
 +
 +{{% output file="tip-output.html" %}}
- {{% code file="warning-admonition-input.md" %}}
- ```markdown
++```
 +{{% tip %}}
 +Here's a bit of advice to improve your productivity with Hugo.
 +{{% /tip %}}
 +```
 +{{% /output %}}
 +
 +#### Example `tip` Display
 +
 +{{% tip %}}
 +Here's a bit of advice to improve your productivity with Hugo.
 +{{% /tip %}}
 +
 +### `warning` Admonition
 +
 +Use the `warning` shortcode when you want to draw the user's attention to something important. A good usage example is for articulating breaking changes in Hugo versions, known bugs, or templating "gotchas."
 +
 +#### Example `warning` Input
 +
- ```
- {{% /code %}}
++{{< code file="warning-admonition-input.md" >}}
 +{{%/* warning */%}}
 +This is a warning, which should be reserved for *important* information like breaking changes.
 +{{%/* /warning */%}}
- ```html
++{{< /code >}}
 +
 +#### Example `warning` Output
 +
 +{{% output file="warning-admonition-output.html" %}}
++```
 +{{% warning %}}
 +This is a warning, which should be reserved for *important* information like breaking changes.
 +{{% /warning %}}
 +```
 +{{% /output %}}
 +
 +#### Example `warning` Display
 +
 +{{% warning %}}
 +This is a warning, which should be reserved for *important* information like breaking changes.
 +{{% /warning %}}
 +
 +{{% note "Pull Requests and Branches" %}}
 +Similar to [contributing to Hugo development](/contribute/development/), the Hugo team expects you to create a separate branch/fork when you make your contributions to the Hugo docs.
 +{{% /note %}}
 +
 +[abe]: https://en.wikipedia.org/wiki/Kobo_Abe
 +[archetypes]: /content-management/archetypes/
 +[bqsyntax]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#blockquotes
 +[charcount]: http://www.lettercount.com/
 +[`docs/static/images/showcase/`]: https://github.com/gohugoio/hugo/tree/master/docs/static/images/showcase/
 +[ghforking]: https://help.github.com/articles/fork-a-repo/
 +[hugodev]: /contribute/development/
 +[shortcodeparams]: content-management/shortcodes/#shortcodes-without-markdown
 +[sourceforge]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#admonitions
 +[templating function]: /functions/
index a4cb865edcea3a00649233c02037a06525ccdd61,0000000000000000000000000000000000000000..dc8bddc3a263c370f292c38bac79be5b6f200d92
mode 100644,000000..100644
--- /dev/null
@@@ -1,154 -1,0 +1,150 @@@
- {{% code file="theme.toml" download="theme.toml" %}}
- ```toml
 +---
 +title: Add Your Hugo Theme to the Showcase
 +linktitle: Themes
 +description: If you've built a Hugo theme and want to contribute back to the Hugo Community, add your theme to the Hugo Showcase.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-27
 +categories: [contribute]
 +#tags: [contribute,themes,design]
 +authors: [digitalcraftsman]
 +menu:
 +  docs:
 +    parent: "contribute"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +aliases: [/contribute/theme/]
 +wip: true
 +toc: true
 +---
 +
 +A collection of all themes created by the Hugo community, including screenshots and demos, can be found at <https://themes.gohugo.io>. Every theme in this list will automatically be added to the theme site. Theme updates aren't scheduled but usually happen at least once a week.
 +
 +## tl;dr
 +
 +1. Create your theme using `hugo new theme <THEMENAME>`;
 +2. Test your theme against <https://github.com/spf13/HugoBasicExample> \*
 +3. Add a `theme.toml` file to the root of the theme with all required metadata
 +4. Add a descriptive `README.md` to the root of the theme source
 +5. Add `/images/screenshot.png` and `/images/tn.png`
 +
 +\* If your theme doesn't fit into the `Hugo Basic Example` site, we encourage theme authors to supply a self-contained Hugo site in `/exampleSite`.
 +
 +{{% note %}}
 +The folder name here---`exampleSite`---is important, as this folder will be picked up and used by the script that generates the Hugo Theme Site. It mirrors the root directory of a Hugo website and allows you to add custom content, assets, and a `config` file with preset values.
 +{{% /note %}}
 +
 +See the [Hugo Artist theme's exampleSite][artistexample] for a good example.
 +
 +{{% note %}}
 +Please make your example site's content is as neutral as possible. We hope this goes without saying.
 +{{% /note %}}
 +
 +## Theme Requirements
 +
 +In order to add your theme to the Hugo Themes Showcase, the following requirements need to be met:
 +
 +1. `theme.toml` with all required fields
 +2. Images for thumbnail and screenshot
 +3. A good README file instructions for users
 +4. Addition to the hugoThemes GitHub repository
 +
 +### Add Your Theme to the Repo
 +
 +The easiest way to add your theme is to [open up a new issue in the theme repository][themeissuenew] with a link to the theme's repository on GitHub.
 +
 +### Create a `theme.toml` File
 +
 +`theme.toml` contains metadata about the theme and its creator and should be created automatically when running the `hugo new theme`. The auto-generated file is provided here as well for easy downloading:
 +
- homepage = "http://yoursite.com/"
++{{< code file="theme.toml" download="theme.toml" >}}
 +name = ""
 +license = "MIT"
 +licenselink = "https://github.com/<YOURNAME>/<YOURTHEME>/blob/master/LICENSE.md"
 +description = ""
- ```
- {{% /code %}}
++homepage = "http://example.com/"
 +tags = []
 +features = []
 +min_version = 0.19
 +
 +[author]
 +  name = ""
 +  homepage = ""
 +
 +# If porting an existing theme
 +[original]
 +  name = ""
 +  homepage = ""
 +  repo = ""
- ```toml
++{{< /code >}}
 +
 +The following fields are required:
 +
- {{% code file="README.md" download="README.md" %}}
- ```markdown
++```
 +name = "Hyde"
 +license = "MIT"
 +licenselink = "https://github.com/spf13/hyde/blob/master/LICENSE.md"
 +description = "An elegant open source and mobile first theme"
 +homepage = "http://siteforthistheme.com/"
 +tags = ["blog", "company"]
 +features = ["blog"]
 +min_version = 0.13
 +
 +[author]
 +    name = "spf13"
 +    homepage = "http://spf13.com/"
 +
 +# If porting an existing theme
 +[original]
 +    author = "mdo"
 +    homepage = "http://hyde.getpoole.com/"
 +    repo = "https://www.github.com/mdo/hyde"
 +```
 +
 +{{% note %}}
 +1. This is different from the `theme.toml` file created by `hugo new theme` in Hugo versions before v0.14.
 +2. Only `theme.toml` is accepted; ie. not `theme.yaml` andnot `theme.json`.
 +{{% /note %}}
 +
 +### Images
 +
 +Screenshots are used for previews in the Hugo Theme Gallery. Make sure that they have the right dimensions:
 +
 +* Thumbnail should be 900px × 600px
 +* Screenshot should be 1500px × 1000px
 +* Media must be located in
 +    * <THEMEDIR>/images/screenshot.png</code>
 +    * <THEMEDIR>/images/tn.png</code>
 +
 +Additional media may be provided in the same directory.
 +
 +### Create a README File
 +
 +Your theme's README file should be written in markdown and saved at the root of your theme's directory structure. Your `README.md` serves as
 +
 +1. Content for your theme's details page at <https://themes.gohugo.io>
 +2. General information about the theme in your GitHub repository (i.e., it's usual purpose)
 +
 +#### Example `README.md`
 +
 +You can download the following `README.md` as an outline:
 +
- ```
- {{% /code %}}
++{{< code file="README.md" download="README.md" >}}
 +
 +# Theme Title
 +
 +**Need input from @digitalcraftsman on what could be added to this file.**
 +
 +
 +
 +
++{{< /code >}}
 +
 +{{% note "Screenshots in your `README.md`"%}}
 +If you add screenshots to the README, please make use of absolute file paths instead of relative ones like `/images/screenshot.png`. Relative paths work great on GitHub but they don't correspond to the directory structure of [themes.gohugo.io](http://themes.gohugo.io/). Therefore, browsers will not be able to display screenshots on the theme site under the given (relative) path.
 +{{% /note %}}
 +
 +[artistexample]: https://github.com/digitalcraftsman/hugo-artists-theme/tree/master/exampleSite
 +[themeissuenew]: https://github.com/gohugoio/hugoThemes/issues/new
index 8d659ce16f2a2a5afbf54b9cad151efc630b113b,0000000000000000000000000000000000000000..b553d1845c78ef08cea1a2e8e3d81b573ef3e799
mode 100644,000000..100644
--- /dev/null
@@@ -1,67 -1,0 +1,65 @@@
- {{% code file="grab-top-two-tags.html" %}}
- ```html
 +---
 +title: .GetPage
 +description: "Gets a `Page` of a given `Kind` and `path`."
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [sections,lists,indexes]
 +signature: [".GetPage TYPE PATH"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +Every `Page` has a `Kind` attribute that shows what kind of page it is. While this attribute can be used to list pages of a certain `kind` using `where`, often it can be useful to fetch a single page by its path.
 +
 +`.GetPage` looks up a page of a given `Kind` and `path`.
 +
 +```
 +{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}
 +```
 +
 +This method wil return `nil` when no page could be found, so the above will not print anything if the blog section isn't found.
 +
 +For a regular page:
 +
 +```
 +{{ with .Site.GetPage "page" "blog" "my-post.md" }}{{ .Title }}{{ end }}
 +```
 +
 +Note that the path can also be supplied like this:
 +
 +```
 +{{ with .Site.GetPage "page" "blog/my-post.md" }}{{ .Title }}{{ end }}
 +```
 +
 +The valid page kinds are: *page, home, section, taxonomy and taxonomyTerm.*
 +
 +## `.GetPage` Example
 +
 +This code snippet---in the form of a [partial template][partials]---allows you to do the following:
 +
 +1. Grab the index object of your `tags` [taxonomy][].
 +2. Assign this object to a variable, `$t`
 +3. Sort the terms associated with the taxonomy by popularity.
 +4. Grab the top two most popular terms in the taxonomy (i.e., the two most popular tags assigned to content.
 +
- ```
- {{% /code %}}
++{{< code file="grab-top-two-tags.html" >}}
 +<ul class="most-popular-tags">
 +{{ $t := $.Site.GetPage "taxonomyTerm" "tags" }}
 +{{ range first 2 $t.Data.Terms.ByCount }}
 +    <li>{{.}}</li>
 +{{ end }}
 +</ul>
++{{< /code >}}
 +
 +
 +[partials]: /templates/partials/
 +[taxonomy]: /content-management/taxonomies/
index 982508cadefc1f33e1d79c16fdf77ee62440d148,0000000000000000000000000000000000000000..41903c61d14b8d155fb45492073fde5caf65dda3
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- So for a site  `baseURL` set to `http://yoursite.com/hugo/` and the current language is `en`:
 +---
 +title: absLangURL
 +description: Adds the absolute URL with correct language prefix according to site configuration for multilingual.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [multilingual,i18n,urls]
 +signature: ["absLangURL INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [relLangURL]
 +deprecated: false
 +aliases: []
 +---
 +
 +Both `absLangURL` and [`relLangURL`](/functions/rellangurl/) are similar to their [`absURL`](/functions/absurl/) and [`relURL`](/functions/relurl) relatives but will add the correct language prefix when the site is configured with more than one language.
 +
- ```golang
- {{ "blog/" | absLangURL }} → "http://yoursite.com/hugo/en/blog/"
++So for a site  `baseURL` set to `http://example.com/hugo/` and the current language is `en`:
 +
++```
++{{ "blog/" | absLangURL }} → "http://example.com/hugo/en/blog/"
 +{{ "blog/" | relLangURL }} → "/hugo/en/blog/"
 +```
index 9c08ebf99f36c79b24c5ffb6eca3bf7526847263,0000000000000000000000000000000000000000..40cc9111c5f43f9eea1de66b5b8f261263a06265
mode 100644,000000..100644
--- /dev/null
@@@ -1,53 -1,0 +1,51 @@@
- Both `absURL` and `relURL` consider the configured value of `baseURL` in your site's [`config` file][configuration]. Given a `baseURL` set to `http://yoursite.com/hugo/`:
 +---
 +title: absURL
 +description: Creates an absolute URL based on the configured baseURL.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [urls]
 +signature: ["absURL INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [relURL]
 +deprecated: false
 +aliases: []
 +---
 +
- ```golang
- {{ "mystyle.css" | absURL }} → "http://yoursite.com/hugo/mystyle.css"
++Both `absURL` and `relURL` consider the configured value of `baseURL` in your site's [`config` file][configuration]. Given a `baseURL` set to `http://example.com/hugo/`:
 +
- {{% code file="layouts/partials/schemaorg-metadata.html" download="schemaorg-metadata.html" %}}
- ```html
++```
++{{ "mystyle.css" | absURL }} → "http://example.com/hugo/mystyle.css"
 +{{ "mystyle.css" | relURL }} → "/hugo/mystyle.css"
 +{{ "http://gohugo.io/" | relURL }} →  "http://gohugo.io/"
 +{{ "http://gohugo.io/" | absURL }} →  "http://gohugo.io/"
 +```
 +
 +The last two examples may look strange but can be very useful. For example, the following shows how to use `absURL` in [JSON-LD structured data (SEO)][jsonld], where some of your images for a piece of content may or may not be hosted locally:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/schemaorg-metadata.html" download="schemaorg-metadata.html" >}}
 +<script type="application/ld+json">
 +{
 +    "@context" : "http://schema.org",
 +    "@type" : "BlogPosting",
 +    "image" : {{ apply .Params.images "absURL" "." }}
 +}
 +</script>
++{{< /code >}}
 +
 +The above uses the [apply function][] and also exposes how the Go template parser JSON-encodes objects inside `<script>` tags. See [the safeJS template function][safejs] for examples of how to tell Hugo not to escape strings inside of such tags.
 +
 +{{% note "Ending Slash" %}}
 +`absURL` and `relURL` are smart about missing slashes, but they will *not* add a closing slash to a URL if it is not present.
 +{{% /note %}}
 +
 +[apply function]: /functions/apply/
 +[configuration]: /getting-started/configuration/
 +[jsonld]: https://developers.google.com/search/docs/guides/intro-structured-data
 +[safejs]: /functions/safejs
index 40fefc872f91f0992ea26a110e759117491c928b,0000000000000000000000000000000000000000..8e16fc0175cfaf57eed601d9f22b4c36e4219563
mode 100644,000000..100644
--- /dev/null
@@@ -1,54 -1,0 +1,52 @@@
- ```toml
 +---
 +title: .AddDate
 +description: Returns the time corresponding to adding the given number of years, months, and days passed to the function.
 +godocref: https://golang.org/pkg/time/#Time.AddDate
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [dates,time]
 +signature: [".AddDate YEARS MONTHS DAYS"]
 +workson: [times]
 +hugoversion:
 +relatedfuncs: [now]
 +deprecated: false
 +aliases: []
 +---
 +
 +
 +The `AddDate` function takes three arguments in logical order of `years`, `months`, and `days`.
 +
 +## Example: Randomized Tweets from the Last 2 Years
 +
 +Let's assume you have a file at `data/tweets.toml` that contains a list of Tweets to display on your site's homepage. The file is filled with `[[tweet]]` blocks; e.g.---
 +
- {{% code file="partials/templates/random-tweets.html" download="tweets.html" %}}
- ```html
++```
 +[[tweet]]
 +name = "Steve Francia"
 +twitter_handle = "@spf13"
 +quote = "I'm creator of Hugo. #metadocreference"
 +link = "https://twitter.com/spf13"
 +date = "2017-01-07T00:00:00Z"
 +```
 +
 +Let's assume you want to grab Tweets from the last two years and present them in a random order. In conjunction with the [`where`](/functions/where/) and [`now`](/functions/now/) functions, you can limit our range to the last two years via `now.AddDate -2 0 0`, which represents a point in time 2 years, 0 days, and 0 hours before the time of your last site build.
 +
- ```
- {{% /code %}}
++{{< code file="partials/templates/random-tweets.html" download="tweets.html" >}}
 +{{ range where $.Site.Data.tweets.tweet "date" "ge" (now.AddDate -2 0 0) | shuffle }}
 +    <div class="item">
 +        <blockquote>
 +            <p>
 +            {{ .quote | safeHTML }}
 +            </p>
 +            &mdash; {{ .name }} ({{ .twitter_handle }}) <a href="{{ .link }}">
 +                {{ dateFormat "January 2, 2006" .date }}
 +            </a>
 +        </blockquote>
 +    </div>
 +{{ end }}
++{{< /code >}}
index 13e7730f6e761e23fecfd20138ec2174489d4fbf,0000000000000000000000000000000000000000..5da2562b4b08ab1167625fa4f5029bd18607df8f
mode 100644,000000..100644
--- /dev/null
@@@ -1,68 -1,0 +1,66 @@@
- ```html
 +---
 +title: after
 +description: "`after` slices an array to only the items after the <em>N</em>th item."
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [iteration]
 +signature: ["after INDEX COLLECTION"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [last,first,seq]
 +deprecated: false
 +aliases: []
 +---
 +
 +The following shows `after` being used in conjunction with the [`slice` function][slice]:
 +
- You can use `after` in combination with the [`first` function][] and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `yoursite.com/articles`. You have 10 articles, but you want your templating for the [list/section page][] to show only two rows:
++```
 +{{ $data := slice "one" "two" "three" "four" }}
 +{{ range after 2 $data }}
 +    {{ . }}
 +{{ end }}
 +→ ["three", "four"]
 +```
 +
 +## Example of `after` with `first`: 2nd&ndash;4th Most Recent Articles
 +
- {{% code file="layouts/section/articles.html" download="articles.html" %}}
- ```html
++You can use `after` in combination with the [`first` function][] and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `example.com/articles`. You have 10 articles, but you want your templating for the [list/section page][] to show only two rows:
 +
 +1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter).
 +2. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/section/articles.html" download="articles.html" >}}
 +{{ define "main" }}
 +<section class="row featured-article">
 +    <h2>Featured Article</h2>
 +    {{ range first 1 .Data.Pages.ByPublishDate.Reverse }}
 +     <header>
 +        <h3><a href="{{.Permalink}}">{{.Title}}</a></h3>
 +    </header>
 +    <p>{{.Description}}</p>
 +    {{ end }}
 +</section>
 +<div class="row recent-articles">
 +    <h2>Recent Articles</h2>
 +    {{ range first 3 (after 1 .Data.Pages.ByPublishDate.Reverse) }}
 +        <section class="recent-article">
 +            <header>
 +                <h3><a href="{{.Permalink}}">{{.Title}}</a></h3>
 +            </header>
 +            <p>{{.Description}}</p>
 +        </section>
 +    {{ end }}
 +</div>
 +{{ end }}
++{{< /code >}}
 +
 +[`first` function]: /functions/first/
 +[list/section page]: /templates/section-templates/
 +[lists]: /lists/
 +[slice]: /functions/slice/
index eb041f143d1c81abaf749bbf566eca15c39e1cc3,0000000000000000000000000000000000000000..3a188606d2365ce29575218ef6e7dc6b8b28e15c
mode 100644,000000..100644
--- /dev/null
@@@ -1,125 -1,0 +1,119 @@@
- ```toml
 +---
 +title: apply
 +description: Given a map, array, or slice, `apply` returns a new slice with a function applied over it.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [advanced]
 +signature: ["apply COLLETION FUNCTION [PARAM...]"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
 +{{< todo >}}
 +<!-- POTENTIAL NEW CONTENT: see apply/sequence discussion: https://discourse.gohugo.io/t/apply-printf-on-a-sequence/5722; -->
 +{{< /todo >}}
 +
 +`apply` expects at least three parameters, depending on the function being applied.
 +
 +1. The first parameter is the sequence to operate on
 +2. The second parameter is the name of the function as a string, which must be the name of a valid [Hugo function][functions].
 +3. After that, the parameters to the applied function are provided, with the string `"."` standing in for each element of the sequence the function is to be applied against.
 +
 +Here is an example of a content file with `name:` as a front matter field:
 +
- ```golang
++```
 ++++
 +names: [ "Derek Perkins", "Joe Bergevin", "Tanner Linsley" ]
 ++++
 +```
 +
 +You can then use `apply` as follows:
 +
- ```golang
++```
 +{{ apply .Params.names "urlize" "." }}
 +```
 +
 +Which will result as follows:
 +
 +```
 +"derek-perkins", "joe-bergevin", "tanner-linsley"
 +```
 +
 +This is *roughly* equivalent to using the following with [range][]
 +
- {{% code file="layouts/partial/post-tag-list.html" copy="false" %}}
- ```html
++```
 +{{ range .Params.names }}{{ . | urlize }}{{ end }}
 +```
 +
 +However, it isn’t possible to provide the output of a range to the [`delimit` function][delimit], so you need to `apply` it.
 +
 +If you have `post-tag-list.html` and `post-tag-link.html` as [partials][], you *could* use the following snippets, respectively:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partial/post-tag-list.html" copy="false" >}}
 +{{ with .Params.tags }}
 +<div class="tags-list">
 +  Tags:
 +  {{ $len := len . }}
 +  {{ if eq $len 1 }}
 +    {{ partial "post/tag/link" (index . 0) }}
 +  {{ else }}
 +    {{ $last := sub $len 1 }}
 +    {{ range first $last . }}
 +      {{ partial "post/tag/link" . }},
 +    {{ end }}
 +    {{ partial "post/tag/link" (index . $last) }}
 +  {{ end }}
 +</div>
 +{{ end }}
- {{% code file="layouts/partial/post-tag-link.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partial/post-tag-link.html" copy="false" >}}
 +<a class="post-tag post-tag-{{ . | urlize }}" href="/tags/{{ . | urlize }}">{{ . }}</a>
- ```html
++{{< /code >}}
 +
 +This works, but the complexity of `post-tag-list.html` is fairly high. The Hugo template needs to perform special behavior for the case where there’s only one tag, and it has to treat the last tag as special. Additionally, the tag list will be rendered something like `Tags: tag1 , tag2 , tag3` because of the way that the HTML is generated and then interpreted by a browser.
 +
 +This first version of `layouts/partials/post-tag-list.html` separates all of the operations for ease of reading. The combined and DRYer version is shown next:
 +
- {{% code file="layouts/partials/post-tag-list.html" download="post-tag-list.html" %}}
- ```html
++```
 +{{ with .Params.tags }}
 +    <div class="tags-list">
 +      Tags:
 +      {{ $sort := sort . }}
 +      {{ $links := apply $sort "partial" "post-tag-link" "." }}
 +      {{ $clean := apply $links "chomp" "." }}
 +      {{ delimit $clean ", " }}
 +    </div>
 +{{ end }}
 +```
 +
 +Now in the completed version, you can sort the tags, convert the tags to links with `layouts/partials/post-tag-link.html`, [chomp][] off stray newlines, and join the tags together in a delimited list for presentation. Here is an even DRYer version of the preceding example:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/post-tag-list.html" download="post-tag-list.html" >}}
 +    {{ with .Params.tags }}
 +    <div class="tags-list">
 +      Tags:
 +      {{ delimit (apply (apply (sort .) "partial" "post-tag-link" ".") "chomp" ".") ", " }}
 +    </div>
 +    {{ end }}
++{{< /code >}}
 +
 +{{% note %}}
 +`apply` does not work when receiving the sequence as an argument through a pipeline.
 +{{% /note %}}
 +
 +[chomp]: /functions/chomp/ "See documentation for the chomp function"
 +[delimit]: /functions/delimit/ "See documentation for the delimit function"
 +[functions]: /functions/ "See the full list of Hugo functions to see what can be passed as an argument to the apply function."
 +[partials]: /templates/partials/
 +[range]: /functions/range/ "Learn the importance of the range function, a fundamental keyword in both Hugo templates and the Go programming language."
index 404366a4d074550297b97f7e3ea80fdc69f238fb,0000000000000000000000000000000000000000..83a10c59711c1f042172795e549ab049da36e465
mode 100644,000000..100644
--- /dev/null
@@@ -1,55 -1,0 +1,53 @@@
- {{% code file="base64-input.html" %}}
- ```html
 +---
 +title: base64
 +description: "`base64Encode` and `base64Decode` let you easily decode content with a base64 encoding and vice versa through pipes."
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: []
 +relatedfuncs: []
 +signature: ["base64Decode INPUT", "base64Encode INPUT"]
 +workson: []
 +hugoversion:
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
 +An example:
 +
- ```
- {{% /code %}}
++{{< code file="base64-input.html" >}}
 +<p>Hello world = {{ "Hello world" | base64Encode }}</p>
 +<p>SGVsbG8gd29ybGQ = {{ "SGVsbG8gd29ybGQ=" | base64Decode }}</p>
- ```html
++{{< /code >}}
 +
 +{{% output file="base-64-output.html" %}}
- ```golang
++```
 +<p>Hello world = SGVsbG8gd29ybGQ=</p>
 +<p>SGVsbG8gd29ybGQ = Hello world</p>
 +```
 +{{% /output %}}
 +
 +You can also pass other data types as arguments to the template function which tries to convert them. The following will convert *42* from an integer to a string because both `base64Encode` and `base64Decode` always return a string.
 +
 +```
 +{{ 42 | base64Encode | base64Decode }}
 +=> "42" rather than 42
 +```
 +
 +## `base64` with APIs
 +
 +Using base64 to decode and encode becomes really powerful if we have to handle
 +responses from APIs.
 +
++```
 +{{ $resp := getJSON "https://api.github.com/repos/gohugoio/hugo/readme"  }}
 +{{ $resp.content | base64Decode | markdownify }}
 +```
 +
 +The response of the GitHub API contains the base64-encoded version of the [README.md](https://github.com/gohugoio/hugo/blob/master/README.md) in the Hugo repository. Now we can decode it and parse the Markdown. The final output will look similar to the rendered version on GitHub.
index b8e6acee8a8d37a5c5e824f45242250a80b5ff58,0000000000000000000000000000000000000000..678bc43405950bf47744f9c20b458972f65e2f1e
mode 100644,000000..100644
--- /dev/null
@@@ -1,24 -1,0 +1,24 @@@
- ```golang
 +---
 +title: chomp
 +description: Removes any trailing newline characters.
 +godocref: Removes any trailing newline characters.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [trim]
 +signature: ["chomp INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [truncate]
 +deprecated: false
 +---
 +
 +Useful in a pipeline to remove newlines added by other processing (e.g., [`markdownify`](/functions/markdownify/)).
 +
++```
 +{{chomp "<p>Blockhead</p>\n"}} → "<p>Blockhead</p>"
 +```
index f25dd39339c5f975ecf83a4c1056fb7502609270,0000000000000000000000000000000000000000..bcb136f8662264d8cee38d9b17ac86af2c642118
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- ```html
 +---
 +title: countrunes
 +description: Determines the number of runes in a string excluding any whitespace.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [counting, word count]
 +signature: ["countrunes INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: [/functions/countrunes/,/functions/countwords/]
 +---
 +
 +In contrast with `countwords` function, which counts every word in a string, the `countrunes` function determines the number of runes in the content and excludes any whitespace. This has specific utility if you are dealing with CJK-like languages.
 +
++```
 +{{ "Hello, 世界" | countrunes }}
 +<!-- outputs a content length of 8 runes. -->
 +```
 +
 +[pagevars]: /variables/page/
index ccca847eae46972e060ac72288712a61ac0e03da,0000000000000000000000000000000000000000..5eba9ea7c2796e532f60e5be158f192ea794954b
mode 100644,000000..100644
--- /dev/null
@@@ -1,29 -1,0 +1,29 @@@
- ```html
 +---
 +title: countwords
 +description: Counts the number of words in a string.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [counting, word count]
 +signature: ["countwords INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [countrunes]
 +deprecated: false
 +aliases: [/functions/countrunes/,/functions/countwords/]
 +---
 +
 +The template function works similar to the [.WordCount page variable][pagevars].
 +
++```
 +{{ "Hugo is a static site generator." | countwords }}
 +<!-- outputs a content length of 6 words.  -->
 +```
 +
 +
 +[pagevars]: /variables/page/
index f89f68874ed3f262baf37db7ef7c466ffe021005,0000000000000000000000000000000000000000..873138cffe9137fef30be75bf957ec5e49504737
mode 100644,000000..100644
--- /dev/null
@@@ -1,105 -1,0 +1,95 @@@
- {{% code file="content/posts/default-function-example.md" %}}
- ```yaml
 +---
 +title: default
 +description: Allows setting a default value that can be returned if a first value is not set.
 +qref: "Returns a default value if a value is not set when checked."
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [defaults]
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +toc:
 +signature: ["default DEFAULT INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: [/functions/default/]
 +needsexamples: false
 +---
 +
 +`default` checks whether a given value is set and returns a default value if it is not. *Set* in this context means different things depending on date type:
 +
 +* non-zero for numeric types and times
 +* non-zero length for strings, arrays, slices, and maps
 +* any boolean or struct value
 +* non-nil for any other types
 +
 +`default` function examples reference the following content page:
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/default-function-example.md" >}}
 +---
 +title: Sane Defaults
 +seo_title:
 +date: 2017-02-18
 +font:
 +oldparam: The default function helps make your templating DRYer.
 +newparam:
 +---
- ```golang
++{{< /code >}}
 +
 +`default` can be written in more than one way:
 +
- {{% code file="variable-as-default-value.html" nocopy="true" %}}
- ```golang
++```
 +{{ index .Params "font" | default "Roboto" }}
 +{{ default "Roboto" (index .Params "font") }}
 +```
 +
 +Both of the above `default` function calls return `Roboto`.
 +
 +A `default` value, however, does not need to be hard coded like the previous example. The `default` value can be a variable or pulled directly from the front matter using dot notation:
 +
- ```
- {{% /code %}}
++{{< code file="variable-as-default-value.html" nocopy="true" >}}
 +{{$old := .Params.oldparam }}
 +<p>{{ .Params.newparam | default $old }}</p>
- {{% code file="dot-notation-default-value.html" %}}
- ```golang
++{{< /code >}}
 +
 +Which would return:
 +
 +```
 +<p>The default function helps make your templating DRYer.</p>
 +```
 +
 +And then using dot notation
 +
- ```
- {{% /code %}}
++{{< code file="dot-notation-default-value.html" >}}
 +<title>{{ .Params.seo_title | default .Title }}</title>
- ```html
++{{< /code >}}
 +
 +Which would return
 +
 +{{% output file="dot-notation-default-return-value.html" %}}
- {{% code file="if-instead-of-default.html" nocopy="true" %}}
- ```golang
++```
 +<title>Sane Defaults</title>
 +```
 +{{% /output %}}
 +
 +The following have equivalent return values but are far less terse. This demonstrates the utility of `default`:
 +
 +Using `if`:
 +
- ```
- {{% /code %}}
++{{< code file="if-instead-of-default.html" nocopy="true" >}}
 +<title>{{if .Params.seo_title}}{{.Params.seo_title}}{{else}}{{.Title}}{{end}}</title>
 +=> Sane Defaults
- {{% code file="with-instead-of-default.html" nocopy="true" %}}
- ```golang
++{{< /code >}}
 +
 +Using `with`:
 +
- ```
- {{% /code %}}
++{{< code file="with-instead-of-default.html" nocopy="true" >}}
 +<title>{{with .Params.seo_title}}{{.}}{{else}}{{.Title}}{{end}}</title>
 +=> Sane Defaults
++{{< /code >}}
index e6e3362a9f509daa9139e4b712428a506add5587,0000000000000000000000000000000000000000..5573ee208dc832c4001ba50eed50b78ab9b55346
mode 100644,000000..100644
--- /dev/null
@@@ -1,74 -1,0 +1,68 @@@
- {{% code file="delimit-example-front-matter.toml" nocopy="true" %}}
- ```toml
 +---
 +title: delimit
 +description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter.
 +godocref:
 +workson: []
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [iteration]
 +toc: false
 +signature: ["delimit COLLECTION DELIMIT LAST"]
 +workson: [lists,taxonomies,terms]
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
 +`delimit` called in your template takes the form of
 +
 +```
 +{{ delimit array/slice/map delimiter optionallastdelimiter}}
 +```
 +
 +`delimit` loops through any array, slice, or map and returns a string of all the values separated by a delimiter, the second argument in the function call. There is an optional third parameter that lets you choose a different delimiter to go between the last two values in the loop.
 +
 +To maintain a consistent output order, maps will be sorted by keys and only a slice of the values will be returned.
 +
 +The examples of `delimit` that follow all use the same front matter:
 +
- ```
- {{% /code %}}
++{{< code file="delimit-example-front-matter.toml" nocopy="true" >}}
 ++++
 +title: I love Delimit
 +#tags: [ "tag1", "tag2", "tag3" ]
 ++++
- {{% code file="delimit-page-tags-input.html" %}}
- ```html
++{{< /code >}}
 +
- ```
- {{% /code %}}
++{{< code file="delimit-page-tags-input.html" >}}
 +<p>Tags: {{ delimit .Params.tags ", " }}</p>
- ```html
++{{< /code >}}
 +
 +{{% output file="delimit-page-tags-output.html" %}}
- {{% code file="delimit-page-tags-final-and-input.html" %}}
- ```golang
++```
 +<p>Tags: tag1, tag2, tag3</p>
 +```
 +{{% /output %}}
 +
 +Here is the same example but with the optional "last" delimiter:
 +
- ```
- {{% /code %}}
++{{< code file="delimit-page-tags-final-and-input.html" >}}
 +Tags: {{ delimit .Params.tags ", " ", and " }}
- ```html
++{{< /code >}}
 +
 +{{% output file="delimit-page-tags-final-and-output.html" %}}
++```
 +<p>Tags: tag1, tag2, and tag3</p>
 +```
 +{{% /output %}}
 +
 +
 +[lists]: /templates/lists/
 +[taxonomies]: /templates/taxonomy-templates/#taxonomy-list-templates
 +[terms]: /templates/taxonomy-templates/#terms-list-templates
index 3c2086fea2ff341b4ad31a9dd9537191c0721fce,0000000000000000000000000000000000000000..2ac15921b7067b672c84b06cb618f4058f32bccf
mode 100644,000000..100644
--- /dev/null
@@@ -1,47 -1,0 +1,43 @@@
- {{% code file="layouts/partials/svgs/external-links.svg" download="external-links.svg" %}}
- ```xml
 +---
 +title: dict
 +description: Creates a dictionary from a list of key and value pairs.
 +godocref:
 +workson: []
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-26
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [dictionary]
 +signature: ["dict KEY VALUE [KEY VALUE]..."]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +`dict` is especially useful for passing more than one value to a partial template.
 +
 +
 +## Example: `dict` with Embedded SVGs
 +
 +The partial below creates a SVG and expects `fill` `height` and `width` from the caller:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/svgs/external-links.svg" download="external-links.svg" >}}
 +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="{{ .fill }}" width="{{ .size }}" height="{{ .size }}" viewBox="0 0 32 32" aria-label="External Link">
 +<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
 +</svg>
- {{% code file="layouts/_default/list.html" %}}
- ```html
++{{< /code >}}
 +
 +These values can be stored in one object with `dict` and passed to the partial:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/list.html" >}}
 +{{ partial "svg/link-ext.svg" (dict "fill" "#01589B" "size" 10 "width" 20 ) }}
++{{< /code >}}
 +
 +
 +
 +[partials]: /templates/partials/
index aa1b6d38d2666ff60541f87dbcdeccc603e3576f,0000000000000000000000000000000000000000..c92da1531359a03c356ce8e7425627e5ec42b8f6
mode 100644,000000..100644
--- /dev/null
@@@ -1,47 -1,0 +1,47 @@@
- ```golang
 +---
 +title: findRE
 +description: Returns a list of strings that match the regular expression.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [regex]
 +signature: ["findRE PATTERN INPUT [LIMIT]"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +
 +By default all matches will be included. The number of matches can be limitted with an optional third parameter.
 +
 +The example below returns a list of all second level headers (`<h2>`) in the content:
 +
 +```
 +{{ findRE "<h2.*?>(.|\n)*?</h2>" .Content }}
 +```
 +
 +You can limit the number of matches in the list with a third parameter. The following example shows how to limit the returned value to just one match (or none, if there are no matched substrings):
 +
++```
 +{{ findRE "<h2.*?>(.|\n)*?</h2>" .Content 1 }}
 +    <!-- returns ["<h2 id="#foo">Foo</h2>"] -->
 +```
 +
 +{{% note %}}
 +Hugo uses Golang's [Regular Expression package](https://golang.org/pkg/regexp/), which is the same general syntax used by Perl, Python, and other languages but with a few minor differences for those coming from a background in PCRE. For a full syntax listing, see the [GitHub wiki for re2](https://github.com/google/re2/wiki/Syntax).
 +
 +If you are just learning RegEx, or at least Golang's flavor, you can practice pattern matching in the browser at <https://regex101.com/>.
 +{{% /note %}}
 +
 +
 +[partials]: /templates/partials/
 +[`plainify`]: /functions/plainify/
 +[toc]: /content-management/toc/
 +[`urlize`]: /functions/urlize
index f6c2b63e1538e64c125eddd4498683a6b9f70829,0000000000000000000000000000000000000000..e4b77fc9ae114e50a9a8a4a81c3cf907e88e6b09
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- ```golang
 +---
 +title: first
 +linktitle: first
 +description: "Slices an array to only the first _N_ elements."
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [iteration]
 +signature: ["first LIMIT COLLECTION"]
 +workson: [lists,taxonomies,terms,groups]
 +hugoversion:
 +relatedfuncs: [after,last]
 +deprecated: false
 +aliases: []
 +---
 +
 +
++```
 +{{ range first 10 .Data.Pages }}
 +    {{ .Render "summary" }}
 +{{ end }}
 +```
 +
index 4b6604f95ff6f3f19e39f00bbc2a05ebcca99eab,0000000000000000000000000000000000000000..fb6a29c4ff24f7dbbe9bb416167b1cb8a92c9930
mode 100644,000000..100644
--- /dev/null
@@@ -1,126 -1,0 +1,126 @@@
- ```golang
 +---
 +title: .Format
 +description: Formats built-in Hugo dates---`.Date`, `.PublishDate`, and `.LastMod`---according to Go's layout string.
 +godocref: https://golang.org/pkg/time/#example_Time_Format
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [dates,time]
 +signature: [".Format FORMAT"]
 +workson: [times]
 +hugoversion:
 +relatedfuncs: [dateFormat,now,Unix,time]
 +deprecated: false
 +aliases: []
 +toc: true
 +---
 +
 +`.Format` will format date values defined in your front matter and can be used as a property on the following [page variables][pagevars]:
 +
 +* `.PublishDate`
 +* `.Date`
 +* `.LastMod`
 +
 +Assuming a key-value of `date: 2017-03-03` in a content file's front matter, your can run the date through `.Format` followed by a layout string for your desired output at build time:
 +
++```
 +{{ .PublishDate.Format "January 2, 2006" }} => March 3, 2017
 +```
 +
 +For formatting *any* string representations of dates defined in your front matter, see the [`dateFormat` function][dateFormat], which will still leverage the Golang layout string explained below but uses a slightly different syntax.
 +
 +## Go's Layout String
 +
 +Hugo templates [format your dates][time] via layout strings that point to a specific reference time:
 +
 +```
 +Mon Jan 2 15:04:05 MST 2006
 +```
 +
 +While this may seem arbitrary, the numerical value of `MST` is `07`, thus making the layout string a sequence of numbers.
 +
 +Here is a visual explanation [taken directly from the Go docs][gdex]:
 +
 +```
 + Jan 2 15:04:05 2006 MST
 +=> 1 2  3  4  5    6  -7
 +```
 +
 +### Hugo Date and Time Templating Reference
 +
 +The following examples show the layout string followed by the rendered output.
 +
 +The examples were rendered and tested in [CST][] and all point to the same field in a content file's front matter:
 +
 +```
 +date: 2017-03-03T14:15:59-06:00
 +```
 +
 +`.Date` (i.e. called via [page variable][pagevars])
 +: **Returns**: `2017-03-03 14:15:59 -0600 CST`
 +
 +`"Monday, January 2, 2006"`
 +: **Returns**: `Friday, March 3, 2017`
 +
 +`"Mon Jan 2 2006"`
 +: **Returns**: `Fri Mar 3 2017`
 +
 +`"January 2nd"`
 +: **Returns**: `March 3rd`
 +
 +`"January 2006"`
 +: **Returns**: `March 2017`
 +
 +`"2006-01-02"`
 +: **Returns**: `2017-03-03`
 +
 +`"Monday"`
 +: **Returns**: `Friday`
 +
 +`"02 Jan 06 15:04 MST"` (RFC822)
 +: **Returns**: `03 Mar 17 14:15 CST`
 +
 +`"02 Jan 06 15:04 -0700"` (RFC822Z)
 +: **Returns**: `03 Mar 17 14:15 -0600`
 +
 +`"Mon, 02 Jan 2006 15:04:05 MST"` (RFC1123)
 +: **Returns**: `Fri, 03 Mar 2017 14:15:59 CST`
 +
 +`"Mon, 02 Jan 2006 15:04:05 -0700"` (RFC339)
 +: **Returns**: `Fri, 03 Mar 2017 14:15:59 -0600`
 +
 +### Cardinal Numbers and Ordinal Abbreviations
 +
 +Spelled-out cardinal numbers (e.g. "one", "two", and "three") and ordinal abbreviations (i.e., with shorted suffixes like "1st", "2nd", and "3rd") are not currently supported:
 +
 +```
 +{{.Date.Format "Jan 2nd 2006"}}
 +```
 +
 +Hugo assumes you want to append `nd` as a string to the day of the month and outputs the following:
 +
 +```
 +Mar 3nd 2017
 +```
 +
 +<!-- Content idea: see https://discourse.gohugo.io/t/formatting-a-date-with-suffix-2nd/5701 -->
 +
 +### Use `.Local` and `.UTC`
 +
 +In conjunction with the [`dateFormat` function][dateFormat], you can also convert your dates to `UTC` or to local timezones:
 +
 +`{{ dateFormat "02 Jan 06 15:04 MST" .Date.UTC }}`
 +: **Returns**: `03 Mar 17 20:15 UTC`
 +
 +`{{ dateFormat "02 Jan 06 15:04 MST" .Date.Local }}`
 +: **Returns**: `03 Mar 17 14:15 CST`
 +
 +[CST]: https://en.wikipedia.org/wiki/Central_Time_Zone
 +[dateFormat]: /functions/dateformat/
 +[gdex]: https://golang.org/pkg/time/#example_Time_Format
 +[pagevars]: /variables/page/
 +[time]: https://golang.org/pkg/time/
index fb801db13cf2eeaca62d8046147f0eb1729105f0,0000000000000000000000000000000000000000..26159dca27181cef9ed84c6061186c94710a5515
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,34 @@@
- ```golang
 +---
 +title: i18n
 +linktitle: i18n
 +description: Translates a piece of content based on your i18n configuration files.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [internationalization,i18n,multilingual]
 +signature: ["i18n KEY", "T KEY"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +This translates a piece of content based on your `i18n/en-US.yaml` (and similar) files. You can use the [go-i18n](https://github.com/nicksnyder/go-i18n) tools to manage your translations. The translations can exist in both the theme and at the root of your repository.
 +
++```
 +{{ i18n "translation_id" }}
 +```
 +
 +{{% note "Alias `T`" %}}
 +`T` is an alias to `i18n`. E.g. `{{ T "translation_id" }}`.
 +{{% /note %}}
 +
 +For more information about string translations, see [Translation of Strings in Multilingual Mode][multistrings].
 +
 +[multistrings]: /content-management/multilingual/#translation-of-strings
index ebe55c5b8285ec99ae9a7ff50df94025c0906d98,0000000000000000000000000000000000000000..8ae2f3acfcb66c3475476a683a08fac39760547c
mode 100644,000000..100644
--- /dev/null
@@@ -1,24 -1,0 +1,24 @@@
- ```golang
 +---
 +linktitle: imageConfig
 +description: Parses the image and returns the height, width, and color model.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [images]
 +signature: ["imageConfig PATH"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +---
 +
++```
 +{{ with (imageConfig "favicon.ico") }}
 +favicon.ico: {{.Width}} x {{.Height}}
 +{{ end }}
 +```
index e40fd2e0dea211f88afc9a0b2ba04e7ea1c111b0,0000000000000000000000000000000000000000..da6b42c27d53ad36ad1746dbc85a313abbf68571
mode 100644,000000..100644
--- /dev/null
@@@ -1,84 -1,0 +1,84 @@@
- ```toml
 +---
 +title: index
 +linktitle: index
 +description: Looks up the index(es) or key(s) of the data structure passed into it.
 +godocref: https://golang.org/pkg/text/template/#hdr-Functions
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: []
 +signature: ["index COLLECTION INDEX", "index COLLECTION KEY"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: [/functions/index/]
 +needsexample: true
 +---
 +
 +From the Godocs:
 +
 +> Returns the result of indexing its first argument by the following arguments. Thus "index x 1 2 3" is, in Go syntax, x[1][2][3]. Each indexed item must be a map, slice, or array.
 +
 +In Go templates, you can't access array, slice, or map elements directly the same way you would in Go. For example, `$.Site.Data.authors[.Params.authorkey]` isn't supported syntax.
 +
 +Instead, you have to use `index`, a function that handles the lookup for you.
 +
 +## Example: Load Data from a Path Based on Front Matter Params
 +
 +Assume you want to add a `location = ""` field to your front matter for every article written in `content/vacations/`. You want to use this field to populate information about the location at the bottom of the article in your `single.html` template. You also have a directory in `data/locations/` that looks like the following:
 +
 +```
 +.
 +└── data
 +    └── locations
 +        ├── abilene.toml
 +        ├── chicago.toml
 +        ├── oslo.toml
 +        └── provo.toml
 +```
 +
 +Here is an example of the data inside `data/locations/oslo.toml`:
 +
- ```toml
++```
 +website = "https://www.oslo.kommune.no"
 +pop_city = 658390
 +pop_metro = 1717900
 +```
 +
 +The example we will use will be an article on Oslo, which front matter should set to exactly the same name as the corresponding file name in `data/locations/`:
 +
- ```golang
++```
 +title = "My Norwegian Vacation"
 +location = "oslo"
 +```
 +
 +The content of `oslo.toml` can be accessed from your template using the following node path: `.Site.Data.locations.oslo`. However, the specific file you need is going to change according to the front matter.
 +
 +This is where the `index` function is needed. `index` takes 2 parameters in this use case:
 +
 +1. The node path
 +2. A string corresponding to the desired data; e.g.&mdash;
 +
 +```
 +{{ index .Site.Data.locations “oslo” }}
 +```
 +
 +The variable for `.Params.location` is a string and can therefore replace `oslo` in the example above:
 +
- ```golang
++```
 +{{ index .Site.Data.authors .Params.author }}
 +=> map[website:https://www.oslo.kommune.no pop_city:658390 pop_metro:1717900]
 +```
 +
 +Now the call will return the specific file according to the location specified in the content's front matter, but you will likely want to write specific properties to the template. You can do this by continuing down the node path via dot notation (`.`):
 +
++```
 +{{ (index .Site.Data.locations .Params.location).pop_city }}
 +=> 658390
 +```
 +
index fc56e9b9348c3c582f0a38e1eefdb0477a628f78,0000000000000000000000000000000000000000..290fc93f18640e8a92f43d11ea7ad79d125e44cf
mode 100644,000000..100644
--- /dev/null
@@@ -1,58 -1,0 +1,56 @@@
- {{% code file="layouts/partials/related-posts.html" download="related-posts.html" %}}
- ```html
 +---
 +title: intersect
 +linktitle: intersect
 +description: Returns the common elements of two arrays or slices.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: []
 +signature: ["intersect SET1 SET2"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +The elements supported are strings, integers, and floats (only float64).
 +
 +A useful example of `intersect` functionality is a "related posts" block. `isset` allows us to create a list of links to other posts that have tags that intersect with the tags in the current post.
 +
 +The following is an example of a "related posts" [partial template][partials] that could be added to a [single page template][single]:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/related-posts.html" download="related-posts.html" >}}
 +<ul>
 +{{ $page_link := .Permalink }}
 +{{ $tags := .Params.tags }}
 +{{ range .Site.Pages }}
 +    {{ $page := . }}
 +    {{ $has_common_tags := intersect $tags .Params.tags | len | lt 0 }}
 +    {{ if and $has_common_tags (ne $page_link $page.Permalink) }}
 +        <li><a href="{{ $page.Permalink }}">{{ $page.Title }}</a></li>
 +    {{ end }}
 +{{ end }}
 +</ul>
- ```html
++{{< /code >}}
 +
 +This is also very useful to use as `AND` filters when combined with where:
 +
++```
 +{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
 +{{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }}
 +{{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}
 +```
 +
 +The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page params.
 +
 +See [union](/functions/union) for `OR`.
 +
 +
 +[partials]: /templates/partials/
 +[single]: /templates/single-page-templates/
index 994192c6708abe073e25c1a7fc213d2bd77ad053,0000000000000000000000000000000000000000..927141d7fa63b5d3ebe8cfe2cc3c87716c825ca5
mode 100644,000000..100644
--- /dev/null
@@@ -1,64 -1,0 +1,60 @@@
- {{% code file="check-title-length.html" %}}
- ```html
 +---
 +title: len
 +linktitle: len
 +description: Returns the length of a variable according to its type.
 +godocref: https://golang.org/pkg/builtin/#len
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-18
 +categories: [functions]
 +#tags: []
 +signature: ["len INPUT"]
 +workson: [lists,taxonomies,terms]
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +toc: false
 +aliases: []
 +---
 +
 +`len` is a built-in function in Golang that returns the length of a variable according to its type. From the Golang documentation:
 +
 +> Array: the number of elements in v.
 +>
 +> Pointer to array: the number of elements in *v (even if v is nil).
 +>
 +> Slice, or map: the number of elements in v; if v is nil, len(v) is zero.
 +>
 +> String: the number of bytes in v.
 +>
 +> Channel: the number of elements queued (unread) in the channel buffer; if v is nil, len(v) is zero.
 +
 +`len` is also considered a [fundamental function for Hugo templating][].
 +
 +## `len` Example 1: Longer Headings
 +
 +You may want to append a class to a heading according to the length of the string therein. The following templating checks to see if the title's length is greater than 80 characters and, if so, adds a `long-title` class to the `<h1>`:
 +
- ```
- {{% /code %}}
++{{< code file="check-title-length.html" >}}
 +<header>
 +    <h1{{if gt (len .Title) 80}} class="long-title"{{end}}>{{.Title}}</h1>
 +</header>
- {{% code file="how-many-posts.html" %}}
- ```html
++{{< /code >}}
 +
 +## `len` Example 2: Counting Pages with `where`
 +
 +The following templating uses [`where`][] in conjunction with `len` to figure out the total number of content pages in a `posts` [section][]:
 +
- ```
- {{% /code %}}
++{{< code file="how-many-posts.html" >}}
 +{{ $posts := (where .Site.RegularPages "Section" "==" "post") }}
 +{{ $postCount := len $posts }}
++{{< /code >}}
 +
 +Note the use of `.RegularPages`, a [site variable][] that counts all regular content pages but not the `_index.md` pages used to add front matter and content to [list templates][].
 +
 +
 +[fundamental function for Hugo templating]: /templates/introduction/
 +[list templates]: /templates/lists/
 +[section]: /content-management/sections/
 +[site variable]: /variables/site/
 +[`where`]: /functions/where/
index 836e34c1de3176d2219afe5e2416454b41d5f8ad,0000000000000000000000000000000000000000..60b801dfa367567fee6387a4b5720a1ca6cbbede
mode 100644,000000..100644
--- /dev/null
@@@ -1,67 -1,0 +1,65 @@@
- ```html
- <meta name="twitter:image" content="http://yoursite.com/images/my-twitter-image.jpg">
 +---
 +title: Math
 +description: Hugo provides six mathematical operators in templates.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [math, operators]
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +toc:
 +signature: []
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
 +There are 6 basic mathematical operators that can be used in Hugo templates:
 +
 +| Function | Description              | Example                       |
 +| -------- | ------------------------ | ----------------------------- |
 +| `add`    | Adds two integers.       | `{{add 1 2}}` &rarr; 3        |
 +| `div`    | Divides two integers.    | `{{div 6 3}}` &rarr; 2        |
 +| `mod`    | Modulus of two integers. | `{{mod 15 3}}` &rarr; 0       |
 +| `modBool`| Boolean of modulus of two integers. Evaluates to `true` if = 0. | `{{modBool 15 3}}` &rarr; true |
 +| `mul`    | Multiplies two integers. | `{{mul 2 3}}` &rarr; 6        |
 +| `sub`    | Subtracts two integers.  | `{{sub 3 2}}` &rarr; 1        |
 +
 +## Use `add` with Strings
 +
 +You can also use the `add` function with strings. You may like this functionality in many use cases, including creating new variables by combining page- or site-level variables with other strings.
 +
 +For example, social media sharing with [Twitter Cards][cards] requires the following `meta` link in your site's `<head>` to display Twitter's ["Summary Card with Large Image"][twtsummary]:
 +
- ```yaml
++```
++<meta name="twitter:image" content="http://example.com/images/my-twitter-image.jpg">
 +```
 +
 +Let's assume you have an `image` field in the front matter of each of your content files:
 +
- {{% code file="partials/head/twitter-card.html" %}}
- ```html
++```
 +---
 +title: My Post
 +image: my-post-image.jpg
 +---
 +```
 +
 +You can then concatenate the `image` value (string) with the path to your `images` directory in `static` and leverage a URL-related templating function for increased flexibility:
 +
- ```
- {{% /code %}}
++{{< code file="partials/head/twitter-card.html" >}}
 +{{$socialimage := add "images/" .Params.image}}
 +<meta name="twitter:image" content="{{ $socialimage | absURL }}">
++{{< /code >}}
 +
 +{{% note %}}
 +The `add` example above makes use of the [`absURL` function](/functions/absurl/). `absURL` and its relative companion `relURL` is the recommended way to construct URLs in Hugo.
 +{{% /note %}}
 +
 +[cards]: https://dev.twitter.com/cards/overview
 +[twtsummary]: https://dev.twitter.com/cards/types/summary-large-image
index 4003436decbed83718b3cf489226f9c1964ca003,0000000000000000000000000000000000000000..fac6f2dee7e408a7b9867a5dd8b84903110a4c6b
mode 100644,000000..100644
--- /dev/null
@@@ -1,33 -1,0 +1,33 @@@
- ```html
 +---
 +title: md5
 +linktitle: md5
 +description: hashes the given input and returns its MD5 checksum.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: []
 +signature: ["md5 INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +
 +
- ```html
++```
 +{{ md5 "Hello world, gophers!" }}
 +<!-- returns the string "b3029f756f98f79e7f1b7f1d1f0dd53b" -->
 +```
 +
 +This can be useful if you want to use [Gravatar](https://en.gravatar.com/) for generating a unique avatar:
 +
++```
 +<img src="https://www.gravatar.com/avatar/{{ md5 "your@email.com" }}?s=100&d=identicon">
 +```
index ce2642dc4998e09baefdd0114f77e5b662e1ea17,0000000000000000000000000000000000000000..684e2cf00f267e483198b4da5c4ec981e9ad211e
mode 100644,000000..100644
--- /dev/null
@@@ -1,44 -1,0 +1,44 @@@
- ```html
 +---
 +title: now
 +linktitle: now
 +description: Returns the current local time 
 +godocref: https://godoc.org/time#Time
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-30
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [dates,time]
 +signature: ["now"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [Unix,dateFormat]
 +deprecated: false
 +aliases: []
 +---
 +
 +See [`time.Time`](https://godoc.org/time#Time).
 +
 +For example, building your site on June 24, 2017 with the following templating:
 +
- ```html
++```
 +<div>
 +    <small>&copy; {{ now.Format "2006"}}</small>
 +</div>
 +```
 +
 +Which will produce the following:
 +
++```
 +<div>
 +    <small>&copy; 2017</small>
 +</div>
 +```
 +
 +The above example uses the [`.Format` function](/functions/format), which page includes a full listing of date formatting using Golang's layout string.
 +
 +{{% note %}}
 +Older Hugo themes may use the deprecated `.Now` (uppercase). Be sure to use the lowercase `.now` in your templating.
 +{{% /note %}}
index 68438331acf2af4f9cb0577d7fda0fde5932786b,0000000000000000000000000000000000000000..b9865da5518d2c7a06df8b8bb46f82a62eaee8df
mode 100644,000000..100644
--- /dev/null
@@@ -1,42 -1,0 +1,40 @@@
- ```golang
 +---
 +title: partialCached
 +linktitle: partialCached
 +description: Allows for caching of partials that do not need to be re-rendered on every invocation.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: []
 +signature: ["partialCached LAYOUT INPUT [VARIANT...]"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +The `partialCached` template function can offer significant performance gains for complex templates that don't need to be re-rendered on every invocation. Here is the simplest usage:
 +
- {{% code file="partial-cached-example.html" %}}
- ```
++```
 +{{ partialCached "footer.html" . }}
 +```
 +
 +You can also pass additional parameters to `partialCached` to create *variants* of the cached partial. For example, if you have a complex partial that should be identical when rendered for pages within the same section, you could use a variant based upon section so that the partial is only rendered once per section:
 +
- ```
- {{% /code %}}
++{{< code file="partial-cached-example.html" >}}
 +{{ partialCached "footer.html" . .Section }}
++{{< /code >}}
 +
 +If you need to pass additional parameters to create unique variants, you can pass as many variant parameters as you need:
 +
 +```
 +{{ partialCached "footer.html" . .Params.country .Params.province }}
 +```
 +
 +Note that the variant parameters are not made available to the underlying partial template. They are only use to create a unique cache key.
index 30cb6a15befaf4818e29f4599c590d60c3ef1322,0000000000000000000000000000000000000000..9b4ebe15d88be578cabe5accd72a39700a3a8ff4
mode 100644,000000..100644
--- /dev/null
@@@ -1,29 -1,0 +1,29 @@@
- ```golang
 +---
 +title: printf
 +linktitle: printf
 +description: Formats a string using the standard `fmt.Sprintf` function.
 +godocref: https://golang.org/pkg/fmt/
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [strings]
 +signature: ["printf FORMAT INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +---
 +
 +See [the go doc](https://golang.org/pkg/fmt/) for additional information.
 +
++```
 +{{ i18n ( printf "combined_%s" $var ) }}
 +```
 +
 +```
 +{{ printf "formatted %.2f" 3.1416 }}
 +```
index a80a1e8dafd5647d27fabf3c7204ddcd7cba9ccd,0000000000000000000000000000000000000000..ef4f94b65fa6df0688bb9f78054d1591b3609d0d
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,34 @@@
- ```html
 +---
 +title: querify
 +linktitle: querify
 +description: Takes a set of key-value pairs and returns a query string to be appended to URLs.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [urls]
 +godocref:
 +signature: ["querify KEY VALUE [KEY VALUE]..."]
 +hugoversion:
 +deprecated: false
 +workson: []
 +relatedfuncs: []
 +aliases: []
 +---
 +
 +`querify` takes a set of key-value pairs and returns a [query string](https://en.wikipedia.org/wiki/Query_string) that can be appended to a URL. E.g.
 +
 +The following example creates a link to a search results page on Google.
 +
- ```html
++```
 +<a href="https://www.google.com?{{ (querify "q" "test" "page" 3) | safeURL }}">Search</a>
 +```
 +
 +This example renders the following HTML:
 +
++```
 +<a href="https://www.google.com?page=3&q=test">Search</a>
 +```
index 9fb7ab2516e6a9c0c3edb5988943885b279b25b7,0000000000000000000000000000000000000000..418ff800b6ac540ddb85085cfa26fa0ac8f8afd2
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- ```html
 +---
 +title: readFile
 +description: Reads a file from disk relative to the current project working directory and returns a string.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-30
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [files]
 +signature: ["readFile PATH"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [readDir]
 +deprecated: false
 +aliases: []
 +---
 +
 +Note that the filename must be relative to the current project working directory.
 +
 +So, if you have a file with the name `README.txt` in the root of your project with the content `Hugo Rocks!`:
 +
++```
 +{{readFile "README.txt"}} → "Hugo Rocks!"
 +```
 +
 +For more information on using `readDir` and `readFile` in your templates, see [Local File Templates][local].
 +
 +[local]: /templates/files/
index d041d56e6df47a7004abf0456162c8f293223155,0000000000000000000000000000000000000000..1e01b08e512f858e1246534943b9e7f2061c9ee2
mode 100644,000000..100644
--- /dev/null
@@@ -1,30 -1,0 +1,30 @@@
- ```golang
 +---
 +title: ref
 +linktitle: ref
 +description: Looks up a content page by logical name.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [cross references, anchors]
 +signature: ["ref PAGE CONTENT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [relref]
 +deprecated: false
 +aliases: []
 +---
 +
 +`ref` and `relRef` look up a content page by relative path (`relref`) or logical name (`ref`) to return the permalink. Both functions require a `Page` object (usually satisfied with a "`.`"):
 +
++```
 +{{ relref . "about.md" }}
 +```
 +
 +These functions are used in two of Hugo's built-in shortcodes. You can see basic usage examples of both `ref` and `relref` in the [shortcode documentation](/content-management/shortcodes/#ref-and-relref).
 +
 +For an extensive explanation of how to leverage `ref` and `relref` for content management, see [Cross References](/content-management/cross-references/).
index ef1cbae2289af44e5f7b13f06ddb7e3e0ac49e30,0000000000000000000000000000000000000000..08f4511fb7cf7d05ff07f0916df401a1a55f6cef
mode 100644,000000..100644
--- /dev/null
@@@ -1,30 -1,0 +1,30 @@@
- So for a site  `baseURL` set to `http://yoursite.com/hugo/` and the current language is `en`:
 +---
 +title: relLangURL
 +description: Adds the relative URL with correct language prefix according to site configuration for multilingual.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [multilingual,i18n,urls]
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +signature: ["relLangURL INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +`absLangURL` and `relLangURL` functions are similar to their [`absURL`](/functions/absurl/) and [`relURL`](/functions/relurl/) relatives but will add the correct language prefix when the site is configured with more than one language. (See [Configuring Multilingual][multiliconfig].)
 +
- ```golang
- {{ "blog/" | absLangURL }} → "http://yoursite.com/hugo/en/blog/"
++So for a site  `baseURL` set to `http://example.com/hugo/` and the current language is `en`:
 +
++```
++{{ "blog/" | absLangURL }} → "http://example.com/hugo/en/blog/"
 +{{ "blog/" | relLangURL }} → "/hugo/en/blog/"
 +```
 +
 +[multiliconfig]: /content-management/multilingual/#configuring-multilingual-mode
index 2303c5c63c0525853e0acbfcda96cb1bb635e077,0000000000000000000000000000000000000000..c6ca757c0b7f6a90788005b9f785c012e9dad8b5
mode 100644,000000..100644
--- /dev/null
@@@ -1,30 -1,0 +1,30 @@@
- ```golang
 +---
 +title: relref
 +# linktitle: relref
 +description: Looks up a content page by relative path.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [cross references, anchors]
 +signature: ["relref PAGE CONTENT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [relref]
 +deprecated: false
 +aliases: []
 +---
 +
 +`ref` and `relRef` look up a content page by relative path (`relref`) or logical name (`ref`) to return the permalink. Both functions require a `Page` object (usually satisfied with a "`.`"):
 +
++```
 +{{ relref . "about.md" }}
 +```
 +
 +These functions are used in two of Hugo's built-in shortcodes. You can see basic usage examples of both `ref` and `relref` in the [shortcode documentation](/content-management/shortcodes/#ref-and-relref).
 +
 +For an extensive explanation of how to leverage `ref` and `relref` for content management, see [Cross References](/content-management/cross-references/).
index 0d01a8ab500057469f26438c26e774c6efe5a262,0000000000000000000000000000000000000000..2760d10c852d6cc9d2ab3e71e56f03a75f113fde
mode 100644,000000..100644
--- /dev/null
@@@ -1,53 -1,0 +1,51 @@@
- Both `absURL` and `relURL` consider the configured value of `baseURL` in your site's [`config` file][configuration]. Given a `baseURL` set to `http://yoursite.com/hugo/`:
 +---
 +title: relURL
 +description: Given a string, prepends the relative URL according to a page's position in the project directory structure.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [urls]
 +signature: ["relURL INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [absURL]
 +deprecated: false
 +aliases: []
 +---
 +
- ```golang
- {{ "mystyle.css" | absURL }} → "http://yoursite.com/hugo/mystyle.css"
++Both `absURL` and `relURL` consider the configured value of `baseURL` in your site's [`config` file][configuration]. Given a `baseURL` set to `http://example.com/hugo/`:
 +
- {{% code file="layouts/partials/schemaorg-metadata.html" download="schemaorg-metadata.html" %}}
- ```html
++```
++{{ "mystyle.css" | absURL }} → "http://example.com/hugo/mystyle.css"
 +{{ "mystyle.css" | relURL }} → "/hugo/mystyle.css"
 +{{ "http://gohugo.io/" | relURL }} →  "http://gohugo.io/"
 +{{ "http://gohugo.io/" | absURL }} →  "http://gohugo.io/"
 +```
 +
 +The last two examples may look strange but can be very useful. For example, the following shows how to use `absURL` in [JSON-LD structured data for SEO][jsonld] where some of your images for a piece of content may or may not be hosted locally:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/schemaorg-metadata.html" download="schemaorg-metadata.html" >}}
 +<script type="application/ld+json">
 +{
 +    "@context" : "http://schema.org",
 +    "@type" : "BlogPosting",
 +    "image" : {{ apply .Params.images "absURL" "." }}
 +}
 +</script>
++{{< /code >}}
 +
 +The above uses the [apply function][] and also exposes how the Go template parser JSON-encodes objects inside `<script>` tags. See [the safeJS template function][safejs] for examples of how to tell Hugo not to escape strings inside of such tags.
 +
 +{{% note "Ending Slash" %}}
 +`absURL` and `relURL` are smart about missing slashes, but they will *not* add a closing slash to a URL if it is not present.
 +{{% /note %}}
 +
 +[apply function]: /functions/apply/
 +[configuration]: /getting-started/configuration/
 +[jsonld]: https://developers.google.com/search/docs/guides/intro-structured-data
 +[safejs]: /functions/safejs
index dac1d4c40efc5b0e510a7dcf7b3cdf646cb45192,0000000000000000000000000000000000000000..12b48dec9e60ec30427e680c0f0c08bfe7e42627
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,34 @@@
- ```golang
 +---
 +title: render
 +# linktitle: Render
 +description: Takes a view to apply when rendering content.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [views]
 +signature: ["render LAYOUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +The view is an alternative layout and should be a file name that points to a template in one of the locations specified in the documentation for [Content Views](/templates/views).
 +
 +This function is only available when applied to a single piece of content within a [list context][].
 +
 +This example could render a piece of content using the content view located at `/layouts/_default/summary.html`:
 +
++```
 +{{ range .Data.Pages }}
 +    {{ .Render "summary"}}
 +{{ end }}
 +```
 +
 +[list context]: /templates/lists/
index 5ecf1680b20c77e1d0428d3e8d3a008be0f4b740,0000000000000000000000000000000000000000..1bd4399cafb2ae0390acedae965797490986731c
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- ```golang
 +---
 +title: replacere
 +# linktitle: replaceRE
 +description: Replaces all occurrences of a regular expression with the replacement pattern.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-30
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [regex]
 +signature: ["replaceRE PATTERN REPLACEMENT INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
++```
 +{{ replaceRE "^https?://([^/]+).*" "$1" "http://gohugo.io/docs" }}` → "gohugo.io"
 +{{ "http://gohugo.io/docs" | replaceRE "^https?://([^/]+).*" "$1" }}` → "gohugo.io"
 +```
 +
 +{{% note %}}
 +Hugo uses Golang's [Regular Expression package](https://golang.org/pkg/regexp/), which is the same general syntax used by Perl, Python, and other languages but with a few minor differences for those coming from a background in PCRE. For a full syntax listing, see the [GitHub wiki for re2](https://github.com/google/re2/wiki/Syntax).
 +
 +If you are just learning RegEx, or at least Golang's flavor, you can practice pattern matching in the browser at <https://regex101.com/>.
 +{{% /note %}}
index 1dc4ce553161fbb9ddde7cb1608d021ed7d60be1,0000000000000000000000000000000000000000..4a473f5aab3c1425f35224822243641054fcc8f7
mode 100644,000000..100644
--- /dev/null
@@@ -1,41 -1,0 +1,41 @@@
- ```toml
 +---
 +title: safeHTML
 +# linktitle:
 +description: Declares a provided string as a "safe" HTML document to avoid escaping by Go templates.
 +godocref: https://golang.org/src/html/template/content.go?s=1374:1385#L25
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [strings]
 +signature: ["safeHTML INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +---
 +
 +It should not be used for HTML from a third-party, or HTML with unclosed tags or comments.
 +
 +Given a site-wide [`config.toml`][config] with the following `copyright` value:
 +
- ```html
++```
 +copyright = "© 2015 Jane Doe.  <a href=\"http://creativecommons.org/licenses/by/4.0/\">Some rights reserved</a>."
 +```
 +
 +`{{ .Site.Copyright | safeHTML }}` in a template would then output:
 +
- ```html
++```
 +© 2015 Jane Doe.  <a href="http://creativecommons.org/licenses/by/4.0/">Some rights reserved</a>.
 +```
 +
 +However, without the `safeHTML` function, html/template assumes `.Site.Copyright` to be unsafe and therefore escapes all HTML tags and renders the whole string as plain text:
 +
++```
 +<p>© 2015 Jane Doe.  &lt;a href=&#34;http://creativecommons.org/licenses by/4.0/&#34;&gt;Some rights reserved&lt;/a&gt;.</p>
 +```
 +
 +[config]: /getting-started/configuration/
index 293efb1c79cf0caf58ef0977bd73456d11da43cc,0000000000000000000000000000000000000000..7c4dcda6b1fbfe7f45b3b90b64574cc2dc829ead
mode 100644,000000..100644
--- /dev/null
@@@ -1,32 -1,0 +1,32 @@@
- ```toml
 +---
 +title: safeHTMLAttr
 +# linktitle: safeHTMLAttr
 +description: Declares the provided string as a safe HTML attribute.
 +godocref: https://golang.org/src/html/template/content.go?s=1661:1676#L33
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [strings]
 +signature: ["safeHTMLAttr INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +Example: Given a site-wide `config.toml` that contains this menu entry:
 +
++```
 +[[menu.main]]
 +    name = "IRC: #golang at freenode"
 +    url = "irc://irc.freenode.net/#golang"
 +```
 +
 +* <span class="bad">`<a href="{{ .URL }}">` &rarr; `<a href="#ZgotmplZ">`</span>
 +* <span class="good">`<a {{ printf "href=%q" .URL | safeHTMLAttr }}>` &rarr; `<a href="irc://irc.freenode.net/#golang">`</span>
 +
index 71fad028b30f41497d7b53fa022ce5aea65429b1,0000000000000000000000000000000000000000..6d94daab1bac11e8468643e57eae56c1abfa681c
mode 100644,000000..100644
--- /dev/null
@@@ -1,82 -1,0 +1,76 @@@
- {{% code file="config.toml" copy="false" %}}
- ```toml
 +---
 +title: safeURL
 +description: Declares the provided string as a safe URL or URL substring.
 +godocref: https://golang.org/pkg/html/template/#HTMLEscape
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [strings,urls]
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +signature: ["safeURL INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +`safeURL` declares the provided string as a "safe" URL or URL substring (see [RFC 3986][]). A URL like `javascript:checkThatFormNotEditedBeforeLeavingPage()` from a trusted source should go in the page, but by default dynamic `javascript:` URLs are filtered out since they are a frequently exploited injection vector.
 +
 +Without `safeURL`, only the URI schemes `http:`, `https:` and `mailto:` are considered safe by Go templates. If any other URI schemes (e.g., `irc:` and `javascript:`) are detected, the whole URL will be replaced with `#ZgotmplZ`. This is to "defang" any potential attack in the URL by rendering it useless.
 +
 +The following examples use a [site `config.toml`][configuration] with the following [menu entry][menus]:
 +
- ```
- {{% /code %}}
++{{< code file="config.toml" copy="false" >}}
 +[[menu.main]]
 +    name = "IRC: #golang at freenode"
 +    url = "irc://irc.freenode.net/#golang"
- {{% code file="layouts/partials/bad-url-sidebar-menu.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
 +The following is an example of a sidebar partial that may be used in conjunction with the preceding front matter example:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/bad-url-sidebar-menu.html" copy="false" >}}
 +<!-- This unordered list may be part of a sidebar menu -->
 +<ul>
 +  {{ range .Site.Menus.main }}
 +  <li><a href="{{ .URL }}">{{ .Name }}</a></li>
 +  {{ end }}
 +</ul>
- ```html
++{{< /code >}}
 +
 +This partial would produce the following HTML output:
 +
 +{{% output file="bad-url-sidebar-menu-output.html" %}}
- {{% code file="layouts/partials/correct-url-sidebar-menu.html" copy="false" %}}
- ```html
++```
 +<!-- This unordered list may be part of a sidebar menu -->
 +<ul>
 +    <li><a href="#ZgotmplZ">IRC: #golang at freenode</a></li>
 +</ul>
 +```
 +{{% /output %}}
 +
 +The odd output can be remedied by adding ` | safeURL` to our `.Title` page variable:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/correct-url-sidebar-menu.html" copy="false" >}}
 +<!-- This unordered list may be part of a sidebar menu -->
 +<ul>
 +    <li><a href="{{ .URL | safeURL }}">{{ .Name }}</a></li>
 +</ul>
- ```html
++{{< /code >}}
 +
 +With the `.URL` page variable piped through `safeURL`, we get the desired output:
 +
 +{{% output file="correct-url-sidebar-menu-output.html" %}}
++```
 +<ul class="sidebar-menu">
 +    <li><a href="irc://irc.freenode.net/#golang">IRC: #golang at freenode</a></li>
 +</ul>
 +```
 +{{% /output %}}
 +
 +[configuration]: /getting-started/configuration/
 +[menus]: /content-management/menus/
 +[RFC 3986]: http://tools.ietf.org/html/rfc3986
index f1085326a7662d11bc460f60e182d3dfd85f1fe8,0000000000000000000000000000000000000000..dac5f00c920adcc9811d24b907f545a651532cbb
mode 100644,000000..100644
--- /dev/null
@@@ -1,51 -1,0 +1,51 @@@
- ```golang
 +---
 +title: seq
 +# linktitle:
 +description: Creates a sequence of integers.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: []
 +signature: ["seq LAST", "seq FIRST LAST", "seq FIRST INCREMENT LAST"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
 +It's named and used in the model of [GNU's seq][].
 +
 +```
 +3 → 1, 2, 3
 +1 2 4 → 1, 3
 +-3 → -1, -2, -3
 +1 4 → 1, 2, 3, 4
 +1 -2 → 1, 0, -1, -2
 +```
 +
 +## Example: `seq` with `range` and `after`
 +
 +You can use `seq` in combination with `range` and `after`. The following will return 19 elements:
 +
- ```golang
++```
 +{{ range after 1 (seq 20)}}
 +{{ end }}
 +```
 +
 +However, when ranging with an index, the following may be less confusing in that `$indexStartingAt1` and `$num` will return `1,2,3 ... 20`:
 +
++```
 +{{ range $index, $num := (seq 20) }}
 +$indexStartingAt1 := (add $index 1)
 +{{ end }}
 +```
 +
 +
 +[GNU's seq]: http://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html#seq-invocation
index 0f15be6aaf94dc0b63a2598668db41a724557260,0000000000000000000000000000000000000000..7b6ac6316bf86e3b0a12afa1a779e046f7901b81
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,34 @@@
- ```html
 +---
 +title: sha
 +# linktitle: sha
 +description: Hashes the given input and returns either an SHA1 or SHA256 checksum.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [sha,checksum]
 +signature: ["sha1 INPUT", "sha256 INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +`sha1` hashes the given input and returns its SHA1 checksum.
 +
- ```html
++```
 +{{ sha1 "Hello world, gophers!" }}
 +<!-- returns the string "c8b5b0e33d408246e30f53e32b8f7627a7a649d4" -->
 +```
 +
 +`sha256` hashes the given input and returns its SHA256 checksum.
 +
++```
 +{{ sha256 "Hello world, gophers!" }}
 +<!-- returns the string "6ec43b78da9669f50e4e422575c54bf87536954ccd58280219c393f2ce352b46" -->
 +```
index b2ba14571e2cbfac874f66ce69ae7d17ff3a4655,0000000000000000000000000000000000000000..33c68a90a94e95256e1959abce5eab267de33bff
mode 100644,000000..100644
--- /dev/null
@@@ -1,43 -1,0 +1,41 @@@
- {{% code file="shuffle-input.html" %}}
- ```html
 +---
 +title: shuffle
 +# linktitle:
 +description: Returns a random permutation of a given array or slice.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-30
 +#tags: [ordering]
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +signature: ["shuffle COLLECTION"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [seq]
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
- ```
- {{% /code %}}
++{{< code file="shuffle-input.html" >}}
 +<!-- Shuffled sequence = -->
 +<div>{{ shuffle (seq 1 5) }}</div>
 +<!-- Shuffled slice =  -->
 +<div>{{ shuffle (slice "foo" "bar" "buzz") }}</div>
- ```html
++{{< /code >}}
 +
 +This example would return the following:
 +
 +{{% output file="shuffle-output.html" %}}
++```
 +<!-- Shuffled sequence =  -->
 +<div>2 5 3 1 4</div>
 +<!-- Shuffled slice =  -->
 +<div>buzz foo bar</div>
 +```
 +{{% /output %}}
 +
 +This example also makes use of the [slice](/functions/slice/) and [seq](/functions/seq/) functions.
index 0d5182ba75d60fbd1437f394a6579344f606079f,0000000000000000000000000000000000000000..49bf030d07f55468d480e24a6d1c558512ec380c
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,32 @@@
- {{% code file="slice.html" %}}
- ```html
 +---
 +title: slice
 +# linktitle: slice
 +description: Creates a alice (array) of all passed arguments.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [slice, array, interface]
 +signature: ["slice ITEM..."]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +toc: false
 +---
 +
 +One use case is the concatenation of elements in combination with the [`delimit` function][]:
 +
- ```
- {{% /code %}}
++{{< code file="slice.html" >}}
 +{{ delimit (slice "foo" "bar" "buzz") ", " }}
 +<!-- returns the string "foo, bar, buzz" -->
++{{< /code >}}
 +
 +
 +[`delimit` function]: /functions/delimit/
index 42f5d1e3c3ddfb1cfe97b6ea7f0d1f637924e428,0000000000000000000000000000000000000000..c6e05cf300c7b1e63bffc23613ff0c3ac3eef6e2
mode 100644,000000..100644
--- /dev/null
@@@ -1,65 -1,0 +1,65 @@@
- ```toml
 +---
 +title: sort
 +# linktitle: sort
 +description: Sorts maps, arrays, and slices and returns a sorted slice.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [ordering,sorting,lists]
 +signature: []
 +workson: [lists,taxonomies,terms,groups]
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +A sorted array of map values will be returned with the keys eliminated. There are two optional arguments: `sortByField` and `sortAsc`. If left blank, sort will sort by keys (for maps) in ascending order as its default behavior.
 +
++```
 ++++
 +#tags: [ "tag3", "tag1", "tag2" ]
 ++++
 +
 +// Site config
 ++++
 +[params.authors]
 +  [params.authors.Derek]
 +    "firstName"  = "Derek"
 +    "lastName"   = "Perkins"
 +  [params.authors.Joe]
 +    "firstName"  = "Joe"
 +    "lastName"   = "Bergevin"
 +  [params.authors.Tanner]
 +    "firstName"  = "Tanner"
 +    "lastName"   = "Linsley"
 ++++
 +```
 +
 +```
 +// Use default sort options - sort by key / ascending
 +Tags: {{ range sort .Params.tags }}{{ . }} {{ end }}
 +
 +→ Outputs Tags: tag1 tag2 tag3
 +
 +// Sort by value / descending
 +Tags: {{ range sort .Params.tags "value" "desc" }}{{ . }} {{ end }}
 +
 +→ Outputs Tags: tag3 tag2 tag1
 +
 +// Use default sort options - sort by value / descending
 +Authors: {{ range sort .Site.Params.authors }}{{ .firstName }} {{ end }}
 +
 +→ Outputs Authors: Derek Joe Tanner
 +
 +// Use default sort options - sort by value / descending
 +Authors: {{ range sort .Site.Params.authors "lastName" "desc" }}{{ .lastName }} {{ end }}
 +
 +→ Outputs Authors: Perkins Linsley Bergevin
 +```
 +
index 2d105a3d4ab06e348c9e03d0e3b03df765208e9f,0000000000000000000000000000000000000000..4f94128f6bc879a11dacf3ec29fcd597e401af89
mode 100644,000000..100644
--- /dev/null
@@@ -1,50 -1,0 +1,48 @@@
- {{% code file="unix-to-month-integer.html" %}}
- ```html
 +---
 +title: time
 +linktitle:
 +description: Converts a timestamp string into a `time.Time` structure.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [dates,time]
 +signature: ["time INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +`time` converts a timestamp string into a [`time.Time`](https://godoc.org/time#Time) structure so you can access its fields:
 +
 +```
 +{{ time "2016-05-28" }} → "2016-05-28T00:00:00Z"
 +{{ (time "2016-05-28").YearDay }} → 149
 +{{ mul 1000 (time "2016-05-28T10:30:00.00+10:00").Unix }} → 1464395400000, or Unix time in milliseconds
 +```
 +
 +## Example: Using `time` to get Month Index
 +
 +The following example takes a UNIX timestamp---set as `utimestamp: "1489276800"` in a content's front matter---converts the timestamp (string) to an integer using the [`int` function][int], and then uses [`printf`][] to convert the `Month` property of `time` into an index. 
 +
 +The following example may be useful when setting up [multilingual sites][multilingual]:
 +
- ```
- {{% /code %}}
++{{< code file="unix-to-month-integer.html" >}}
 +{{$time := time (int .Params.addDate)}}
 +=> $time = 1489276800
 +{{$time.Month}}
 +=> "March"
 +{{$monthindex := printf "%d" $time.Month }}
 +=> $monthindex = 3
++{{< /code >}}
 +
 +
 +[int]: /functions/int/
 +[multilingual]: /content-management/multilingual/
 +[`printf`]: /functions/printf/
index 4792fdabf28554314249390af00725891c85b721,0000000000000000000000000000000000000000..ce4e42286aa64ab89edea1568fe9258d0e0b81cf
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,49 @@@
- ```golang
 +---
 +title: union
 +# linktitle: union
 +description: Given two arrays or slices, returns a new array that contains the elements or objects that belong to either or both arrays/slices.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-12
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [filtering,lists]
 +signature: ["union SET1 SET2"]
 +workson: []
 +hugoversion: 0.20
 +relatedfuncs: [intersect,where]
 +deprecated: false
 +aliases: []
 +---
 +
 +Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both. The elements supported are strings, integers, and floats (only float64).
 +
- ```html
++```
 +{{ union (slice 1 2 3) (slice 3 4 5) }}
 +<!-- returns [1 2 3 4 5] -->
 +
 +{{ union (slice 1 2 3) nil }}
 +<!-- returns [1 2 3] -->
 +
 +{{ union nil (slice 1 2 3) }}
 +<!-- returns [1 2 3] -->
 +
 +{{ union nil nil }}
 +<!-- returns an error because both arrays/slices have to be of the same type -->
 +```
 +
 +
 +This is also very useful to use as `OR` filters when combined with where:
 +
++```
 +{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
 +{{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }}
 +{{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}
 +```
 +
 +The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page params.
 +
 +See [intersect](/functions/intersect) for `AND`.
index 467daeb18562c2b40c2c21155738534b9630d5d2,0000000000000000000000000000000000000000..f4144a9330708adec944d93240ce91577b389f46
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- ```html
 +---
 +title: uniq
 +linktitle: uniq
 +description: Takes in a slice or array and returns a slice with subsequent duplicate elements removed.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [multilingual,i18n,urls]
 +signature: ["uniq SET"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +needsexamples: false
 +---
 +
++```
 +{{ uniq (slice 1 2 3 2) }}
 +{{ slice 1 2 3 2 | uniq }}
 +<!-- both return [1 2 3] -->
 +```
 +
 +
 +
 +
index 2477d5437c36cda8a18f03d97b314eefb1de803d,0000000000000000000000000000000000000000..67ccf489bac7b5ba20d48c4041f43481affb5dc3
mode 100644,000000..100644
--- /dev/null
@@@ -1,40 -1,0 +1,38 @@@
- {{% code file="time-passed.html" %}}
- ```golang
 +---
 +title: .Unix
 +draft: false
 +description: .Unix returns the local Time corresponding to the given Unix time, sec seconds and nsec nanoseconds since January 1, 1970 UTC.
 +godocref: https://golang.org/search?q=Unix#Functions
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [dates,time]
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +signature: [".Unix"]
 +workson: [times]
 +hugoversion:
 +relatedfuncs: [Format,dateFormat,now,time]
 +deprecated: false
 +aliases: []
 +---
 +
 +## Example: Time Passed Since Last Modification
 +
 +This very simple one-liner uses `now.Unix` to calculate the amount of time that has passed between the `.LastMod` for the current page and the last build of the current page.
 +
- ```
- {{% /code %}}
++{{< code file="time-passed.html" >}}
 +{{ div (sub now.Unix .Lastmod.Unix) 86400 }}
++{{< /code >}}
 +
 +Since both values are integers, they can be subtracted and then divided by the number of seconds in a day (i.e., `60 * 60 * 24 == 86400`).
 +
 +{{% note %}}
 +Hugo's output is *static*. For the example above to be realistic, the site needs to be built every day.
 + {{% /note %}}
 +
 +
 +
 +[partial template]: /templates/partials/
index 3f57b0211425f194acb9e0bc772dd1ebd2336773,0000000000000000000000000000000000000000..9ddf47d4ec940ebabe0d3a6b36aa0d4c8f015983
mode 100644,000000..100644
--- /dev/null
@@@ -1,79 -1,0 +1,75 @@@
- {{% code file="content/blog/greatest-city.md" copy="false"%}}
- ```toml
 +---
 +title: urlize
 +# linktitle: urlize
 +description: Takes a string, sanitizes it for usage in URLs, and converts spaces to hyphens.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [urls,strings]
 +godocref:
 +signature: ["urlize INPUT"]
 +hugoversion:
 +deprecated: false
 +workson: []
 +relatedfuncs: []
 +---
 +
 +The following examples pull from a content file with the following front matter:
 +
- ```
- {{% /code %}}
++{{< code file="content/blog/greatest-city.md" copy="false">}}
 ++++
 +title = "The World's Greatest City"
 +location = "Chicago IL"
 +tags = ["pizza","beer","hot dogs"]
 ++++
- {{% code file="layouts/partials/content-header.html" download="content-header.html" %}}
- ```html
++{{< /code >}}
 +
 +The following might be used as a partial within a [single page template][singletemplate]:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/content-header.html" download="content-header.html" >}}
 +<header>
 +    <h1>{{.Title}}</h1>
 +    {{ with .Params.location }}
 +        <div><a href="/locations/{{ . | urlize}}">{{.}}</a></div>
 +    {{ end }}
 +    <!-- Creates a list of tags for the content and links to each of their pages -->
 +    {{ with .Params.tags }}
 +    <ul>
 +        {{range .}}
 +            <li>
 +                <a href="/tags/{{ . | urlize }}">{{ . }}</a>
 +            </li>
 +        {{end}}
 +    </ul>
 +    {{ end }}
 +</header>
- ```html
++{{< /code >}}
 +
 +The preceding partial would then output to the rendered page as follows, assuming the page is being built with Hugo's default pretty URLs.
 +
 +{{% output file="/blog/greatest-city/index.html" %}}
++```
 +<header>
 +    <h1>The World's Greatest City</h1>
 +    <div><a href="/locations/chicago-il/">Chicago IL</a></div>
 +    <ul>
 +        <li>
 +            <a href="/tags/pizza">pizza</a>
 +        </li>
 +        <li>
 +            <a href="/tags/beer">beer</a>
 +        </li>
 +        <li>
 +            <a href="/tags/hot-dogs">hot dogs</a>
 +        </li>
 +    </ul>
 +</header>
 +```
 +{{% /output %}}
 +
 +
 +[singletemplate]: /templates/single-page-templates/
index 3b98b13ba876487618afeae330b3aa0def9b91a7,0000000000000000000000000000000000000000..4ba2b2325ff34e725d3337436b06faa5ffa44136
mode 100644,000000..100644
--- /dev/null
@@@ -1,141 -1,0 +1,137 @@@
- ```html
 +---
 +title: where
 +# linktitle: where
 +description: Filters an array to only the elements containing a matching value for a given field.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [filtering]
 +signature: ["where COLLECTION KEY [OPERATOR] MATCH"]
 +workson: [lists,taxonomies,terms,groups]
 +hugoversion:
 +relatedfuncs: [intersect,first,after,last]
 +deprecated: false
 +toc: true
 +needsexample: true
 +---
 +
 +`where` filters an array to only the elements containing a matching value for a given field.
 +
- ```toml
++```
 +{{ range where .Data.Pages "Section" "post" }}
 +  {{ .Content }}
 +{{ end }}
 +```
 +
 +It can be used by dot-chaining the second argument to refer to a nested element of a value.
 +
- ```html
++```
 ++++
 +series: golang
 ++++
 +```
 +
- ```html
++```
 +{{ range where .Site.Pages "Params.series" "golang" }}
 +   {{ .Content }}
 +{{ end }}
 +```
 +
 +It can also be used with the logical operators `!=`, `>=`, `in`, etc. Without an operator, `where` compares a given field with a matching value equivalent to `=`.
 +
- ```html
++```
 +{{ range where .Data.Pages "Section" "!=" "post" }}
 +   {{ .Content }}
 +{{ end }}
 +```
 +
 +The following logical operators are vailable with `where`:
 +
 +`=`, `==`, `eq`
 +: `true` if a given field value equals a matching value
 +
 +`!=`, `<>`, `ne`
 +: `true` if a given field value doesn't equal a matching value
 +
 +`>=`, `ge`
 +: `true` if a given field value is greater than or equal to a matching value
 +
 +`>`, `gt`
 +: `true` if a given field value is greater than a matching value
 +
 +`<=`, `le`
 +: `true` if a given field value is lesser than or equal to a matching value
 +
 +`<`, `lt`
 +: `true` if a given field value is lesser than a matching value
 +
 +`in`
 +: `true` if a given field value is included in a matching value; a matching value must be an array or a slice
 +
 +`not in`
 +: `true` if a given field value isn't included in a matching value; a matching value must be an array or a slice
 +
 +`intersect`
 +: `true` if a given field value that is a slice/array of strings or integers contains elements in common with the matching value; it follows the same rules as the [`intersect` function][intersect].
 +
 +## Use `where` with `intersect`
 +
- {{% code file="where-intersect-variables.html" %}}
- ```html
++```
 +{{ range where .Site.Pages ".Params.tags" "intersect" .Params.tags }}
 +  {{ if ne .Permalink $.Permalink }}
 +    {{ .Render "summary" }}
 +  {{ end }}
 +{{ end }}
 +```
 +
 +You can also put the returned value of the `where` clauses into a variable:
 +
- ```
- {{% /code %}}
++{{< code file="where-intersect-variables.html" >}}
 +{{ $v1 := where .Site.Pages "Params.a" "v1" }}
 +{{ $v2 := where .Site.Pages "Params.b" "v2" }}
 +{{ $filtered := $v1 | intersect $v2 }}
 +{{ range $filtered }}
 +{{ end }}
- {{% code file="where-with-first.html" %}}
- ```html
++{{< /code >}}
 +
 +## Use `where` with `first`
 +
 +The following grabs the first five content files in `post` using the [default ordering](/templates/lists/) for lists (i.e., `weight => date`):
 +
- ```
- {{% /code %}}
++{{< code file="where-with-first.html" >}}
 +{{ range first 5 (where .Data.Pages "Section" "post") }}
 +   {{ .Content }}
 +{{ end }}
- ```html
++{{< /code >}}
 +
 +## Nest `where` Clauses
 +
 +You can also nest `where` clauses to drill down on lists of content by more than one parameter. The following first grabs all pages in the "blog" section and then ranges through the result of the first `where` clause and finds all pages that are *not* featured:
 +
- ```html
++```
 +{{ range where (where .Data.Pages "Section" "blog" ) ".Params.featured" "!=" "true" }}
 +```
 +
 +## Unset Fields
 +
 +Filtering only works for set fields. To check whether a field is set or exists, you can use the operand `nil`.
 +
 +This can be useful to filter a small amount of pages from a large pool. Instead of set field on all pages, you can set field on required pages only.
 +
 +Only the following operators are available for `nil`
 +
 +* `=`, `==`, `eq`: True if the given field is not set.
 +* `!=`, `<>`, `ne`: True if the given field is set.
 +
++```
 +{{ range where .Data.Pages ".Params.specialpost" "!=" nil }}
 +   {{ .Content }}
 +{{ end }}
 +```
 +
 +[intersect]: /functions/intersect/
index 42abcbbbf33d0a6c5aa625b16a5fc2e824d3dfac,0000000000000000000000000000000000000000..271f56db7bfcfae5bf8332ebdc27f7a19bbc1149
mode 100644,000000..100644
--- /dev/null
@@@ -1,33 -1,0 +1,31 @@@
- {{% code file="layouts/partials/twitter.html" %}}
- ```html
 +---
 +title: with
 +# linktitle: with
 +description: Rebinds the context (`.`) within its scope and skips the block if the variable is absent.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-12
 +categories: [functions,fundamentals]
 +menu:
 +  docs:
 +    parent: "functions"
 +#tags: [conditionals]
 +signature: ["with INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +---
 +
 +An alternative way of writing an `if` statement and then referencing the same value is to use `with` instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent or unset.
 +
 +The following example checks for a [user-defined site variable](/variables/site/) called `twitteruser`. If the key-value is not set, the following will render nothing:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/twitter.html" >}}
 +{{with .Site.Params.twitteruser}}<span class="twitter">
 +<a href="https://twitter.com/{{.}}" rel="author">
 +<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
 + alt="Twitter"></a>
 +</span>{{end}}
++{{< /code >}}
index 7946fdb26a86e2e76faed178b63280775f85eb01,0000000000000000000000000000000000000000..fd399173b0589fdb520df1e0d8d7b1ee82eadc2b
mode 100644,000000..100644
--- /dev/null
@@@ -1,23 -1,0 +1,23 @@@
- title: Getting Started
- linktitle: Getting Started Overview
 +---
++title: Get Started
++linktitle: Get Started Overview
 +description: Quick start and guides for installing Hugo on your preferred operating system.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [getting started]
 +#tags: [usage,docs]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 1
 +weight: 0001  #rem
 +draft: false
 +aliases: [/overview/introduction/]
 +toc: false
 +---
 +
 +If this is your first time using Hugo and you've [already installed Hugo on your machine][installed], we recommend the [quick start][].
 +
 +[installed]: /getting-started/installing/
 +[quick start]: /getting-started/quick-start/
index 43baa0f0c4115c3e1f269f03115cd1a4e6916b69,0000000000000000000000000000000000000000..5aa5160e091617f8c8661e4d226062c76658b73e
mode 100644,000000..100644
--- /dev/null
@@@ -1,401 -1,0 +1,391 @@@
- title: Configuring Hugo
 +---
- {{% code file="config.yml"%}}
- ```yaml
++title: Configure Hugo
 +linktitle: Configuration
 +description: Often the default settings are good enough, but the config file can provide highly granular control over how your site is rendered.
 +date: 2013-07-01
 +publishdate: 2017-01-02
 +lastmod: 2017-03-05
 +categories: [getting started,fundamentals]
 +#tags: [configuration,toml,yaml,json]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +aliases: [/overview/source-directory/,/overview/configuration/]
 +toc: true
 +---
 +
 +The [directory structure][] of a Hugo website&mdash;or more precisely, the source organization of files containing the website's content and templates&mdash;provides most of the configuration information that Hugo needs in order to generate a finished website.
 +
 +Because of Hugo's sensible defaults, many websites may not need a configuration file. Hugo is designed to recognize certain typical usage patterns.
 +
 +## Configuration Lookup Order
 +
 +Similar to the template [lookup order][], Hugo has a default set of rules for searching for a configuration file in the root of your website's source directory as a default behavior:
 +
 +1. `./config.toml`
 +2. `./config.yaml`
 +3. `./config.json`
 +
 +In your `config` file, you can direct Hugo as to how you want your website rendered, control your website's menus, and arbitrarily define site-wide parameters specific to your project.
 +
 +## YAML Configuration
 +
 +The following is a typical example of a YAML configuration file. Note the document opens with 3 hyphens and closes with 3 periods. The values nested under `params:` will populate the [`.Site.Params`][] variable for use in [templates][]:
 +
- ```
- {{% /code %}}
++{{< code file="config.yml">}}
 +---
 +baseURL: "https://yoursite.example.com/"
 +title: "My Hugo Site"
 +footnoteReturnLinkContents: "↩"
 +permalinks:
 +  post: /:year/:month/:title/
 +params:
 +  Subtitle: "Hugo is Absurdly Fast!"
 +  AuthorName: "Jon Doe"
 +  GitHubUser: "spf13"
 +  ListOfFoo:
 +    - "foo1"
 +    - "foo2"
 +  SidebarRecentLimit: 5
 +...
- {{% code file="config.yml" download="config.yml" %}}
- ```yaml
++{{< /code >}}
 +
 +### All Variables, YAML
 +
 +The following is the full list of Hugo-defined variables in an example YAML file. The values provided in this example represent the default values used by Hugo.
 +
- ```
- {{% /code %}}
++{{< code file="config.yml" download="config.yml" >}}
 +---
 +archetypeDir:               "archetypes"
 +# hostname (and path) to the root, e.g. http://spf13.com/
 +baseURL:                    ""
 +# include content marked as draft
 +buildDrafts:                false
 +# include content with publishdate in the future
 +buildFuture:                false
 +# include content already expired
 +buildExpired:               false
 +# enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs. See the "URL Management" page
 +relativeURLs:               false
 +canonifyURLs:               false
 +# config file (default is path/config.yaml|json|toml)
 +config:                     "config.toml"
 +contentDir:                 "content"
 +dataDir:                    "data"
 +defaultExtension:           "html"
 +defaultLayout:              "post"
 +# Missing translations will default to this content language
 +defaultContentLanguage:     "en"
 +# Renders the default content language in subdir, e.g. /en/. The root directory / will redirect to /en/
 +defaultContentLanguageInSubdir: false
 +disableLiveReload:          false
 +# Do not build RSS files
 +disableRSS:                 false
 +# Do not build Sitemap file
 +disableSitemap:             false
 +# Enable GitInfo feature
 +enableGitInfo:              false
 +# Build robots.txt file
 +enableRobotsTXT:            false
 +# Do not render 404 page
 +disable404:                 false
 +# Do not inject generator meta tag on homepage
 +disableHugoGeneratorInject: false
 +# Allows you to disable all page types and will render nothing related to 'kind';
 +# values = "page", "home", "section", "taxonomy", "taxonomyTerm", "RSS", "sitemap", "robotsTXT", "404"
 +disableKinds: []
 +# Do not make the url/path to lowercase
 +disablePathToLower:         false                   ""
 +# Enable Emoji emoticons support for page content; see emoji-cheat-sheet.com
 +enableEmoji:                false
 +# Show a placeholder instead of the default value or an empty string if a translation is missing
 +enableMissingTranslationPlaceholders: false
 +footnoteAnchorPrefix:       ""
 +footnoteReturnLinkContents: ""
 +# google analytics tracking id
 +googleAnalytics:            ""
 +# if true, auto-detect Chinese/Japanese/Korean Languages in the content. (.Summary and .WordCount can work properly in CJKLanguage)
 +hasCJKLanguage:             false
 +languageCode:               ""
 +layoutDir:                  "layouts"
 +# Enable Logging
 +log:                        false
 +# Log File path (if set, logging enabled automatically)
 +logFile:                    ""
 +# "toml","yaml", or "json"
 +metaDataFormat:             "toml"
 +newContentEditor:           ""
 +# Don't sync permission mode of files
 +noChmod:                    false
 +# Don't sync modification time of files
 +noTimes:                    false
 +# Pagination
 +paginate:                   10
 +paginatePath:               "page"
 +# See "content-management/permalinks"
 +permalinks:
 +# Pluralize titles in lists using inflect
 +pluralizeListTitles:        true
 +# Preserve special characters in taxonomy names ("Gérard Depardieu" vs "Gerard Depardieu")
 +preserveTaxonomyNames:      false
 +# filesystem path to write files to
 +publishDir:                 "public"
 +# enables syntax guessing for code fences without specified language
 +pygmentsCodeFencesGuessSyntax: false
 +# color-codes for highlighting derived from this style
 +pygmentsStyle:              "monokai"
 +# true use pygments-css or false will color code directly
 +pygmentsUseClasses:         false
 +# maximum number of items in the RSS feed
 +rssLimit:                   15
 +# see "Section Menu for Lazy Bloggers", /templates/menu-templates for more info
 +SectionPagesMenu:           ""
 +# default sitemap configuration map
 +sitemap:
 +# filesystem path to read files relative from
 +source:                     ""
 +staticDir:                  "static"
 +# display memory and timing of different steps of the program
 +stepAnalysis:               false
 +# theme to use (located by default in /themes/THEMENAME/)
 +themesDir:                  "themes"
 +theme:                      ""
 +title:                      ""
 +# if true, use /filename.html instead of /filename/
 +uglyURLs:                   false
 +# verbose output
 +verbose:                    false
 +# verbose logging
 +verboseLog:                 false
 +# watch filesystem for changes and recreate as needed
 +watch:                      true
 +taxonomies:
 +  - category:               "categories"
 +  - tag:                    "tags"
 +---
- ```toml
++{{< /code >}}
 +
 +## TOML Configuration
 +
 +The following is an example of a TOML configuration file. The values under `[params]` will populate the `.Site.Params` variable for use in [templates][]:
 +
- {{% code file="config.toml" download="config.toml"%}}
- ```toml
++```
 +contentDir = "content"
 +layoutDir = "layouts"
 +publishDir = "public"
 +buildDrafts = false
 +baseURL = "https://yoursite.example.com/"
 +canonifyURLs = true
 +title = "My Hugo Site"
 +
 +[taxonomies]
 +  category = "categories"
 +  tag = "tags"
 +
 +[params]
 +  subtitle = "Hugo is Absurdly Fast!"
 +  author = "John Doe"
 +```
 +
 +### All Variables, TOML
 +
 +The following is the full list of Hugo-defined variables in an example TOML file. The values provided in this example represent the default values used by Hugo.
 +
- ```
- {{% /code %}}
++{{< code file="config.toml" download="config.toml">}}
 ++++
 +archetypeDir =                "archetypes"
 +# hostname (and path) to the root, e.g. http://spf13.com/
 +baseURL =                     ""
 +# include content marked as draft
 +buildDrafts =                 false
 +# include content with publishdate in the future
 +buildFuture =                 false
 +# include content already expired
 +buildExpired =                false
 +# enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs.
 +relativeURLs =                false
 +canonifyURLs =                false
 +# config file (default is path/config.yaml|json|toml)
 +config =                     "config.toml"
 +contentDir =                  "content"
 +dataDir =                     "data"
 +defaultExtension =            "html"
 +defaultLayout =               "post"
 +# Missing translations will default to this content language
 +defaultContentLanguage =      "en"
 +# Renders the default content language in subdir, e.g. /en/. The root directory / will redirect to /en/
 +defaultContentLanguageInSubdir =  false
 +disableLiveReload =           false
 +# Do not build RSS files
 +disableRSS =                  false
 +# Do not build Sitemap file
 +disableSitemap =              false
 +# Enable GitInfo feature
 +enableGitInfo =               false
 +# Build robots.txt file
 +enableRobotsTXT =             false
 +# Do not render 404 page
 +disable404 =                  false
 +# Do not inject generator meta tag on homepage
 +disableHugoGeneratorInject =  false
 +# Allows you to disable all page types and will render nothing related to 'kind';
 +# values = "page", "home", "section", "taxonomy", "taxonomyTerm", "RSS", "sitemap", "robotsTXT", "404"
 +disableKinds = []
 +# Do not make the url/path to lowercase
 +disablePathToLower =          false
 +# Enable Emoji emoticons support for page content; see emoji-cheat-sheet.com
 +enableEmoji =                 false
 +# Show a placeholder instead of the default value or an empty string if a translation is missing
 +enableMissingTranslationPlaceholders = false
 +footnoteAnchorPrefix =        ""
 +footnoteReturnLinkContents =  ""
 +# google analytics tracking id
 +googleAnalytics =             ""
 +# if true, auto-detect Chinese/Japanese/Korean Languages in the content. (.Summary and .WordCount can work properly in CJKLanguage)
 +hasCJKLanguage =              false
 +languageCode =                ""
 +layoutDir =                   "layouts"
 +# Enable Logging
 +log =                         false
 +# Log File path (if set, logging enabled automatically)
 +logFile =
 +# maximum number of items in the RSS feed
 +rssLimit =                    15
 +# "toml","yaml", or "json"
 +metaDataFormat =              "toml"
 +newContentEditor =            ""
 +# Don't sync permission mode of files
 +noChmod =                     false
 +# Don't sync modification time of files
 +noTimes =                     false
 +# Pagination
 +paginate =                    10
 +paginatePath =                "page"
 +# See "content-management/permalinks"
 +permalinks =
 +# Pluralize titles in lists using inflect
 +pluralizeListTitles =         true
 +# Preserve special characters in taxonomy names ("Gérard Depardieu" vs "Gerard Depardieu")
 +preserveTaxonomyNames =       false
 +# filesystem path to write files to
 +publishDir =                  "public"
 +# enables syntax guessing for code fences without specified language
 +pygmentsCodeFencesGuessSyntax = false
 +# color-codes for highlighting derived from this style
 +pygmentsStyle =               "monokai"
 +# true: use pygments-css or false: color-codes directly
 +pygmentsUseClasses =          false
 +# see "Section Menu for Lazy Bloggers", /templates/menu-templates for more info
 +SectionPagesMenu =
 +# default sitemap configuration map
 +sitemap =
 +# filesystem path to read files relative from
 +source =                      ""
 +staticDir =                   "static"
 +# display memory and timing of different steps of the program
 +stepAnalysis =                false
 +# theme to use (located by default in /themes/THEMENAME/)
 +themesDir =                   "themes"
 +theme =                       ""
 +title =                       ""
 +# if true, use /filename.html instead of /filename/
 +uglyURLs =                    false
 +# verbose output
 +verbose =                     false
 +# verbose logging
 +verboseLog =                  false
 +# watch filesystem for changes and recreate as needed
 +watch =                       true
 +[taxonomies]
 +  category = "categories"
 +  tag = "tags"
 ++++
- ```bash
++{{< /code >}}
 +
 +{{% note %}}
 +If you are developing your site on a \*nix machine, here is a handy shortcut for finding a configuration option from the command line:
- ```bash
++```
 +~/sites/yourhugosite
 +hugo config | grep emoji
 +enableemoji: true
 +```
 +{{% /note %}}
 +
 +## Environmental Variables
 +
 +In addition to the 3 config options already mentioned, configuration key-values can be defined through operating system environment variables.
 +
 +For example, the following command will effectively set a website's title on Unix-like systems:
 +
- ```toml
++```
 +$ env HUGO_TITLE="Some Title" hugo
 +```
 +
 +{{% note "Setting Environment Variables" %}}
 +Names must be prefixed with `HUGO_` and the configuration key must be set in uppercase when setting operating system environment variables.
 +{{% /note %}}
 +
 +## Ignore Files When Rendering
 +
 +The following statement inside `./config.toml` will cause Hugo to ignore files ending with `.foo` and `.boo` when rendering:
 +
- {{% code file="bf-config.toml" %}}
- ```toml
++```
 +ignoreFiles = [ "\\.foo$", "\\.boo$" ]
 +```
 +
 +The above is a list of regular expressions. Note that the backslash (`\`) character is escaped in this example to keep TOML happy.
 +
 +## Configure Blackfriday
 +
 +[Blackfriday](https://github.com/russross/blackfriday) is Hugo's built-in Markdown rendering engine.
 +
 +Hugo typically configures Blackfriday with sane default values that should fit most use cases reasonably well.
 +
 +However, if you have specific needs with respect to Markdown, Hugo exposes some of its Blackfriday behavior options for you to alter. The following table lists these Hugo options, paired with the corresponding flags from Blackfriday's source code ( [html.go](https://github.com/russross/blackfriday/blob/master/html.go) and [markdown.go](https://github.com/russross/blackfriday/blob/master/markdown.go)).
 +
 +{{< readfile file="/content/readfiles/bfconfig.md" markdown="true" >}}
 +
 +{{% note %}}
 +1. Blackfriday flags are *case sensitive* as of Hugo v0.15.
 +2. Blackfriday flags must be grouped under the `blackfriday` key and can be set on both the site level *and* the page level. Any setting on a page will override its respective site setting.
 +{{% /note %}}
 +
- ```
- {{% /code %}}
++{{< code file="bf-config.toml" >}}
 +[blackfriday]
 +  angledQuotes = true
 +  fractions = false
 +  plainIDAnchors = true
 +  extensions = ["hardLineBreak"]
- {{% code file="bf-config.yml" %}}
- ```yaml
++{{< /code >}}
 +
- ```
- {{% /code %}}
++{{< code file="bf-config.yml" >}}
 +blackfriday:
 +  angledQuotes: true
 +  fractions: false
 +  plainIDAnchors: true
 +  extensions:
 +    - hardLineBreak
++{{< /code >}}
 +
 +## Configure Additional Output Formats
 +
 +Hugo v0.20 introduced the ability to render your content to multiple output formats (e.g., to JSON, AMP html, or CSV). See [Output Formats][] for information on how to add these values to your Hugo project's configuration file.
 +
 +## Configuration Format Specs
 +
 +* [TOML Spec][toml]
 +* [YAML Spec][yaml]
 +* [JSON Spec][json]
 +
 +[`.Site.Params`]: /variables/site/
 +[directory structure]: /getting-started/directory-structure
 +[json]: /documents/ecma-404-json-spec.pdf
 +[lookup order]: /templates/lookup-order/
 +[Output Formats]: /templates/output-formats/
 +[templates]: /templates/
 +[toml]: https://github.com/toml-lang/toml
 +[yaml]: http://yaml.org/spec/
index 7a6536f0e9e56e040e40411c69555ec5ae2b2a72,0000000000000000000000000000000000000000..2d1e121ba2ff5381aacf9ea4f56149eee5bbc052
mode 100644,000000..100644
--- /dev/null
@@@ -1,82 -1,0 +1,82 @@@
- ```bash
 +---
 +title: Directory Structure
 +linktitle: Directory Structure
 +description: Hugo's CLI scaffolds a project directory structure and then takes that single directory and uses it as the input to create a complete website.
 +date: 2017-01-02
 +publishdate: 2017-02-01
 +lastmod: 2017-03-09
 +categories: [getting started,fundamentals]
 +#tags: [source, organization, directories]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 50
 +weight: 50
 +sections_weight: 50
 +draft: false
 +aliases: [/overview/source-directory/]
 +toc: true
 +---
 +
 +## New Site Scaffolding
 +
 +Running the `hugo new site` generator from the command line will create a directory structure with the following elements:
 +
++```
 +.
 +├── archetypes
 +├── config.toml
 +├── content
 +├── data
 +├── layouts
 +├── static
 +└── themes
 +```
 +
 +
 +## Directory Structure Explained
 +
 +The following is a high-level overview of each of the directories with links to each of their respective sections with in the Hugo docs.
 +
 +[`archetypes`](/content-management/archetypes/)
 +: You can create new content files in Hugo using the `hugo new` command.
 +By default, hugo will create new content files with at least `date`, `title` (inferred from the file name), and `draft = true`. This saves time and promotes consistency for sites using multiple content types. You can create your own [archetypes][] with custom preconfigured front matter fields as well.
 +
 +[`config.toml`](/getting-started/configuration/)
 +: Every Hugo project should have a configuration file in TOML, YAML, or JSON format at the root. Many sites may need little to no configuration, but Hugo ships with a large number of [configuration directives][] for more granular directions on how you want Hugo to build your website.
 +
 +[`content`][]
 +: All content for your website will live inside this directory. Each top-level folder in Hugo is considered a [content section][]. For example, if your site has three main sections---`blog`, `articles`, and `tutorials`---you will have three directories at `content/blog`, `content/articles`, and `content/tutorials`. Hugo uses sections to assign default [content types][].
 +
 +[`data`](/templates/data-templates/)
 +: This directory is used to store configuration files that can be
 +used by Hugo when generating your website. You can write these files in YAML, JSON, or TOML format. In addition to the files you add to this folder, you can also create [data templates][] that pull from dynamic content.
 +
 +[`layouts`][]
 +: Stores templates in the form of `.html` files that specify how views of your content will be rendered into a static website. Templates include [list pages][lists], your [homepage][], [taxonomy templates][], [partials][], [single page templates][singles], and more.
 +
 +`static`
 +: stores all the static content for your future website: images, CSS, JavaScript, etc. When Hugo builds your site, all assets inside your static directory are copied over as-is. A good example of using the `static` folder is for [verifying site ownership on Google Search Console][searchconsole], where you want Hugo to copy over a complete HTML file without modifying its content.
 +
 +{{% note %}}
 +Hugo does not currently ship with an asset pipeline ([#3207](https://github.com/gohugoio/hugo/issues/3207)). You can solicit support from the community in the [Hugo forums](https://discourse.gohugo.io) or check out a few of the [Hugo starter kits](/tools/starter-kits/) for examples of how Hugo developers are managing static assets.
 +{{% /note %}}
 +
 +
 +[archetypes]: /content-management/archetypes/
 +[configuration directives]: /getting-started/configuration/#all-variables-yaml
 +[`content`]: /content-management/organization/
 +[content section]: /content-management/sections/
 +[content types]: /content-management/types/
 +[data templates]: /templates/data-templates/
 +[homepage]: /templates/homepage/
 +[`layouts`]: /templates/
 +[lists]: /templates/list/
 +[pagevars]: /variables/page/
 +[partials]: /templates/partials/
 +[searchconsole]: https://support.google.com/analytics/answer/1142414?hl=en
 +[singles]: /templates/single-page-templates/
 +[starters]: /tools/starter-kits/
 +[taxonomies]: /content-management/taxonomies/
 +[taxonomy templates]: /templates/taxonomy-templates/
 +[types]: /content-management/types/
index a880788f1fb5e2e10046bc250584bc22018a40e8,0000000000000000000000000000000000000000..d7d79ef9cfec60eedc248da026a7d697037e6519
mode 100644,000000..100644
--- /dev/null
@@@ -1,502 -1,0 +1,492 @@@
- {{% code file="install-with-homebrew.sh" %}}
- ```bash
 +---
 +title: Install Hugo
 +linktitle: Install Hugo
 +description: Install Hugo on macOS, Windows, Linux, FreeBSD, and on any machine where the Go compiler tool chain can run.
 +date: 2016-11-01
 +publishdate: 2016-11-01
 +lastmod: 2017-02-20
 +categories: [getting started,fundamentals]
 +authors: ["Michael Henderson"]
 +#tags: [install,pc,windows,linux,macos,binary,tarball]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +aliases: [/tutorials/installing-on-windows/,/tutorials/installing-on-mac/,/overview/installing/,/getting-started/install,/install/]
 +toc: true
 +---
 +
 +
 +{{% note %}}
 +There is lots of talk about "Hugo being written in Go", but you don't need to install Go to enjoy Hugo. Just grab a precompiled binary!
 +{{% /note %}}
 +
 +Hugo is written in [Go](https://golang.org/) with support for multiple platforms. The latest release can be found at [Hugo Releases][releases].
 +
 +Hugo currently provides pre-built binaries for the following:
 +
 +* <i class="icon-apple"></i> macOS (Darwin) for x64, i386, and ARM architectures
 +* <i class="icon-windows"></i> Windows
 +* <i class="icon-linux"></i> Linux
 +* <i class="icon-freebsd"></i> FreeBSD
 +
 +Hugo may also be compiled from source wherever the Go compiler tool chain can run; e.g., on other operating systems such as DragonFly BSD, OpenBSD, Plan&nbsp;9, Solaris, and others. See <https://golang.org/doc/install/source> for the full set of supported combinations of target operating systems and compilation architectures.
 +
 +## Quick Install
 +
 +### Binary (Cross-platform)
 +
 +Download the appropriate version for your platform from [Hugo Releases][releases]. Once downloaded, the binary can be run from anywhere. You don't need to install it into a global location. This works well for shared hosts and other systems where you don't have a privileged account.
 +
 +Ideally, you should install it somewhere in your `PATH` for easy use. `/usr/local/bin` is the most probable location.
 +
 +### Homebrew (macOS)
 +
 +If you are on macOS and using [Homebrew][brew], you can install Hugo with the following one-liner:
 +
- ```
- {{% /code %}}
++{{< code file="install-with-homebrew.sh" >}}
 +brew install hugo
- {{% code file="install-with-chocolatey.ps1" %}}
- ```powershell
++{{< /code >}}
 +
 +For more detailed explanations, read the installation guides that follow for installing on macOS and Windows.
 +
 +### Chocolatey (Windows)
 +
 +If you are on a Windows machine and use [Chocolatey][] for package management, you can install Hugo with the following one-liner:
 +
- ```
- {{% /code %}}
++{{< code file="install-with-chocolatey.ps1" >}}
 +choco install hugo -confirm
- {{% code file="from-gh.sh" %}}
- ```sh
++{{< /code >}}
 +
 +### Source
 +
 +#### Prerequisite Tools
 +
 +* [Git][installgit]
 +* [Go 1.5+][installgo]
 +* [govendor][]
 +
 +#### Vendored Dependencies
 +
 +Hugo uses [govendor][] to vendor dependencies, but we don't commit the vendored packages themselves to the Hugo git repository. Therefore, a simple `go get` is *not* supported because the command is not vendor aware. *You must use `govendor` to fetch Hugo's dependencies.*
 +
 +#### Fetch from GitHub
 +
- ```
- {{% /code %}}
++{{< code file="from-gh.sh" >}}
 +go get github.com/kardianos/govendor
 +govendor get github.com/gohugoio/hugo
 +go install github.com/gohugoio/hugo
- {{% code file="install-brew.sh" %}}
- ```bash
++{{< /code >}}
 +
 +`govendor get` will fetch Hugo and all its dependent libraries to `$GOPATH/src/github.com/gohugoio/hugo`, and `go install` compiles everything into a final `hugo` (or `hugo.exe`) executable inside `$GOPATH/bin/`.
 +
 +{{% note %}}
 +If you are a Windows user, substitute the `$HOME` environment variable above with `%USERPROFILE%`.
 +{{% /note %}}
 +
 +## <i class="icon-apple"></i>macOS
 +
 +### Assumptions
 +
 +1. You know how to open the macOS terminal.
 +2. You're running a modern 64-bit Mac.
 +3. You will use `~/Sites` as the starting point for your site. (`~/Sites` is used for example purposes. If you are familiar enough with the command line and file system, you should have no issues following along with the instructions.)
 +
 +### Pick Your Method
 +
 +There are three ways to install Hugo on your Mac
 +
 +1. The [Homebrew][brew] `brew` utility
 +2. Distribution (i.e., tarball)
 +3. Building from Source
 +
 +There is no "best" way to install Hugo on your Mac. You should use the method that works best for your use case.
 +
 +#### Pros and Cons
 +
 +There are pros and cons to each of the aforementioned methods:
 +
 +1. **Homebrew.** Homebrew is the simplest method and will require the least amount of work to maintain. The drawbacks aren't severe. The default package will be for the most recent release, so it will not have bug fixes until the next release (i.e., unless you install it with the `--HEAD` option). Hugo `brew` releases may lag a few days behind because it has to be coordinated with another team. Nevertheless, `brew` is the recommended installation method if you want to work from a stable, widely used source. Brew works well and is easy to update.
 +
 +2. **Tarball.** Downloading and installing from the tarball is also easy, although it requires a few more command line skills than does Homebrew. Updates are easy as well: you just repeat the process with the new binary. This gives you the flexibility to have multiple versions on your computer. If you don't want to use `brew`, then the tarball/binary is a good choice.
 +
 +3. **Building from Source.** Building from source is the most work. The advantage of building from source is that you don't have to wait for a release to add features or bug fixes. The disadvantage is that you need to spend more time managing the setup, which is manageable but requires more time than the preceding two options.
 +
 +{{% note %}}
 +Since building from source is appealing to more seasoned command line users, this guide will focus more on installing Hugo via Homebrew and Tarball.
 +{{% /note %}}
 +
 +### Install Hugo with Brew
 +
 +#### 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:
 +
- ```
- {{% /code %}}
++{{< code file="install-brew.sh" >}}
 +ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- {{% code file="install-brew.sh" %}}
- ```bash
++{{< /code >}}
 +
 +#### Step 2: Run the `brew` Command to Install `hugo`
 +
 +Installing Hugo using `brew` is as easy as the following:
 +
- ```
- {{% /code %}}
++{{< code file="install-brew.sh" >}}
 +brew install hugo
- ```sh
++{{< /code >}}
 +
 +If Homebrew is working properly, you should see something similar to the following:
 +
- ```bash
++```
 +==> Downloading https://homebrew.bintray.com/bottles/hugo-0.21.sierra.bottle.tar.gz
 +######################################################################### 100.0%
 +==> Pouring hugo-0.21.sierra.bottle.tar.gz
 +🍺  /usr/local/Cellar/hugo/0.21: 32 files, 17.4MB
 +```
 +
 +{{% note "Installing the Latest Hugo with Brew" %}}
 +Replace `brew install hugo` with `brew install hugo --HEAD` if you want the absolute latest in-development version.
 +{{% /note %}}
 +
 +`brew` should have updated your path to include Hugo. You can confirm by opening a new terminal window and running a few commands:
 +
- ```bash
++```
 +$ # show the location of the hugo executable
 +which hugo
 +/usr/local/bin/hugo
 +
 +# show the installed version
 +ls -l $( which hugo )
 +lrwxr-xr-x  1 mdhender admin  30 Mar 28 22:19 /usr/local/bin/hugo -> ../Cellar/hugo/0.13_1/bin/hugo
 +
 +# verify that hugo runs correctly
 +hugo version
 +Hugo Static Site Generator v0.13 BuildDate: 2015-03-09T21:34:47-05:00
 +```
 +
 +### Install Hugo from Tarball
 +
 +#### Step 1: Decide on the location
 +
 +When installing from the tarball, you have to decide if you're going to install the binary in `/usr/local/bin` or in your home directory. There are three camps on this:
 +
 +1. Install it in `/usr/local/bin` so that all the users on your system have access to it. This is a good idea because it's a fairly standard place for executables. The downside is that you may need elevated privileges to put software into that location. Also, if there are multiple users on your system, they will all run the same version. Sometimes this can be an issue if you want to try out a new release.
 +
 +2. Install it in `~/bin` so that only you can execute it. This is a good idea because it's easy to do, easy to maintain, and doesn't require elevated privileges. The downside is that only you can run Hugo. If there are other users on your site, they have to maintain their own copies. That can lead to people running different versions. Of course, this does make it easier for you to experiment with different releases.
 +
 +3. Install it in your `Sites` directory. This is not a bad idea if you have only one site that you're building. It keeps every thing in a single place. If you want to try out new releases, you can make a copy of the entire site and update the Hugo executable.
 +
 +All three locations will work for you. In the interest of brevity, this guide focuses on option #2.
 +
 +#### Step 2: Download the Tarball
 +
 +1. Open <https://github.com/gohugoio/hugo/releases> in your browser.
 +
 +2. Find the current release by scrolling down and looking for the green tag that reads "Latest Release."
 +
 +3. Download the current tarball for the Mac. The name will be something like `hugo_X.Y_osx-64bit.tgz`, where `X.YY` is the release number.
 +
 +4. By default, the tarball will be saved to your `~/Downloads` directory. If you choose to use a different location, you'll need to change that in the following steps.
 +
 +#### Step 3: Confirm your download
 +
 +Verify that the tarball wasn't corrupted during the download:
 +
- ```bash
++```
 +tar tvf ~/Downloads/hugo_X.Y_osx-64bit.tgz
 +-rwxrwxrwx  0 0      0           0 Feb 22 04:02 hugo_X.Y_osx-64bit/hugo_X.Y_osx-64bit.tgz
 +-rwxrwxrwx  0 0      0           0 Feb 22 03:24 hugo_X.Y_osx-64bit/README.md
 +-rwxrwxrwx  0 0      0           0 Jan 30 18:48 hugo_X.Y_osx-64bit/LICENSE.md
 +```
 +
 +The `.md` files are documentation for Hugo. The other file is the executable.
 +
 +#### Step 4: Install Into Your `bin` Directory
 +
- ```bash
++```
 +# create the directory if needed
 +mkdir -p ~/bin
 +
 +# make it the working directory
 +cd ~/bin
 +
 +# extract the tarball
 +tar -xvzf ~/Downloads/hugo_X.Y_osx-64bit.tgz
 +Archive:  hugo_X.Y_osx-64bit.tgz
 +  x ./
 +  x ./hugo
 +  x ./LICENSE.md
 +  x ./README.md
 +
 +# verify that it runs
 +./hugo version
 +Hugo Static Site Generator v0.13 BuildDate: 2015-02-22T04:02:30-06:00
 +```
 +
 +You may need to add your bin directory to your `PATH` variable. The `which` command will check for us. If it can find `hugo`, it will print the full path to it. Otherwise, it will not print anything.
 +
- ```bash
++```
 +# check if hugo is in the path
 +which hugo
 +/Users/USERNAME/bin/hugo
 +```
 +
 +If `hugo` is not in your `PATH`, add it by updating your `~/.bash_profile` file. First, start up an editor:
 +
- ```bash
++```
 +nano ~/.bash_profile
 +```
 +
 +Add a line to update your `PATH` variable:
 +
- ```bash
++```
 +export PATH=$PATH:$HOME/bin
 +```
 +
 +Then save the file by pressing Control-X, then Y to save the file and return to the prompt.
 +
 +Close the terminal and open a new terminal to pick up the changes to your profile. Verify your success by running the `which hugo` command again.
 +
 +You've successfully installed Hugo.
 +
 +### Build from Source on Mac
 +
 +If you want to compile Hugo yourself, you'll need to install Go (aka Golang). You can [install Go directly from the Go website](https://golang.org/dl/) or via Homebrew using the following command:
 +
- ```bash
++```
 +brew install go
 +```
 +
 +#### Step 1: Get the Source
 +
 +If you want to compile a specific version of Hugo, go to <https://github.com/gohugoio/hugo/releases> and download the source code for the version of your choice. If you want to compile Hugo with all the latest changes (which might include bugs), clone the Hugo repository:
 +
- ```bash
++```
 +git clone https://github.com/gohugoio/hugo
 +```
 +
 +{{% warning "Sometimes \"Latest\" = \"Bugs\""%}}
 +Cloning the Hugo repository directly means taking the good with the bad. By using the bleeding-edge version of Hugo, you make your development susceptible to the latest features, as well as the latest bugs. Your feedback is appreciated. If you find a bug in the latest release, [please create an issue on GitHub](https://github.com/gohugoio/hugo/issues/new).
 +{{% /warning %}}
 +
 +#### Step 2: Compiling
 +
 +Make the directory containing the source your working directory and then fetch Hugo's dependencies:
 +
- ```bash
++```
 +mkdir -p src/github.com/gohugoio
 +ln -sf $(pwd) src/github.com/gohugoio/hugo
 +
 +# set the build path for Go
 +export GOPATH=$(pwd)
 +
 +go get
 +```
 +
 +This will fetch the absolute latest version of the dependencies. If Hugo fails to build, it may be the result of a dependency's author introducing a breaking change.
 +
 +Once you have properly configured your directory, you can compile Hugo using the following command:
 +
- ```powershell
++```
 +go build -o hugo main.go
 +```
 +
 +Then place the `hugo` executable somewhere in your `$PATH`. You're now ready to start using Hugo.
 +
 +## <i class="icon-windows"></i>Windows
 +
 +The following aims to be a complete guide to installing Hugo on your Windows PC.
 +
 +### Assumptions
 +
 +1. You will use `C:\Hugo\Sites` as the starting point for your new project.
 +2. You will use `C:\Hugo\bin` to store executable files.
 +
 +### Set up Your Directories
 +
 +You'll need a place to store the Hugo executable, your [content][], and the generated Hugo website:
 +
 +1. Open Windows Explorer.
 +2. Create a new folder: `C:\Hugo`, assuming you want Hugo on your C drive, although this can go anywhere
 +3. Create a subfolder in the Hugo folder: `C:\Hugo\bin`
 +4. Create another subfolder in Hugo: `C:\Hugo\Sites`
 +
 +### Technical Users
 +
 +1. Download the latest zipped Hugo executable from [Hugo Releases][releases].
 +2. Extract all contents to your `..\Hugo\bin` folder.
 +3. The `hugo` executable will be named as `hugo_hugo-version_platform_arch.exe`. Rename the executable to `hugo.exe` for ease of use.
 +4. In PowerShell or your preferred CLI, add the `hugo.exe` executable to your PATH by navigating to `C:\Hugo\bin` (or the location of your hugo.exe file) and use the command `set PATH=%PATH%;C:\Hugo\bin`. If the `hugo` command does not work after a reboot, you may have to run the command prompt as administrator.
 +
 +### Less-technical Users
 +
 +1. Go to the [Hugo Releases][releases] page.
 +2. The latest release is announced on top. Scroll to the bottom of the release announcement to see the downloads. They're all ZIP files.
 +3. Find the Windows files near the bottom (they're in alphabetical order, so Windows is last) – download either the 32-bit or 64-bit file depending on whether you have 32-bit or 64-bit Windows. (If you don't know, [see here](https://esupport.trendmicro.com/en-us/home/pages/technical-support/1038680.aspx).)
 +4. Move the ZIP file into your `C:\Hugo\bin` folder.
 +5. Double-click on the ZIP file and extract its contents. Be sure to extract the contents into the same `C:\Hugo\bin` folder – Windows will do this by default unless you tell it to extract somewhere else.
 +6. You should now have three new files: hugo executable (e.g. `hugo_0.18_windows_amd64.exe`), `license.md`, and `readme.md`. (You can delete the ZIP download now.) Rename that hugo executable (`hugo_hugo-version_platform_arch.exe`) to `hugo.exe` for ease of use.
 +
 +Now you need to add Hugo to your Windows PATH settings:
 +
 +#### For Windows 10 Users:
 +
 +* Right click on the **Start** button.
 +* Click on **System**.
 +* Click on **Advanced System Settings** on the left.
 +* Click on the **Environment Variables...** button on the bottom.
 +* In the User variables section, find the row that starts with PATH (PATH will be all caps).
 +* Double-click on **PATH**.
 +* Click the **New...** button.
 +* Type in the folder where `hugo.exe` was extracted, which is `C:\Hugo\bin` if you went by the instructions above. *The PATH entry should be the folder where Hugo lives and not the binary.* Press <kbd>Enter</kbd> when you're done typing.
 +* Click OK at every window to exit.
 +
 +{{% note "Path Editor in Windows 10"%}}
 +The path editor in Windows 10 was added in the large [November 2015 Update](https://blogs.windows.com/windowsexperience/2015/11/12/first-major-update-for-windows-10-available-today/). You'll need to have that or a later update installed for the above steps to work. You can see what Windows 10 build you have by clicking on the <i class="fa fa-windows"></i>&nbsp;Start button → Settings → System → About. See [here](https://www.howtogeek.com/236195/how-to-find-out-which-build-and-version-of-windows-10-you-have/) for more.)
 +{{% /note %}}
 +
 +#### For Windows 7 and 8.x users:
 +
 +Windows 7 and 8.1 do not include the easy path editor included in Windows 10, so non-technical users on those platforms are advised to install a free third-party path editor like [Windows Environment Variables Editor][Windows Environment Variables Editor] or [Path Editor](https://patheditor2.codeplex.com/).
 +
 +### Verify the Executable
 +
 +Run a few commands to verify that the executable is ready to run, and then build a sample site to get started.
 +
 +#### 1. Open a Command Prompt
 +
 +At the prompt, type `hugo help` and press the <kbd>Enter</kbd> key. You should see output that starts with:
 +
- ```powershell
++```
 +hugo is the main command, used to build your Hugo site.
 +
 +Hugo is a Fast and Flexible Static Site Generator
 +built with love by spf13 and friends in Go.
 +
 +Complete documentation is available at https://gohugo.io/.
 +```
 +
 +If you do, then the installation is complete. If you don't, double-check the path that you placed the `hugo.exe` file in and that you typed that path correctly when you added it to your `PATH` variable. If you're still not getting the output, search the [Hugo discussion forum][forum] to see if others have already figured out our problem. If not, add a note---in the "Support" category---and be sure to include your command and the output.
 +
 +At the prompt, change your directory to the `Sites` directory.
 +
- ```powershell
++```
 +C:\Program Files> cd C:\Hugo\Sites
 +C:\Hugo\Sites>
 +```
 +
 +#### 2. Run the Command
 +
 +Run the command to generate a new site. I'm using `example.com` as the name of the site.
 +
- ```powershell
++```
 +C:\Hugo\Sites> hugo new site example.com
 +```
 +
 +You should now have a directory at `C:\Hugo\Sites\example.com`. Change into that directory and list the contents. You should get output similar to the following:
 +
- ```sh
++```
 +C:\Hugo\Sites&gt;cd example.com
 +C:\Hugo\Sites\example.com&gt;dir
 +&nbsp;Directory of C:\hugo\sites\example.com
 +&nbsp;
 +04/13/2015  10:44 PM    <DIR>          .
 +04/13/2015  10:44 PM    <DIR>          ..
 +04/13/2015  10:44 PM    <DIR>          archetypes
 +04/13/2015  10:44 PM                83 config.toml
 +04/13/2015  10:44 PM    <DIR>          content
 +04/13/2015  10:44 PM    <DIR>          data
 +04/13/2015  10:44 PM    <DIR>          layouts
 +04/13/2015  10:44 PM    <DIR>          static
 +               1 File(s)             83 bytes
 +               7 Dir(s)   6,273,331,200 bytes free
 +```
 +
 +### Troubleshoot Windows Installation
 +
 +[@dhersam][] has created a nice video on common issues:
 +
 +{{< youtube c8fJIRNChmU >}}
 +
 +## <i class="icon-linux"></i>Linux
 +
 +### Debian and Ubuntu
 +
 +In any of the [Linux distributions that support snaps](https://snapcraft.io/docs/core/install):
 +
- ```bash
++```
 +sudo apt install hugo
 +```
 +
 +#### Pros
 +
 +* Native Debian/Ubuntu package maintained by Debian Developers
 +* Pre-installed bash completion script and `man` pages
 +
 +#### Cons
 +
 +* Might not be the latest version, especially if you are using an older, stable version (e.g., Ubuntu 16.04 LTS). Until backports and PPA are available, you may consider installing the Hugo snap package to get the latest version of Hugo, as described below.
 +
 +### Arch
 +
 +You can also install Hugo from the [Arch user repository](https://aur.archlinux.org/) on Arch Linux or derivatives such as Manjaro.
 +
 +Be aware that Hugo is built from source. This means that additional tools like [Git](https://git-scm.com) and [Go](https://golang.org/doc/install) will be installed as well.
 +
- ```bash
++```
 +sudo pacman -S yaourt
 +yaourt -S hugo
 +```
 +
 +### Fedora, CentOS, and Red Hat
 +
 +* <https://copr.fedorainfracloud.org/coprs/spf13/Hugo/> (updated to Hugo v0.16)
 +* <https://copr.fedorainfracloud.org/coprs/daftaupe/hugo/> (updated to Hugo v0.22); usually released a few days after the official Hugo release.
 +
 +See the [related discussion in the Hugo forums][redhatforum].
 +
 +### Snap Package
 +
 +In any of the [Linux distributions that support snaps][snaps]:
 +
++```
 +snap install hugo
 +```
 +
 +{{% note %}}
 +Hugo-as-a-snap can write only inside the user’s `$HOME` directory---and gvfs-mounted directories owned by the user---because of Snaps’ confinement and security model. More information is also available [in this related GitHub issue](https://github.com/gohugoio/hugo/issues/3143).
 +{{% /note %}}
 +
 +## Upgrade Hugo
 +
 +Upgrading Hugo is as easy as downloading and replacing the executable you’ve placed in your `PATH`.
 +
 +## Install Pygments (Optional)
 +
 +The Hugo executable has one *optional* external dependency for source code highlighting ([Pygments][pygments]).
 +
 +If you want to have source code highlighting using the [highlight shortcode][], you need to install the Python-based Pygments program. The procedure is outlined on the [Pygments homepage][pygments].
 +
 +## Next Steps
 +
 +Now that you've installed Hugo, read the [Quick Start guide][quickstart] and explore the rest of the documentation. If you have questions, ask the Hugo community directly by visiting the [Hugo Discussion Forum][forum].
 +
 +[brew]: https://brew.sh/
 +[Chocolatey]: https://chocolatey.org/
 +[content]: /content-management/
 +[@dhersam]: https://github.com/dhersam
 +[forum]: https://discourse.gohugo.io
 +[govendor]: https://github.com/kardianos/govendor
 +[highlight shortcode]: /content-management/shortcodes/#highlight
 +[installgit]: http://git-scm.com/
 +[installgo]: https://golang.org/dl/
 +[Path Editor]: https://patheditor2.codeplex.com/
 +[pygments]: https://pygments.org
 +[quickstart]: /getting-started/quick-start/
 +[redhatforum]: https://discourse.gohugo.io/t/solved-fedora-copr-repository-out-of-service/2491
 +[releases]: https://github.com/gohugoio/hugo/releases
 +[snaps]: http://snapcraft.io/docs/core/install
 +[windowsarch]: https://esupport.trendmicro.com/en-us/home/pages/technical-support/1038680.aspx
 +[Windows Environment Variables Editor]: http://eveditor.com/
index 850bd107e0804ee67541b725489bb54090f2a083,0000000000000000000000000000000000000000..5559a27b34f6afcaf064cd6e341e206466b35c25
mode 100644,000000..100644
--- /dev/null
@@@ -1,574 -1,0 +1,548 @@@
- ```bash
 +---
 +title: Quick Start
 +linktitle: Quick Start
 +description: Build an online bookshelf that taps into Hugo's CLI, directory structure, configuration, and theming.
 +date: 2013-07-01
 +publishdate: 2013-07-01
 +lastmod: 2017-06-22
 +categories: [getting started]
 +#tags: [quick start,usage]
 +authors: [Shekhar Gulati, Ryan Watters]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/overview/quickstart/]
 +toc: true
 +wip: true
 +---
 +
 +{{% note %}}
 +This Quick Start was originally written by [Shekhar Gulati](https://twitter.com/shekhargulati) in his [52 Technologies in 2016](https://github.com/shekhargulati/52-technologies-in-2016) blog series but has been heavily modified to represent additional features and other changes to Hugo.
 +{{% /note %}}
 +
 +In this Quick Start, we will build an online bookshelf that lists books and their reviews.
 +
 +## Step 1. Install Hugo
 +
 +[Install Hugo][install]. If installing from [Hugo releases][releases], you'll need to save the main executable as `hugo` (or `hugo.exe` on Windows) somewhere in your `PATH`. You will need the `hugo` command in the following steps.
 +
 +{{% note "Windows Users and Git Bash" %}}
 +If you're on Windows, this Quick Start will assume you're using [Git Bash](https://git-for-windows.github.io/) (aka Git for Windows).
 +{{% /note %}}
 +
 +Once `hugo` is installed, make sure to run the `help` command to verify `hugo` installation. The following is an abridged version of what will write to the console when entering the command:
 +
- ```bash
++```
 +hugo help
 +
 +hugo is the main command, used to build your Hugo site.
 +
 +Hugo is a Fast and Flexible Static Site Generator
 +built with love by spf13 and friends in Go.
 +
 +Complete documentation is available at http://gohugo.io/.
 +```
 +
 +You can check the version of Hugo you're currently using with the `hugo version` command:
 +
- ```bash
++```
 +hugo version
 +```
 +
- ```bash
++```
 +Hugo Static Site Generator v0.18.1 BuildDate: 2016-12-30T05:02:43-05:00
 +```
 +
 +## Step 2. Scaffold Your Hugo Bookshelf Website
 +
 +Hugo's CLI has commands that allow you to quickly scaffold a new website. Navigate to your preferred location on your file system and create a new Hugo site `bookshelf` by executing the `hugo new` command:
 +
- ```bash
++```
 +hugo new site bookshelf
 +```
 +
 +Change into the newly created `bookshelf` directory. Listing the new directory's content will show the following:
 +
- {{% code file="create-new-book-review-post.sh" %}}
- ```bash
++```
 +.
 +├── archetypes
 +├── config.toml
 +├── content
 +├── data
 +├── layouts
 +├── static
 +└── themes
 +
 +6 directories, 1 file
 +```
 +
 +You'll see the `bookshelf` directory has 6 subdirectories and 1 file. Let's look at each of them quickly. (See [Directory Structure][hugodirectories].)
 +
 +* `archetypes`: [Archetypes][archetypes] allow you to preconfigure [front matter][fm] for content files for easier scaffolding of content from the command line using `hugo new`.
 +* `config.toml`: Hugo uses `.toml` as its default configuration format but also accepts `.yml` and `.json`. The configuration settings mentioned in the `config.toml` are applied to the full website an include important global variables such as the `baseURL` and `title` of your website. (See [Configuration][configuration].)
 +* `content`: This single directory houses all of the content for your website. Each subdirectory in content is considered a [section][]. If your website has sections for posts, events, and tutorials, you would create `content/posts`, `content/events`, and `content/tutorials`.
 +* `data`: This directory is used to store files of serialized data (YAML, TOML, or JSON) that can be used in [data templates][datatemplates] and your [website's menu][sitemenu].
 +* `layouts`: This is the hub for all your [templating][templating], including [list and section templates](/templates/lists/) and [shortcodes](/templates/shortcode-templates/).
 +* `static`: This houses all your static content; i.e., images, JavaScript, and CSS. Everything in `/static` is copied over *as is* to your finished website.
 +* `themes`: This is where you will download themes for Hugo. You can see a showcase of all themes at <http://themes.gohugo.io>.
 +
 +## Step 3. Add Content
 +
 +Let's now add a post to our "bookshelf." We will use the `hugo new` command to add a post. This first post will be on the book [*Good To Great*][bookurl]. Make sure you are inside the `bookshelf` directory.
 +
- ```
- {{% /code %}}
++{{< code file="create-new-book-review-post.sh" >}}
 +hugo new post/good-to-great.md
- ```bash
++{{< /code >}}
 +
 +You should then see the following output:
 +
- ```bash
++```
 +/Users/yourusername/bookshelf/content/post/good-to-great.md created
 +```
 +
 +The above command will create a new directory `post` inside the `content` directory and create `content/post/good-to-great.md`. The directory for your Hugo project will now look like the following:
 +
- ```toml
++```
 +.
 +├── archetypes
 +├── config.toml
 +├── content
 +│   └── post
 +│       └── good-to-great.md
 +├── data
 +├── layouts
 +├── static
 +└── themes
 +```
 +
 +Open `good-to-great.md` in your preferred text editor:
 +
- {{% code file="good-to-great-start.md" %}}
- ```markdown
++```
 ++++
 +date = "2017-02-19T21:09:05-06:00"
 +title = "good to great"
 +draft = true
 +
 ++++
 +```
 +
 +The text bracketed by `+++` is the TOML [front matter][fm] for the content. Front matter enables you to define embedded metadata that travels with the content file. Since we have not configured any [archetypes][archetypes] for our project, Hugo has used its built-in base archetype, which includes the following three values in the front matter:
 +
 +* `date` specifies the date and time at which post was created from the command line
 +* `title` specifies the title for the post, which Hugo will infer from the file name
 +* `draft`, when set to `true`, tells Hugo the content is not yet ready to be published
 +
 +Let's update `good-to-great.md` with a short review of *Good to Great*:
 +
- ```
- {{% /code %}}
++{{< code file="good-to-great-start.md" >}}
 ++++
 +date = "2016-02-14T16:11:58+05:30"
 +draft = true
 +title = "Good to Great Book Review"
 ++++
 +
 +I read **Good to Great in January 2016**. An awesome read sharing detailed analysis on how good companies became great. Although this book is about how companies became great but we could apply a lot of the learnings on ourselves. Concepts like level 5 leader, hedgehog concept, the stockdale paradox are equally applicable to individuals.
- ```bash
++{{< /code >}}
 +
 +## Step 4. Serve Content
 +
 +Hugo has a built-in server that can serve your website locally for easy previewing and development. To serve content, execute the following command inside the `bookshelf` directory:
 +
- ```bash
++```
 +hugo server
 +```
 +
 +You should see something similar to the following output:
 +
- ```bash
++```
 +Built site for language en:
 +0 of 1 draft rendered
 +0 future content
 +0 expired content
 +0 regular pages created
 +1 other pages created
 +0 non-page files copied
 +0 paginator pages created
 +0 tags created
 +0 categories created
 +total in 1 ms
 +Watching for changes in /Users/yourusername/bookshelf/{data,content,layouts,static}
 +Serving pages from memory
 +Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
 +Press Ctrl+C to stop
 +```
 +
 +This will start the server on port `1313`. You can view your blog at <http://localhost:1313/>. However, when you go to the link, you will see nothing. This is for a couple reasons:
 +
 +1. As you can see in the `hugo server` command output, Hugo did *not* render the draft. Hugo will only render drafts if you pass the `buildDrafts` flag to the `hugo server` command.
 +2. We have not specified how Markdown content should be rendered. We need to create our own layouts via templates or specify a theme, the latter of which we will do in the next step.
 +
 +Kill the server using <kbd>Ctrl</kbd> + <kbd>C</kbd> and then rerun the server with the `--buildDrafts` flag appended to the command:
 +
- ```bash
++```
 +hugo server --buildDrafts
 +```
 +
 +You should now see something similar to the following:
 +
- ```bash
++```
 +Built site for language en:
 +1 of 1 draft rendered
 +0 future content
 +0 expired content
 +1 regular pages created
 +2 other pages created
 +0 non-page files copied
 +0 paginator pages created
 +0 tags created
 +0 categories created
 +total in 2 ms
 +Watching for changes in /Users/yourusername/bookshelf/{data,content,layouts,static}
 +Serving pages from memory
 +Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
 +Press Ctrl+C to stop
 +```
 +
 +Okay, so we now have our single page "built," but we're not seeing anything in the browser  at <http://localhost:1313>. This was only to demonstrate the utility of the `--buildDrafts` flag.
 +
 +While we are getting closer, we still need to specific a theme for Hugo to use when building our site.
 +
 +## Step 5. Add A Theme
 +
 +[Themes][themessection] provide Hugo with layout and templates to render your website. You can see the full selection of open-source themes at <http://themes.gohugo.io>.
 +
 +{{% note "No Default Hugo Theme" %}}
 +Hugo currently doesn’t ship with a default theme, thus allowing end users to pick whichever theme best suits their projects.
 +{{% /note %}}
 +
 +Themes should be added in the `themes` directory, one of the directories scaffolded with the `hugo new site` command we used to start our Hugo project. To install our themes, first change into the `themes` directory:
 +
- {{% code file="clone-robust-theme" %}}
- ```bash
++```
 +cd themes
 +```
 +
 +You can clone one or more themes from within the `themes` directory. We will use the [Robust theme][robusttheme] but at the most recent commit as of this Quick Start's last update.
 +
 +Once inside the `themes` directory, you can use the following one-liner to clone Robust, check out the specific commit, and then return to your project's root directory:
 +
- ```
- {{% /code %}}
++{{< code file="clone-robust-theme" >}}
 +git clone https://github.com/dim0627/hugo_theme_robust.git && cd hugo_theme_robust && git checkout 3baae29 && cd ../..
- {{% code file="hugo-server-with-theme.sh" %}}
- ```bash
++{{< /code >}}
 +
 +Now let's start Hugo's server again but with the addition of the `-theme` flag for Robust:
 +
- ```
- {{% /code %}}
++{{< code file="hugo-server-with-theme.sh" >}}
 +hugo server --theme=hugo_theme_robust --buildDrafts
- ```bash
++{{< /code >}}
 +
 +You should see an output to the console similar to the following:
 +
- ```bash
++```
 +Built site for language en:
 +1 of 1 draft rendered
 +0 future content
 +0 expired content
 +1 regular pages created
 +2 other pages created
 +0 non-page files copied
 +2 paginator pages created
 +0 tags created
 +0 categories created
 +total in 8 ms
 +Watching for changes in /Users/yourusername/bookshelf/{data,content,layouts,static,themes}
 +Serving pages from memory
 +Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
 +Press Ctrl+C to stop
 +```
 +
 +If Hugo doesn't find the specified theme in the `themes` directory,
 +it will throw an exception:
 +
- ```bash
++```
 +FATAL: 2016/02/14 Unable to find theme Directory: /Users/yourusername/bookshelf/themes/robust
 +```
 +
 +To view your website, you can go to <http://localhost:1313/>. You should see something similar to the following image:
 +
 +![](/images/quickstart/bookshelf-robust-theme.png)
 +
 +Similar to the way we looked at the scaffolding for our new Hugo website, let's take a look at what comprises a typical Hugo theme. The following is only a selection of what you would see if you were to list out the contents of the Robust theme directory. These are also some of the default files created by Hugo as of v0.23. (See [Creating a Theme][createtheme])
 +
- {{% code file="clone-bleak-theme.sh" %}}
- ```bash
++```
 +.
 +├── LICENSE.md
 +├── archetypes
 +│   └── default.md
 +├── layouts
 +│   ├── 404.html
 +│   ├── _default
 +│   │   ├── list.html
 +│   │   └── single.html
 +│   ├── index.html
 +│   └── partials
 +│       ├── footer.html
 +│       └── header.html
 +├── static
 +│   ├── css
 +│   └── js
 +└── theme.toml
 +```
 +
 +* `theme.toml` is the theme configuration file that provides information about the theme; e.g., theme name, theme description, theme author, theme license, and minimum Hugo version, which will default to your locally installed version of Hugo.
 +* `layouts` contains different views (i.e., [templates][templating]) for different content types. In this quick start, we see that each content type has a `single.html` and `list.html`. `single.html` is used for rendering a single piece of content. `list.html` is used to view a list of content items. For example, you will use `list.html` to view `*.md` in the posts [section][listsectiontemplates]. Think of `list.html` as `example.com/posts` and `single.html` as `example.com/posts/my-single-post/`.
 +* `static` has the same purpose as that of the `static` in our original scaffolding. This directory stores all the static assets used by the theme and is copied over *as is* at build time.
 +
 +## Step 6. Use Multiple Themes
 +
 +You can very easily switch between different themes in Hugo. Let's suppose we want to try out the [`bleak` theme][bleaktheme]. Kill the Hugo server if you are still running it from the command line.
 +
 +From your project root, you can use this one-liner to change into `themes`, clone Bleak, and go back to your project's root directory:
 +
- ```
- {{% /code %}}
++{{< code file="clone-bleak-theme.sh" >}}
 +cd themes && git clone https://github.com/Zenithar/hugo-theme-bleak.git && cd ..
- {{% code file="run-server-with-bleak.sh" %}}
- ```bash
++{{< /code >}}
 +
 +Now restart the server with our new theme flag:
 +
- ```
- {{% /code %}}
++{{< code file="run-server-with-bleak.sh" >}}
 +hugo server --theme=hugo-theme-bleak --buildDrafts
- {{% code file="restart-with-robust-sh" %}}
- ```bash
++{{< /code >}}
 +
 +Our website is now using the `bleak` theme at <http://localhost:1313>, which should look similar to the following screenshot:
 +
 +![Screenshot of the Quick Start website's homepage running with the Bleak Hugo theme.](/images/quickstart/bookshelf-bleak-theme.png)
 +
 +## Step 7. Update Your Configuration
 +
 +Kill the Hugo server if you are still running it with the Bleak theme, and then restart the server with the `robust` theme. We will use Robust for the duration of this Quick Start:
 +
- ```
- {{% /code %}}
++{{< code file="restart-with-robust-sh" >}}
 +hugo server --theme=hugo_theme_robust --buildDrafts
- {{% code file="updated-config.toml" %}}
- ```toml
++{{< /code >}}
 +
 +### Update Our `config.toml`
 +
 +Our website is currently using the dummy values specified in `bookshelf/config.toml`, which were auto-generated with `hugo new site bookshelf`. Let's update the configuration:
 +
- ```
- {{% /code %}}
++{{< code file="updated-config.toml" >}}
 +baseURL = "http://example.org/"
 +languageCode = "en-us"
 +title = "Shekhar Gulati Book Reviews"
 +
 +[Params]
 +  Author = "Shekhar Gulati"
- ```html
++{{< /code >}}
 +
 +### Watch Your Site Reload Instantly
 +
 +Hugo has built-in support for LiveReload. This means that Hugo will rebuild and reload your site every time you save a change to content, templates, static assets, and even your configuration. You should see something similar to the following screenshot at <http://localhost:1313> once you save the above changes to your `config.toml`:
 +
 +![](/images/quickstart/bookshelf-updated-config.png)
 +
 +The change is also reflected in the console. As soon as you changed the configuration file, Hugo applied those changes to the affected pages and rebuilt the site:
 +
 +```
 +Config file changed: /Users/yourusername/bookshelf/config.toml
 +Started building sites ...
 +Built site for language en:
 +1 of 1 draft rendered
 +0 future content
 +0 expired content
 +1 regular pages created
 +2 other pages created
 +0 non-page files copied
 +2 paginator pages created
 +0 tags created
 +0 categories created
 +total in 20 ms
 +```
 +
 +## Step 8. Customize the Robust Theme
 +
 +The `robust` theme is a good start towards our online bookshelf, but we want to customize it a bit to meet our desired look and feel. Hugo makes it very easy to [customize existing themes or create your own][themes] themes as well. For the purpose of the Quick Start, we will focus on customization.
 +
 +The first change that we have to make is to use a different default image instead of the one used in the theme. The theme's default image used in both the `list.html` and `single.html` views resides inside `themes/hugo_theme_robust/static/images/default.jpg`. We can easily override it by creating a simple directory structure inside our repository's `static` directory.
 +
 +Create an images directory inside of `bookshelf/static` and copy an image with name `default.jpg` inside of it. We will use the default image shown below.
 +
 +![](/images/quickstart/default.jpg)
 +
 +Hugo will sync the changes and reload the website to use the new image:
 +
 +![](/images/quickstart/bookshelf-new-default-image.png)
 +
 +Now we need to change the layout of the index page so that only images are shown instead of the text. The file at `themes/hugo_theme_robust/layouts/index.html` refers to a partial `li.html` template that renders the following list view:
 +
- {{% code file="create-new-li-html.sh" %}}
- ```bash
++```
 +<article class="li">
 +  <a href="{{ .Permalink }}" class="clearfix">
 +    <div class="image" style="background-image: url({{ $.Site.BaseURL }}images/{{ with .Params.image }}{{ . }}{{ else }}default.jpg{{ end }});"></div>
 +    <div class="detail">
 +      <time>{{ with .Site.Params.DateForm }}{{ $.Date.Format . }}{{ else }}{{ $.Date.Format "Mon, Jan 2, 2006" }}{{ end }}</time>
 +      <h2 class="title">{{ .Title }}</h2>
 +      <div class="summary">{{ .Summary }}</div>
 +    </div>
 +  </a>
 +</article>
 +```
 +
 +Create a new file for `li.html` inside the `bookshelf/layouts/_default` directory. If you are in your project root, you can use the following one-liner to both create the file and return to the project root:
 +
- ```
- {{% /code %}}
++{{< code file="create-new-li-html.sh" >}}
 +cd layouts && mkdir _default && cd _default && touch li.html && cd ../..
- {{% code file="layouts/_default/li.html" %}}
- ```html
++{{< /code >}}
 +
 +Copy the content shown below into the new `li.html`. When contrasting this with the `li.html` that ships with the Robust theme, you'll notice we have removed details of the book so that only the image is shown:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/li.html" >}}
 +<article class="li">
 +  <a href="{{ .Permalink }}" class="clearfix">
 +    <div class="image" style="background-image: url({{ $.Site.BaseURL }}images/{{ with .Params.image }}{{ . }}{{ else }}default.jpg{{ end }});"></div>
 +  </a>
 +</article>
- {{% code file="create-new-default-foot.sh" %}}
- ```bash
++{{< /code >}}
 +
 +Now, the website should render similar to the following screenshot:
 +
 +![](/images/quickstart/bookshelf-only-picture.png)
 +
 +Next, we want to remove information related to the theme from the footer. Let's create a new directory at `bookshelf/layouts/partials`. This will hold our new file called `default_foot.html`.
 +
 +This is a new [partial template][partials]. If you are still in the project's root directory, you can use the following one-liner to create the partial before returning to the project root:
 +
- ```
- {{% /code %}}
++{{< code file="create-new-default-foot.sh" >}}
 +cd layouts && mkdir partials && cd partials && touch default_foot.html && cd ../..
- {{% code file="layouts/partials/default_foot.html" %}}
- ```html
++{{< /code >}}
 +
 +Now add the following to our new `default_foot.html` partial template:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/default_foot.html" >}}
 +<footer class="site">
 +  <p>{{ with .Site.Copyright | safeHTML }}{{ . }}{{ else }}&copy; {{ $.Site.LastChange.Year }} {{ if isset $.Site.Params "Author" }}{{ $.Site.Params.Author }}{{ else }}{{ .Site.Title }}{{ end }}{{ end }}</p>
 +  <p>Powered by <a href="http://gohugo.io" target="_blank">Hugo</a>,</p>
 +</footer>
- {{% code file="content/post/good-to-great.md" %}}
- ```markdown
++{{< /code >}}
 +
 +So far we are using the default image, but we would like to use the book image so that we can relate to the book. Every book review will define a configuration setting in its front matter. Update the content and front matter of `good-to-great.md` as shown below.
 +
- ```
- {{% /code %}}
++{{< code file="content/post/good-to-great.md" >}}
 ++++
 +date = "2017-02-19T21:09:05-06:00"
 +draft = true
 +title = "Good to Great Book Review"
 +image = "good-to-great.jpg"
 ++++
 +
 +I read **Good to Great in January 2016**. An awesome read sharing detailed analysis on how good companies became great. Although this book is about how companies became great but we could apply a lot of the learnings on ourselves. Concepts like level 5 leader, hedgehog concept, the stockdale paradox are equally applicable to individuals.
- ```bash
++{{< /code >}}
 +
 +Grab a (legal) image from somewhere, name it `good-to-great.jpg`, and place it in the `bookshelf/static/images` directory.
 +
 +After adding a few more books to our shelf, the shelf appears as shown below.
 +
 +![](/images/quickstart/bookshelf.png)
 +
 +
 +## Step 9. Make Your Posts Public
 +
 +So far, all the posts that we have written are in draft status (i.e., `draft = true`). To make a draft public, you can run a Hugo CLI command or manually change the draft status in the post's front matter to `false`. Hugo provides a handy command line argument called `undraft` to do this for us:
 +
- ```toml
++```
 +hugo undraft content/post/good-to-great.md
 +```
 +
 +If we check the front matter of `good-to-great.md` after running this command, we'll notice that Hugo has written the change of draft status to the file:
 +
- ```bash
++```
 ++++
 +date = "2017-02-19T22:42:53-06:00"
 +draft = false
 +title = "Good to Great Book Review"
 +image = "good-to-great.jpg"
 ++++
 +```
 +
 +Now, we can start the server *without* the `buildDrafts` option.
 +
- ```toml
++```
 +hugo server --theme=hugo_theme_robust
 +```
 +
 +<!-- ## Step 10. Integrate Disqus Comments
 +
 +{{% note "Adding Disqus to Your Website" %}}
 +To implement Disqus comments as part of the Quick Start, you'll need to set up a Disqus account. Follow the [Disqus documentation for adding their service to websites](https://help.disqus.com/customer/portal/articles/1257441-adding-disqus-to-your-site).
 +{{% /note %}}
 +
 +To enable Disqus on our new site, we only need to update the `disqusShortname` in the config.toml as shown below.
 +
- ```toml
++```
 +[Params]
 +  Author = "Shekhar Gulati"
 +  disqusShortname = <your disqus shortname>
 +```
 +
 +Now, commenting will be enabled in your blog.
 +
 +![](/images/quickstart/bookshelf-disqus.png)
 + -->
 +## Step 10. Build Your Website
 +
 +To generate a website that can be deployed to GitHub pages, we first need to change the `baseURL` in our configuration as follows:
 +
- ```bash
++```
 +baseURL = "https://<yourgithubusername>.github.io/bookshelf/"
 +```
 +
 +Then type the following command while in the root directory of your Hugo project:
 +
++```
 +hugo --theme=hugo_theme_robust
 +0 draft content
 +0 future content
 +5 pages created
 +2 paginator pages created
 +0 tags created
 +0 categories created
 +in 17 ms
 +```
 +
 +After you run the `hugo` command, a `bookshelf/public` directory will be created containing the generated website source.
 +
 +## Step 11. What Next?
 +
 +**Congratulations!** Your new `bookshelf`/public directory is a fully generated, deployable Hugo website. Since all your files are *static*, you have innumerable options for hosting, and your new directory structure and simple content format are going to make scaling your website a breeze.
 +
 +Here's what you should look into next:
 +
 +1. [See hosting and deployment options][hostinganddeploy] for sharing your newly created Hugo website with the world.
 +2. [Learn more about Hugo's powerful templating][templating] to tailor your new Hugo website to your specific needs and keep it scaling accordingly.
 +3. [Visit the Hugo Discussion Forum][forum] to ask questions, answer questions, and become an active member of the Hugo community.
 +
 +[archetypes]: /content-management/archetypes/
 +[bookurl]: https://www.amazon.com/Good-Great-Some-Companies-Others/dp/0066620996/
 +[bleaktheme]: http://themes.gohugo.io/bleak/
 +[configuration]: /getting-started/configuration/
 +[createtheme]: /themes/creating/
 +[datatemplates]: /templates/data-templates/
 +[forum]: https://discourse.gohugo.io
 +[fm]: /content-management/front-matter/
 +[hostinganddeploy]: /hosting-and-deployment/
 +[hugodirectories]: /getting-started/directory-structure/
 +[install]: /getting-started/installing/
 +[lists]: /templating/lists/
 +[partials]: /templates/partials/
 +[quickinstall]: /getting-started/installing/#quick-install
 +[releases]: https://github.com/gohugoio/hugo/releases
 +[robusttheme]: https://github.com/dim0627/hugo_theme_robust
 +[section]: /content-management/sections/
 +[sectiontemplates]: /templates/section-templates/
 +[shortcodetemplates]: /templates/shortcode-templates/
 +[sitemenu]: /content-management/menus/
 +[templating]: /templates/introduction/
 +[themessection]: /themes/
 +[themes]: /themes/
index 9db972d487af824316a920fefac30541c1c73a36,0000000000000000000000000000000000000000..b28a634a5aba2ab309d33fdfc6a48764fa84742c
mode 100644,000000..100644
--- /dev/null
@@@ -1,228 -1,0 +1,228 @@@
- ```bash
 +---
 +title: Basic Usage
 +linktitle: Basic Usage
 +description: Hugo's CLI is fully featured but simple to use, even for those who have very limited experience working from the command line.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [getting started]
 +#tags: [usage,livereload,command line,flags]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 40
 +weight: 40
 +sections_weight: 40
 +draft: false
 +aliases: [/overview/usage/,/extras/livereload/,/doc/usage/,/usage/]
 +toc: true
 +---
 +
 +The following is a description of the most command commands you will use while developing your Hugo project. See the [Command Line Reference][commands] for a comprehensive view of Hugo's CLI.
 +
 +## Test Installation
 +
 +Once you have [installed Hugo][install], make sure it is in your `PATH`. You can test that Hugo has been installed correctly via the `help` command:
 +
- ```bash
++```
 +hugo help
 +```
 +
 +The output you see in your console should be similar to the following:
 +
- ```bash
++```
 +hugo is the main command, used to build your Hugo site.
 +
 +Hugo is a Fast and Flexible Static Site Generator
 +built with love by spf13 and friends in Go.
 +
 +Complete documentation is available at http://gohugo.io/.
 +
 +Usage:
 +  hugo [flags]
 +  hugo [command]
 +
 +Available Commands:
 +  benchmark   Benchmark Hugo by building a site a number of times.
 +  check       Contains some verification checks
 +  config      Print the site configuration
 +  convert     Convert your content to different formats
 +  env         Print Hugo version and environment info
 +  gen         A collection of several useful generators.
 +  help        Help about any command
 +  import      Import your site from others.
 +  list        Listing out various types of content
 +  new         Create new content for your site
 +  server      A high performance webserver
 +  undraft     Undraft changes the content's draft status from 'True' to 'False'
 +  version     Print the version number of Hugo
 +
 +Flags:
 +  -b, --baseURL string             hostname (and path) to the root, e.g. http://spf13.com/
 +  -D, --buildDrafts                include content marked as draft
 +  -E, --buildExpired               include expired content
 +  -F, --buildFuture                include content with publishdate in the future
 +      --cacheDir string            filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
 +      --canonifyURLs               if true, all relative URLs will be canonicalized using baseURL
 +      --cleanDestinationDir        remove files from destination not found in static directories
 +      --config string              config file (default is path/config.yaml|json|toml)
 +  -c, --contentDir string          filesystem path to content directory
 +  -d, --destination string         filesystem path to write files to
 +      --disable404                 do not render 404 page
 +      --disableKinds stringSlice   disable different kind of pages (home, RSS etc.)
 +      --disableRSS                 do not build RSS files
 +      --disableSitemap             do not build Sitemap file
 +      --enableGitInfo              add Git revision, date and author info to the pages
 +      --forceSyncStatic            copy all files when static is changed.
 +  -h, --help                       help for hugo
 +      --i18n-warnings              print missing translations
 +      --ignoreCache                ignores the cache directory
 +  -l, --layoutDir string           filesystem path to layout directory
 +      --log                        enable Logging
 +      --logFile string             log File path (if set, logging enabled automatically)
 +      --noChmod                    don't sync permission mode of files
 +      --noTimes                    don't sync modification time of files
 +      --pluralizeListTitles        pluralize titles in lists using inflect (default true)
 +      --preserveTaxonomyNames      preserve taxonomy names as written ("Gérard Depardieu" vs "gerard-depardieu")
 +      --quiet                      build in quiet mode
 +      --renderToMemory             render to memory (only useful for benchmark testing)
 +  -s, --source string              filesystem path to read files relative from
 +      --stepAnalysis               display memory and timing of different steps of the program
 +  -t, --theme string               theme to use (located in /themes/THEMENAME/)
 +      --themesDir string           filesystem path to themes directory
 +      --uglyURLs                   if true, use /filename.html instead of /filename/
 +  -v, --verbose                    verbose output
 +      --verboseLog                 verbose logging
 +  -w, --watch                      watch filesystem for changes and recreate as needed
 +```
 +
 +## The `hugo` Command
 +
 +The most common usage is probably to run `hugo` with your current directory being the input directory.
 +
 +This generates your website to the `public/` directory by default, although you can customize the output directory in your [site configuration][config] by changing the `publishDir` field.
 +
 +The site Hugo renders into `public/` is ready to be deployed to your web server:
 +
- ```bash
++```
 +hugo
 +0 draft content
 +0 future content
 +99 pages created
 +0 paginator pages created
 +16 tags created
 +0 groups created
 +in 90 ms
 +```
 +
 +## Draft, Future, and Expired Content
 +
 +Hugo allows you to set `draft`, `publishdate`, and even `expirydate` in your content's [front matter][]. By default, Hugo will not publish:
 +
 +1. Content with a future `publishdate` value
 +2. Content with `draft: true` status
 +3. Content with a past `expirydate` value
 +
 +All three of these can be overridden during both local development *and* deployment by adding the following flags to `hugo` and `hugo server`, respectively, or by changing the boolean values assigned to the fields of the same name (without `--`) in your [configuration][config]:
 +
 +1. `--buildFuture`
 +2. `--buildDrafts`
 +3. `--buildExpired`
 +
 +## LiveReload
 +
 +Hugo comes with [LiveReload](https://github.com/livereload/livereload-js) built in. There are no additional packages to install. A common way to use Hugo while developing a site is to have Hugo run a server with the `hugo server` command and watch for changes:
 +
- ```bash
++```
 +hugo server
 +0 draft content
 +0 future content
 +99 pages created
 +0 paginator pages created
 +16 tags created
 +0 groups created
 +in 120 ms
 +Watching for changes in /Users/yourname/sites/yourhugosite/{data,content,layouts,static}
 +Serving pages from /Users/yourname/sites/yourhugosite/public
 +Web Server is available at http://localhost:1313/
 +Press Ctrl+C to stop
 +```
 +
 +This will run a fully functioning web server while simultaneously watching your file system for additions, deletions, or changes within the following areas of your [project organization][dirs]:
 +
 +* `/static/*`
 +* `/content/*`
 +* `/data/*`
 +* `/i18n/*`
 +* `/layouts/*`
 +* `/themes/<CURRENT-THEME>/*`
 +* `config`
 +
 +Whenever you make changes, Hugo will simultaneously rebuild the site and continue to serve content. As soon as the build is finished, LiveReload tells the browser to silently reload the page.
 +
 +Most Hugo builds are so fast that you may not notice the change unless looking directly at the site in your browser. This means that keeping the site open on a second monitor (or another half of your current monitor) allows you to see the most up-to-date version of your website without the need to leave your text editor.
 +
 +{{% note "Closing `</body>` Tag"%}}
 +Hugo injects the LiveReload `<script>` before the closing `</body>` in your templates and will therefore not work if this tag is not present..
 +{{% /note %}}
 +
 +### Disable LiveReload
 +
 +LiveReload works by injecting JavaScript into the pages Hugo generates. The script creates a connection from the browser's web socket client to the Hugo web socket server.
 +
 +LiveReload is awesome for development. However, some Hugo users may use `hugo server` in production to instantly display updated content. The following methods make it easy to disable LiveReload:
 +
- ```bash
++```
 +hugo server --watch=false
 +```
 +
 +Or...
 +
- ```toml
++```
 +hugo server --disableLiveReload
 +```
 +
 +The latter flag can be omitted by adding the following key-value to  your `config.toml` or `config.yml` file, respectively:
 +
- ```yaml
++```
 +disableLiveReload = true
 +```
 +
- ```bash
++```
 +disableLiveReload: true
 +```
 +
 +## Deploy Your Website
 +
 +After running `hugo server` for local web development, you need to do a final `hugo` run *without the `server` part of the command* to rebuild your site. You may then deploy your site by copying the `public/` directory to your production web server.
 +
 +Since Hugo generates a static website, your site can be hosted *anywhere* using any web server. See [Hosting and Deployment][hosting] for methods for hosting and automating deployments contributed by the Hugo community.
 +
 +{{% warning "Generated Files are **NOT** Removed on Site Build" %}}
 +Running `hugo` *does not* remove generated files before building. This means that you should delete your `public/` directory (or the publish directory you specified via flag or configuration file) before running the `hugo` command. If you do not remove these files, you run the risk of the wrong files (e.g., drafts or future posts) being left in the generated site.
 +{{% /warning %}}
 +
 +### Dev vs Deploy Destinations
 +
 +Hugo does not remove generated files before building. An easy workaround is to use different directories for development and production.
 +
 +To start a server that builds draft content (helpful for editing), you can specify a different destination; e.g., a `dev/` directory:
 +
- ```bash
++```
 +hugo server -wDs ~/Code/hugo/docs -d dev
 +```
 +
 +When the content is ready for publishing, use the default `public/` dir:
 +
++```
 +hugo -s ~/Code/hugo/docs
 +```
 +
 +This prevents draft content from accidentally becoming available.
 +
 +[commands]: /commands/
 +[config]: /getting-started/configuration/
 +[dirs]: /getting-started/directory-structure/
 +[front matter]: /content-management/front-matter/
 +[hosting]: /hosting-and-deployment/
 +[install]: /getting-started/installing/
index 1486bff7491acd5e48625368e72ca87fae3bf2d7,0000000000000000000000000000000000000000..0d18da711e3cfba49f218ed9e850ec6db1b2f4cc
mode 100644,000000..100644
--- /dev/null
@@@ -1,139 -1,0 +1,137 @@@
- ```bash
 +---
 +title: Deployment with Rysnc
 +linktitle: Deployment with Rysnc
 +description: If you have access to your web host with SSH, you can use a simple rsync one-liner to incrementally deploy your entire Hugo website.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [hosting and deployment]
 +#tags: [rysnc,deployment]
 +authors: [Adrien Poupin]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 70
 +weight: 70
 +sections_weight: 70
 +draft: false
 +aliases: [/tutorials/deployment-with-rsync/]
 +toc: true
 +notesforauthors:
 +---
 +
 +## Assumptions
 +
 +* Access to your web host with SSH
 +* A functional static website built with Hugo
 +
 +The spoiler is that you can deploy your entire website with a command that looks like the following:
 +
- {{% code file="install-openssh.sh" %}}
- ```bash
++```
 +hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/
 +```
 +
 +As you will see, we put it in a shell script file, which makes building and deployment as easy as executing `./deploy`.
 +
 +## Install SSH Key
 +
 +If it is not done yet, we will make an automated way to SSH to your server. If you have already installed an SSH key, switch to the next section.
 +
 +First, install the ssh client. On Debian/Ubuntu/derivates, use the following command:
 +
- ```
- {{% /code %}}
++{{< code file="install-openssh.sh" >}}
 +sudo apt-get install openssh-client
- ```bash
++{{< /code >}}
 +
 +Then generate your ssh key by entering the following commands:
 +
- ```bash
++```
 +~$ cd && mkdir .ssh & cd .ssh
 +~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id
 +~/.ssh/$ cat >> config <<EOF
 +Host HOST
 +     Hostname HOST
 +     Port 22
 +     User USER
 +     IdentityFile ~/.ssh/rsa_id
 +EOF
 +```
 +
 +Don't forget to replace the `HOST` and `USER` values with your own ones. Then copy your ssh public key to the remote server:
 +
- ```bash
++```
 +~/.ssh/$ ssh-copy-id -i rsa_id.pub USER@HOST.com
 +```
 +
 +Now you can easily connect to the remote server:
 +
 +```
 +~$ ssh user@host
 +Enter passphrase for key '/home/mylogin/.ssh/rsa_id':
 +```
 +
 +And you've done it!
 +
 +## Shell Script
 +
 +We will put the first command in a script at the root of your Hugo tree:
 +
- ```bash
++```
 +~/websites/topologix.fr$ editor deploy
 +```
 +
 +Here you put the following content. Replace the `USER`, `HOST`, and `DIR` values with your own:
 +
++```
 +#!/bin/sh
 +USER=my-user
 +HOST=my-server.com
 +DIR=my/directory/to/topologix.fr/   # might sometimes be empty!
 +
 +hugo && rsync -avz --delete public/ ${USER}@${HOST}:~/${DIR}
 +
 +exit 0
 +```
 +
 +Note that `DIR` is the relative path from the remote user's home. If you have to specify a full path (for instance `/var/www/mysite/`) you must change `~/${DIR}` to `${DIR}` inside the command line. For most cases you should not have to.
 +
 +Save and close, and make the `deploy` file executable:
 +
 +```
 +~/websites/topologix.fr$ chmod +x deploy
 +```
 +
 +Now you only have to enter the following command to deploy and update your website:
 +
 +```
 +~/websites/topologix.fr$ ./deploy
 +Started building sites ...
 +Built site for language en:
 +0 draft content
 +0 future content
 +0 expired content
 +5 pages created
 +0 non-page files copied
 +0 paginator pages created
 +0 tags created
 +0 categories created
 +total in 56 ms
 +sending incremental file list
 +404.html
 +index.html
 +index.xml
 +sitemap.xml
 +cours-versailles/index.html
 +exercices/index.html
 +exercices/index.xml
 +exercices/barycentre-et-carres-des-distances/index.html
 +post/
 +post/index.html
 +sujets/index.html
 +sujets/index.xml
 +sujets/2016-09_supelec-jp/index.html
 +tarifs-contact/index.html
 +
 +sent 9,550 bytes  received 1,708 bytes  7,505.33 bytes/sec
 +total size is 966,557  speedup is 85.86
 +```
index 70a178fc533aa8f767f26f2f0dd5e7828b65fdea,0000000000000000000000000000000000000000..f0257f2d884efe7f438a69757e8aeca9c3e132ef
mode 100644,000000..100644
--- /dev/null
@@@ -1,348 -1,0 +1,328 @@@
- {{% code file="hugo-new-site.sh" %}}
- ```bash
 +---
 +title: Deployment with Wercker
 +linktitle: Deployment with Wercker
 +description: You can use a free tool called Wercker to automate deployments between your GitHub-hosted source and final website on GitHub pages.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [hosting and deployment]
 +#tags: [wercker,deployment,github,git]
 +authors: [Arjen Schwarz, Samuel Debruyn]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +aliases: [/tutorials/automated-deployments/]
 +toc: true
 +wip: false
 +notesforauthors:
 +---
 +
 +## Goals
 +
 +By the end of this guide, you will have completed the following:
 +
 +* Creating a basic Hugo project and website
 +* Version controlling your project with Git
 +* Adding your project to GitHub
 +* Automating site deployments with a free tool called Wercker
 +* Deploying your website to GitHub Pages for free hosting
 +
 +## Assumptions
 +
 +1. You have a working familiarity with using Git for version control
 +2. You have a GitHub account
 +3. You have already created a basic Hugo project
 +
 +If you do not meet these assumptions, the [GitHub help section][githubhelp] has an explanation of how to install and use git. [Signing up for a GitHub][ghsignup] account is free as well. If you are completely unfamiliar with creating a new Hugo website, visit the [Hugo Quick Start][quickstart].
 +
 +## Create a Basic Hugo Site
 +
 +{{% note "This Guide Uses the Hugo CLI" %}}
 +All the work for setting up a Hugo project and using this guide is done via the Hugo CLI's most basic commands. See the [command line reference page](/commands/) for a more exhaustive account of the CLI's features.
 +{{% /note %}}
 +
 +First, create your new Hugo website using the [`hugo new site` command][basicusage] and change into the newly created directory for the project. In this guide, we are calling our new project `hugo-wercker-example`:
 +
- ```
- {{% /code %}}
++{{< code file="hugo-new-site.sh" >}}
 +hugo new site hugo-wercker-example
 +cd hugo-wercker-example
- {{% code file="clone-herring-cove-theme.sh" %}}
- ```bash
++{{< /code >}}
 +
 +We will use the [Herring Cove theme][] by first cloning the theme into the `themes` directory.
 +
- ```
- {{% /code %}}
++{{< code file="clone-herring-cove-theme.sh" >}}
 +cd themes
 +git clone https://github.com/spf13/herring-cove.git
- {{% code file="remove-herring-cove-git.sh" %}}
- ```bash
++{{< /code >}}
 +
 +Cloning the project from the command line will conflict with our own version control. So, we need to remove the external git configuration that came with the clone of Herring Cove:
 +
- ```
- {{% /code %}}
++{{< code file="remove-herring-cove-git.sh" >}}
 +rm -rf herring-cove/.git
- ```bash
++{{< /code >}}
 +
 +We need content for Hugo to build. Let's add a quick `/about` page:
 +
- {{% code file="hugo-build-undraft.sh" %}}
- ```bash
++```
 +hugo new about.md
 +```
 +
 +{{% note %}}
 +The preceding example for the about page leverages archetypes to scaffold a new content file with preconfigured front matter. [Find out more about Hugo's archetypes](/content-management/archetypes/).
 +{{% /note %}}
 +
 +Now you can edit `contents/about.md` in your text editor of choice, but this is not necessary for the purposes of this guide. Running the following command will build your Hugo site into the `public` directory. We have added `undraft` to ensure that the example page is no longer in draft mode:
 +
- ```
- {{% /code %}}
++{{< code file="hugo-build-undraft.sh" >}}
 +hugo undraft content/about.md
- ```bash
++{{< /code >}}
 +
 +Once the website is build, t's a good idea to run the following command to start a local server and ensure you're changes have been implemented:
 +
- ```bash
++```
 +hugo server --theme=herring-cove
 +```
 +
 +If everything is fine, you should see something similar to the image below when you go to <http://localhost:1313> in your browser.
 +
 +![][1]
 +
 +## Set up Version Control in Git
 +
 +Adding Git to your project is done by running the `git init` command from the root directory of your project.
 +
- {{% code file="gitignore.sh" %}}
- ```bash
++```
 +git init
 +```
 +
 +Running `git status` at this point will show you the following entries: the `config.toml` file, the `themes` directory, the `contents` directory, and the `public` directory. However, we don't want the `public` directory version controlled because Wercker is responsible for generating the finished website later on. Therefore, we'll add a `.gitignore` file to our project that will exclude the `/public` directory from being tracked by Git:
 +
- ```
- {{% /code %}}
++{{< code file="gitignore.sh" >}}
 +echo "/public" >> .gitignore
- {{% code file="addrobotstxt.sh" %}}
- ```bash
++{{< /code >}}
 +
 +Wercker might complain when we try to build the site later on because we currently do not have any static files outside of the `themes` directory. We simply have to add *any* file to the static folder to prevent Wercker from complaining. To keep this guide simple, let's add a `robots.txt`. The following command creates the file in `/static`. The contents of the `robots.txt` lets search engines know they have full access to crawl the published website:
 +
- ```
- {{% /code %}}
++{{< code file="addrobotstxt.sh" >}}
 +echo "User-agent: *\nDisallow:" > static/robots.txt
- ```bash
++{{< /code >}}
 +
 +Now we need to add (i.e., [stage [see Git documentation]][gitbasics]) and commit all of our changes in the repository into Git:
 +
- {{% code file="setup-gh-repo.sh" %}}
- ```bash
++```
 +git commit -a -m "Initial commit"
 +```
 +
 +## Add the Project to GitHub
 +
 +Now we need to create a new repository on GitHub. Once you are signed in to GitHub, you can add a new repository by clicking on the **&#43;&#9660;** dropdown at the top right or by going to [https://github.com/new](https://github.com)..
 +
 +We then choose a name for the project (`hugo-wercker-example`). When clicking on create repository GitHub displays the commands for adding an existing project to the site. The commands shown below are the ones used for this site, if you're following along you will need to use the ones shown by GitHub. Once we've run those commands the project is in GitHub and we can move on to setting up the Wercker configuration. Be sure to replace `YourUserName` with your GitHub account/username:
 +
- ```
- {{% /code %}}
++{{< code file="setup-gh-repo.sh" >}}
 +git remote add origin git@github.com:YourUsername/hugo-wercker-example.git
 +git push -u origin master
- {{% code file="wercker-build-step.yml" %}}
- ```yaml
++{{< /code >}}
 +
 +![][2]
 +
 +## Set Up Wercker
 +
 +To sign up for a free Wercker account, go to <https://wercker.com> and click the the **Sign Up** button on the top right of the home screen.
 +
 +![][3]
 +
 +### Registe 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
 +
 +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."
 +
 +![][17]
 +
 +If you registered for Wercker using GitHub, it will most likely look like the following image. To connect a missing service, click the **Connect** button, which may send you to either GitHub or Bitbucket to sign into your respective account.
 +
 +![][5]
 +
 +### Add Your Project
 +
 +Now that we've got all the preliminaries out of the way, it's time to set up our application. For this we click on the **+ Create** button next to Applications and choose GitHub as our provider.
 +
 +![][6]
 +
 +### Select a Repository
 +
 +When selecting GitHub, Wercker will show all your GitHub repositories. You have the option to filter repositories using the search input at the top of the repositories list. Once you have your repository selected, click the **Use selected repo** button.
 +
 +![][7]
 +
 +### Select the Repository Owner
 +
 +In the next step, Wercker asks you to select the repository owner. Select your GitHub account and continue.
 +
 +![][8]
 +
 +### Configure Access
 +
 +{{% note %}}
 +This guide assumes you are using a public GitHub repository and understand that the [published GitHub Pages website will be available to everyone](https://help.github.com/articles/what-is-github-pages/#usage-limits).
 +{{%/note %}}
 +
 +This step can be slightly tricky. Wercker does not have privileges to check out your private projects by default and therefore needs your permission to add a deploy key to your repository. By selecting the first option, you're simply allowing Wercker to check out the code via the same methods available to anyone visiting the project on GitHub.
 +
 +![][9]
 +
 +### Wercker.yml
 +
 +Wercker will now attempt to create an initial `wercker.yml` file for you. More specifically, it will create a code block within the Wercker interface that you can copy to your finished file. Wercker gives us a `debian` box because our project does not have any special requirements.
 +
 +Now we need to create a *wercker.yml* file in the root of our project. This file will contain our Wercker app's configuration. After we finish setting up our app, we will expand the contents of this file to build and deploy our website.
 +
 +![][10]
 +
 +### Public or Private
 +
 +This is a personal choice. You can make an app public so that everyone can see more details about it. Keeping it private or public does not provide any overt benefits for you as the creator of the app. That said, [the app we are currently creating has been made public][publicappurl] to facilitate easier usage of this hosting and deployment guide.
 +
 +![][11]
 +
 +#### App Successfully Created
 +
 +The application is now added and Wercker will offer you the chance to trigger a build. However, we will decline the offer because we haven't yet pushed our `wercker.yml` file to our GitHub repository.
 +
 +![][12]
 +
 +### Add the Hugo-build Step
 +
 +Now we need to add the Wercker steps to our build process. First, we go to the "Registry" action in the top menu. When in the registry, we can search for "hugo build". Select the "Hugo-Build by **arjen**" step.
 +
 +![][13]
 +
 +### Use the Hugo-build Step
 +
 +A summary of very basic usage is available at the top of the details for the Hugo-Build step. Below the basic usage is the contents of the `README.md` file associated with the step's repository. `README.md`'s on Wercker usually contain more details about the advanced options and examples of usage.
 +
 +We're not going to use any of the advanced features of Hugo-Build in this guide. Let's return to our project and add the first section of details we need to our `wercker.yml`.
 +
 +{{% warning "Hugo Version in `wercker.yml`" %}}
 +The docs are a work in progress. As such, the `version` represented in this guide may not represent the version you've been using for local development. Be sure to use the appropriate Hugo version for your build step.
 +{{% /warning %}}
 +
- ```
- {{% /code %}}
++{{< code file="wercker-build-step.yml" >}}
 +box: debian
 +build:
 +  steps:
 +    - arjen/hugo-build:
 +        version: "0.17"
 +        theme: herring-cove
 +        flags: --buildDrafts=true
- {{% code file="push-wecker-to-gh.sh" %}}
- ```bash
++{{< /code >}}
 +
 +We can conclude this first step by pushing our `wercker.yml` to our GitHub repository and then seeing the magic at work within Wercker's interface.
 +
- ```
- {{% /code %}}
++{{< code file="push-wecker-to-gh.sh" >}}
 +git commit -a -m "Add wercker.yml"
 +git push origin master
- {{% code file="wercker.yml" %}}
- ```yaml
++{{< /code >}}
 +
 +If completed and successful, a green check mark should appear in the commit column of your first build. However, this is only the build step. We still need to deploy the website to our free hosting on GitHub Pages. If you would like more details about the build, you can click the commit hash.
 +
 +![][14]
 +
 +### Add a GitHub Pages Deploy Step to `wercker.yml`
 +
 +In order to deploy to GitHub Pages, we need to add a deploy step to our `wercker.yml`. We are going to add `lukevevier/gh-pages`, the most popular GitHub Pages step in the Wercker Steps repository. Additionally, we need to ensure the box Wercker uses for our deployments has git and ssh installed. We can do this using the `install-packages` command. Here is our *final* `wercker.yml` file:
 +
- ```
- {{% /code %}}
++{{< code file="wercker.yml" >}}
 +box: debian
 +build:
 +  steps:
 +    - arjen/hugo-build:
 +        version: "0.17"
 +        theme: herring-cove
 +        flags: --buildDrafts=true
 +deploy:
 +  steps:
 +    - install-packages:
 +        packages: git ssh-client
 +    - lukevivier/gh-pages@0.2.1:
 +        token: $GIT_TOKEN
 +        domain: hugo-wercker.ig.nore.me
 +        basedir: public
++{{< /code >}}
 +
 +### How does the GitHub Pages Configuration Work?
 +
 +We've provided a some important information in our `wercker.yml`. First, we've added the domain we want to use for our published website. Configuring the domain here will ensure that GitHub Pages is aware of the domain we want to use.
 +
 +Secondly, we've configured the `basedir` to `public`. This is the directory that will be used as the website on GitHub Pages. `public` is also the default publishing directory in Hugo. (For more information, see [hugo's configuration docs][hugoconfig]).
 +
 +Lastly, you'll notice a `$GIT_TOKEN` variable. This is used for pushing our changes to GitHub. We will need to configure this token before Wercker can build our website.
 +
 +### Set the App's Deploy Target
 +
 +We can set our deploy target by going to our app's settings and clicking on **Deploy targets**. Now select **Add deploy target** and then **Custom deploy**.
 +
 +![][15]
 +
 +### Configure the Deploy Step in Wercker
 +
 +The next screen requires you fill in the deploy target name.
 +
 +1. Make sure you enable **auto deploy** from the **master** branch.
 +2. Add a variable for the **GIT_TOKEN**. You'll need to create an access token in GitHub. Follow the directions in [GitHub help][accesstokenghhelp].
 +3. With the deploy step configured in Wercker, we can push the updated wercker.yml file to GitHub and it will create the GitHub pages site for us.
 +
 +The website described in this guide is available at <http://hugo-wercker.ig.nore.me>.
 +
 +![][16]
 +
 +## Conclusion
 +
 +Once this workflow is established, you can update your website automatically by pushing any content changes to your GitHub repository.
 +
 +### Code for the Wercker Deployment Guide
 +
 +[The source code for the site used in this guide is available on GitHub][guidesource], as is the [Wercker Hugo Build step][guidestep].
 +
 +If you want to see an example of how you can deploy to S3 instead of GitHub pages, check [Wercker's documentation][werckerdocs] for guidance on setup.
 +
 +[1]: /images/hosting-and-deployment/deployment-with-wercker/creating-a-basic-hugo-site.png
 +[2]: /images/hosting-and-deployment/deployment-with-wercker/adding-the-project-to-github.png
 +[3]: /images/hosting-and-deployment/deployment-with-wercker/wercker-sign-up.png
 +[4]: /images/hosting-and-deployment/deployment-with-wercker/wercker-sign-up-page.png
 +[5]: /images/hosting-and-deployment/deployment-with-wercker/wercker-git-connections.png
 +[6]: /images/hosting-and-deployment/deployment-with-wercker/wercker-add-app.png
 +[7]: /images/hosting-and-deployment/deployment-with-wercker/wercker-select-repository.png
 +[8]: /images/hosting-and-deployment/deployment-with-wercker/wercker-select-owner.png
 +[9]: /images/hosting-and-deployment/deployment-with-wercker/wercker-access.png
 +[10]: /images/hosting-and-deployment/deployment-with-wercker/werckeryml.png
 +[11]: /images/hosting-and-deployment/deployment-with-wercker/public-or-not.png
 +[12]: /images/hosting-and-deployment/deployment-with-wercker/and-we-ve-got-an-app.png
 +[13]: /images/hosting-and-deployment/deployment-with-wercker/wercker-search.png
 +[14]: /images/hosting-and-deployment/deployment-with-wercker/using-hugo-build.png
 +[15]: /images/hosting-and-deployment/deployment-with-wercker/adding-a-github-pages-step.png
 +[16]: /images/hosting-and-deployment/deployment-with-wercker/configure-the-deploy-step.png
 +[17]: /images/hosting-and-deployment/deployment-with-wercker/wercker-account-settings.png
 +
 +
 +[accesstokenghhelp]: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
 +[basicusage]: /getting-started/usage/
 +[ghsignup]: https://github.com/join
 +[gitbasics]: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics
 +[githubhelp]: https://help.github.com/articles/set-up-git/
 +[guidesource]: https://github.com/ArjenSchwarz/hugo-wercker-example
 +[guidestep]: https://github.com/ArjenSchwarz/wercker-step-hugo-build
 +[Herring Cove theme]: https://github.com/spf13/herring-cove
 +[hugoconfig]: /getting-started/configuration/
 +[publicappurl]: https://app.wercker.com/#applications/5586dcbdaf7de9c51b02b0d5
 +[quickstart]: /getting-started/quick-start/
 +[werckerdocs]: http://devcenter.wercker.com/docs/deploy/s3.html
index 2006e696be677fe4c108bf999cba2d8845d289e8,0000000000000000000000000000000000000000..0bee32d529a28efe4ec8cd1fbdd795975439ad79
mode 100644,000000..100644
--- /dev/null
@@@ -1,143 -1,0 +1,143 @@@
- title: Hosting on Bitbucket
- linktitle: Hosting on Bitbucket
 +---
- ```bash
++title: Host on Bitbucket
++linktitle: Host on Bitbucket
 +description: You can use Bitbucket in conjunction with Aerobatic to build, deploy, and host a Hugo website.
 +date: 2017-02-04
 +publishdate: 2017-02-04
 +lastmod: 2017-02-04
 +categories: [hosting and deployment]
 +#tags: [hosting,bitbucket,deployment,aerobatic]
 +authors: [Jason Gowans]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 50
 +weight: 50
 +sections_weight: 50
 +draft: false
 +toc: true
 +aliases: [/tutorials/hosting-on-bitbucket/]
 +---
 +
 +You can use [Bitbucket](https://bitbucket.org/) and [Aerobatic](https://www.aerobatic.com) to build, deploy, and host a Hugo website. Aerobatic is a static hosting service that integrates with Bitbucket and provides a free hosting tier.
 +
 +## Assumptions
 +
 +* Working familiarity with Git for version control
 +* A [Bitbucket account](https://bitbucket.org/account/signup/)
 +
 +## Install Aerobatic CLI
 +
 +If you haven't previously used Aerobatic, you'll first need to install the Command Line Interface (CLI) and create an account. For a list of all commands available, see the [Aerobatic CLI](https://www.aerobatic.com/docs/cli/) docs.
 +
- ```bash
++```
 +npm install aerobatic-cli -g
 +aero register
 +```
 +
 +## Create and Deploy Site
 +
- ```bash
++```
 +hugo new site my-new-hugo-site
 +cd my-new-hugo-site
 +cd themes; git clone https://github.com/eliasson/liquorice
 +hugo -t liquorice
 +aero create                                           # create the Aerobatic site
 +hugo --baseURL https://my-new-hugo-site.aerobatic.io  # build the site overriding baseURL
 +aero deploy -d public                                 # deploy output to Aerobatic
 +
 +Version v1 deployment complete.
 +View now at https://hugo-docs-test.aerobatic.io
 +```
 +
 +In the rendered page response, the `https://__baseurl__` will be replaced with your actual site url (in this example, `https://my-new-hugo-site.aerobatic.io`). You can always rename your Aerobatic website with the `aero rename` command.
 +
 +## Push Hugo site to Bitbucket
 +
 +We will now create a git repository and then push our code to Bitbucket. In Bitbucket, create a repository.
 +
 +![][1]
 +
 +[1]: /images/hosting-and-deployment/hosting-on-bitbucket/bitbucket-create-repo.png
 +
 +
- ```bash
++```
 +# initialize new git repository
 +git init
 +
 +# set up our .gitignore file
 +echo -e "/public \n/themes \naero-deploy.tar.gz" >> .gitignore
 +
 +# commit and push code to master branch
 +git add --all
 +git commit -m "Initial commit"
 +git remote add origin git@bitbucket.org:YourUsername/my-new-hugo-site.git
 +git push -u origin master
 +```
 +
 +## Continuous Deployment With Bitbucket Pipelines
 +
 +In the example above, we pushed the compiled assets in the `/public` folder to Aerobatic. In the following example, we use Bitbucket Pipelines to continuously create and deploy the compiled assets to Aerobatic.
 +
 +### Step 1: Configure Bitbucket Pipelines
 +
 +In your Hugo website's Bitbucket repo;
 +
 +1. Click the Pipelines link in the left nav menu of your Bitbucket repository.
 +2. Click the Enable Pipelines button.
 +3. On the next screen, leave the default template and click Next.
 +4. In the editor, paste in the yaml contents below and click Commit.
 +
- ```bash
++```
 +image: beevelop/nodejs-python
 +pipelines:
 +  branches:
 +    master:
 +      - step:
 +          script:
 +            - apt-get update -y && apt-get install wget
 +            - apt-get -y install git
 +            - wget https://github.com/gohugoio/hugo/releases/download/v0.18/hugo_0.18-64bit.deb
 +            - dpkg -i hugo*.deb
 +            - git clone https://github.com/eliasson/liquorice themes/liquorice
 +            - hugo --theme=liquorice --baseURL https://__baseurl__ --buildDrafts
 +            - npm install -g aerobatic-cli
 +            - aero deploy
 +```
 +
 +### Step 2: Create `AEROBATIC_API_KEY` environment variable.
 +
 +This step only needs to be done once per account. From the command line;
 +
- ```bash
++```
 +aero apikey
 +```
 +
 +1. Navigate to the Bitbucket account settings for the account that the website repo belongs to.
 +2. Scroll down to the bottom of the left nav and click the Environment variables link in the PIPELINES section.
 +3. Create a new environment variable called AEROBATIC_API_KEY with the value you got by running the `aero apikey` command. Be sure to click the Secured checkbox.
 +
 +### Step 3: Edit and Commit Code
 +
++```
 +hugo new post/good-to-great.md
 +hugo server --buildDrafts -t liquorice #Check that all looks good
 +
 +# commit and push code to master branch
 +git add --all
 +git commit -m "New blog post"
 +git push -u origin master
 +```
 +
 +Your code will be committed to Bitbucket, Bitbucket Pipelines will run your build, and a new version of your site will be deployed to Aerobatic.
 +
 +At this point, you can now create and edit blog posts directly in the Bitbucket UI.
 +
 +![][2]
 +
 +[2]: /images/hosting-and-deployment/hosting-on-bitbucket/bitbucket-blog-post.png
 +
 +
 +## Suggested next steps
 +
 +The code for this example can be found in this Bitbucket [repository](https://bitbucket.org/dundonian/hugo-docs-test). Aerobatic also provides a number of additional [plugins](https://www.aerobatic.com/docs) such as auth and redirects that you can use for your Hugo site.
index 086b252ad5eff902df0ca8bb1e2eb0dc56e7ec18,0000000000000000000000000000000000000000..e1303651ea8e3ac45167cc6ffca489f1e6740c93
mode 100644,000000..100644
--- /dev/null
@@@ -1,91 -1,0 +1,91 @@@
- title: Hosting on Firebase
- linktitle: Hosting on Firebase
 +---
- ```sh
++title: Host on Firebase
++linktitle: Host on Firebase
 +description: You can use Firebase's free tier to host your static website; this also gives you access to Firebase's NOSQL API.
 +date: 2017-03-12
 +publishdate: 2017-03-12
 +lastmod: 2017-03-15
 +categories: [hosting and deployment]
 +#tags: [hosting,firebase]
 +authors: [Michel Racic]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +toc: true
 +aliases: []
 +---
 +
 +## Assumptions
 +
 +1. You have an account with [Firebase][signup]. (If you don't, you can sign up for free using your Google account.)
 +2. You have completed the [Quick Start][] or have a completed Hugo website ready for deployment.
 +
 +## Initial setup
 +
 +Go to the [Firebase console][console] and create a new project (unless you already have a project). You will need to globally install `firebase-tools` (node.js):
 +
 +
- ```sh
++```
 +npm install -g firebase-tools
 +```
 +
 +Log in to Firebase (setup on your local machine) using `firebase login`, which opens a browser where you can select your account. Use `firebase logout` in case you are already logged in but to the wrong account.
 +
 +
- ```sh
++```
 +firebase login
 +```
 +In the root of your Hugo project, initialize the Firebase project with the `firebase init` command:
 +
- ```sh
++```
 +firebase init
 +```
 +From here:
 +
 +1. Choose Hosting in the feature question
 +2. Choose the project you just set up
 +3. Accept the default for your database rules file
 +4. Accept the default for the publish directory, which is `public`
 +5. Choose "No" in the question if you are deploying a single-page app
 +
 +## Deploy
 +
 +To deploy your Hugo site, execute the `firebase deploy` command, and your site will be up in no time:
 +
- ```sh
++```
 +hugo && firebase deploy
 +```
 +
 +## CI Setup
 +
 +You can generate a deploy token using
 +
 +
- ```sh
++```
 +firebase login:ci
 +```
 +
 +You can also set up your CI (e.g., with [Wercker][]) and add the token to a private variable like `$FIREBASE_DEPLOY_TOKEN`.
 +
 +{{% note %}}
 +This is a private secret and it should not appear in a public repository. Make sure you understand your chosen CI and that it's not visible to others.
 +{{% /note %}}
 +
 +You can then add a step in your build to do the deployment using the token:
 +
++```
 +firebase deploy --token $FIREBASE_DEPLOY_TOKEN
 +```
 +
 +## Reference links
 +
 +* [Firebase CLI Reference](https://firebase.google.com/docs/cli/#administrative_commands)
 +
 +[console]: https://console.firebase.google.com
 +[Quick Start]: /getting-started/quick-start/
 +[signup]: https://console.firebase.google.com/
 +[Wercker]: /hosting-and-deployment/deployment-with-wercker/
index c86d1e44b3772d92b02be18446df9eeae6f7ca8e,0000000000000000000000000000000000000000..bd930b3f4d90bf21e9b7140968cdbe318046e3ff
mode 100644,000000..100644
--- /dev/null
@@@ -1,244 -1,0 +1,240 @@@
- title: Hosting on GitHub
- linktitle: Hosting on GitHub
 +---
- ```yaml
++title: Host on GitHub
++linktitle: Host on GitHub
 +description: Deploy Hugo as a GitHub Pages project or personal/organizational site and automate the whole process with a simple shell script.
 +date: 2014-03-21
 +publishdate: 2014-03-21
 +lastmod: 2017-03-30
 +categories: [hosting and deployment]
 +#tags: [github,git,deployment,hosting]
 +authors: [Spencer Lyon, Gunnar Morling]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +toc: true
 +aliases: [/tutorials/github-pages-blog/]
 +---
 +
 +GitHub provides free and fast static hosting over SSL for personal, organization, or project pages directly from a GitHub repository via its [GitHub Pages service][].
 +
 +## Assumptions
 +
 +1. You have Git 2.5 or greater [installed on your machine][installgit].
 +2. You have a GitHub account. [Signing up][ghsignup] for GitHub is free.
 +3. You have a ready-to-publish Hugo website or have at least completed the [Quick Start][].
 +
 +If you are working within an Organization account or want to set up a User website on GitHub and would like more information, refer to the [GitHub Pages documentation][ghorgs].
 +
 +{{% note %}}
 +Make sure your `baseURL` key-value in your [site configuration](/getting-started/configuration/) reflects the full URL of your GitHub pages repository if you're using the default GH Pages URL (e.g., `username.github.io/myprojectname/`) and not a custom domain.
 +{{% /note %}}
 +
 +## Deployment via `/docs` Folder on Master Branch
 +
 +[As described in the GitHub Pages documentation][ghpfromdocs], you can deploy from a folder called `docs/` on your master branch. To effectively use this feature with Hugo, you need to change the Hugo publish directory in your [site's][config] `config.toml` and `config.yaml`, respectively:
 +
- ```toml
++```
 +publishDir: docs
 +```
 +
- ```bash
++```
 +publishDir = "docs"
 +```
 +
 +After running `hugo`, push your master branch to the remote repository and choose the `docs/` folder as the website source of your repo. Do the following from within your GitHub project:
 +
 +1. Go to **Settings** &rarr; **GitHub Pages**
 +2. From **Source**,  select "master branch /docs folder". If the option isn't enabled, you likely do not have a `docs/` folder in the root of your project.
 +
 +{{% note %}}
 +The `docs/` option is the simplest approach but requires you set a publish directory in your site configuration. You cannot currently configure GitHub pages to publish from another directory on master, and not everyone prefers the output site live concomitantly with source files in version control.
 +{{% /note %}}
 +
 +## Deployment From Your `gh-pages` Branch
 +
 +You can also tell GitHub pages to treat your `master` branch as the published site or point to a separate `gh-pages` branch. The latter approach is a bit more complex but has some advantages:
 +
 +* It keeps your source and generated website in different branches and therefore maintains version control history for both.
 +* Unlike the preceding `docs/` option, it uses the default `public` folder.
 +
 +### Preparations for `gh-pages` Branch
 +
 +These steps only need to be done once. Replace `upstream` with the name of your remote; e.g., `origin`:
 +
 +#### Add the Public Folder
 +
 +First, add the `public` folder to your `.gitignore` file at the project root so that the directory is ignored on the master branch:
 +
- ```bash
++```
 +echo "public" >> .gitignore
 +```
 +
 +#### Initialize Your `gh-pages` Branch
 +
 +You can now initialize your `gh-pages` branch as an empty [orphan branch][]:
 +
- ```sh
++```
 +git checkout --orphan gh-pages
 +git reset --hard
 +git commit --allow-empty -m "Initializing gh-pages branch"
 +git push upstream gh-pages
 +git checkout master
 +```
 +
 +### Build and Deployment
 +
 +Now check out the `gh-pages` branch into your `public` folder using git's [worktree feature][]. Essentially, the worktree allows you to have multiple branches of the same local repository to be checked out in different directories:
 +
- {{% code file="commit-gh-pages-files.sh"%}}
- ```bash
++```
 +rm -rf public
 +git worktree add -B gh-pages public upstream/gh-pages
 +```
 +
 +Regenerate the site using the `hugo` command and commit the generated files on the `gh-pages` branch:
 +
- ```
- {{% /code %}}
++{{< code file="commit-gh-pages-files.sh">}}
 +hugo
 +cd public && git add --all && git commit -m "Publishing to gh-pages" && cd ..
- ```bash
++{{< /code >}}
 +
 +If the changes in your local `gh-pages` branch look alright, push them to the remote repo:
 +
- {{% code file="publish_to_ghpages.sh" %}}
- ```sh
++```
 +git push upstream gh-pages
 +```
 +
 +#### Set `gh-pages` as Your Publish Branch
 +
 +In order to use your `gh-pages` branch as your publishing branch, you'll need to configure the repository within the GitHub UI. This will likely happen automatically once GitHub realizes you've created this branch. You can also set the branch manually from within your GitHub project:
 +
 +1. Go to **Settings** &rarr; **GitHub Pages**
 +2. From **Source**,  select "gh-pages branch" and then **Save**. If the option isn't enabled, you likely have not created the branch yet OR you have not pushed the branch from your local machine to the hosted repository on GitHub.
 +
 +After a short while, you'll see the updated contents on your GitHub Pages site.
 +
 +### Put it Into a Script
 +
 +To automate these steps, you can create a script with the following contents:
 +
- ```
- {{% /code %}}
++{{< code file="publish_to_ghpages.sh" >}}
 +#!/bin/sh
 +
 +DIR=$(dirname "$0")
 +
 +cd $DIR/..
 +
 +if [[ $(git status -s) ]]
 +then
 +    echo "The working directory is dirty. Please commit any pending changes."
 +    exit 1;
 +fi
 +
 +echo "Deleting old publication"
 +rm -rf public
 +mkdir public
 +git worktree prune
 +rm -rf .git/worktrees/public/
 +
 +echo "Checking out gh-pages branch into public"
 +git worktree add -B gh-pages public upstream/gh-pages
 +
 +echo "Removing existing files"
 +rm -rf public/*
 +
 +echo "Generating site"
 +hugo
 +
 +echo "Updating gh-pages branch"
 +cd public && git add --all && git commit -m "Publishing to gh-pages (publish.sh)"
- ```sh
++{{< /code >}}
 +
 +This will abort if there are pending changes in the working directory and also makes sure that all previously existing output files are removed. Adjust the script to taste, e.g. to include the final push to the remote repository if you don't need to take a look at the gh-pages branch before pushing. Or adding `echo yourdomainname.com >> CNAME` if you set up for your gh-pages to use customize domain.
 +
 +## Deployment From Your `master` Branch
 +
 +To use `master` as your publishing branch, you'll need your rendered website to live at the root of the GitHub repository. Steps should be similar to that of the `gh-pages` branch, with the exception that you will create your GitHub repository with the `public` directory as the root. Note that this does not provide the same benefits of the `gh-pages` branch in keeping your source and output in separate, but version controlled, branches within the same repo.
 +
 +You will also need to set `master` as your publishable branch from within the GitHub UI:
 +
 +1. Go to **Settings** &rarr; **GitHub Pages**
 +2. From **Source**,  select "master branch" and then **Save**.
 +
 +## Host GitHub User or Organization Pages
 +
 +As mentioned [in this GitHub Help article](https://help.github.com/articles/user-organization-and-project-pages/), you can host a user/organization page in addition to project pages. Here are the key differences in GitHub Pages websites for Users and Organizations:
 +
 +1. You must use the `<USERNAME>.github.io` naming scheme for your GitHub repo.
 +2. Content from the `master` branch will be used to publish your GitHub Pages site.
 +
 +It becomes much simpler in this case: we'll create two separate repos, one for Hugo's content, and a git submodule with the `public` folder's content in it.
 +
 +### Step-by-step Instructions
 +
 +1. Create a `<YOUR-PROJECT>` git repository on GitHub. This repository will contain Hugo's content and other source files.
 +2. Create a `<USERNAME>.github.io` GitHub repository. This is the repository that will contain the fully rendered version of your Hugo website.
 +3. `git clone <YOUR-PROJECT-URL> && cd <YOUR-PROJECT>`
 +4. Make your website work locally (`hugo server` or `hugo server -t <YOURTHEME>`) and open your browser to <http://localhost:1313>.
 +5. Once you are happy with the results:
 +    * Press <kbd>Ctrl</kbd>+<kbd>C</kbd> to kill the server
 +    * `rm -rf public` to completely remove the `public` directory if there
 +6. `git submodule add -b master git@github.com:<USERNAME>/<USERNAME>.github.io.git public`. This creates a git [submodule][]. Now when you run the `hugo` command to build your site to `public`, the created `public` directory will have a different remote origin (i.e. hosted GitHub repository). You can automate some of these steps with the following script.
 +
 +#### Put it Into a Script
 +
 +You're almost done. You can also add a `deploy.sh` script to automate the preceding steps for you. You can also make it executable with `chmod +x deploy.sh`.
 +
 +The following are the contents of the `deploy.sh` script:
 +
++```
 +#!/bin/bash
 +
 +echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"
 +
 +# Build the project.
 +hugo # if using a theme, replace with `hugo -t <YOURTHEME>`
 +
 +# Go To Public folder
 +cd public
 +# Add changes to git.
 +git add .
 +
 +# Commit changes.
 +msg="rebuilding site `date`"
 +if [ $# -eq 1 ]
 +  then msg="$1"
 +fi
 +git commit -m "$msg"
 +
 +# Push source and build repos.
 +git push origin master
 +
 +# Come Back up to the Project Root
 +cd ..
 +```
 +
 +
 +You can then run `./deploy.sh "Your optional commit message"` to send changes to `<USERNAME>.github.io`. Note that you likely will want to commit changes to your `<YOUR-PROJECDT>` repository as well.
 +
 +That's it! Your personal page should be up and running at `https://yourusername.github.io` within a couple minutes.
 +
 +## Use a Custom Domain
 +
 +If you'd like to use a custom domain for your GitHub Pages site, create a file `static/CNAME`. Your custom domain name should be the only contents inside `CNAME`. Since it's inside `static`, the published site will contain the CNAME file at the root of the published site, which is a requirements of GitHub Pages.
 +
 +Refer to the [official documentation for custom domains][domains] for further information.
 +
 +[config]: /getting-started/configuration/
 +[domains]: https://help.github.com/articles/using-a-custom-domain-with-github-pages/
 +[ghorgs]: https://help.github.com/articles/user-organization-and-project-pages/#user--organization-pages
 +[ghpfromdocs]: https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/#publishing-your-github-pages-site-from-a-docs-folder-on-your-master-branch
 +[ghsignup]: https://github.com/join
 +[GitHub Pages service]: https://help.github.com/articles/what-is-github-pages/
 +[installgit]: https://git-scm.com/downloads
 +[orphan branch]: https://git-scm.com/docs/git-checkout/#git-checkout---orphanltnewbranchgt
 +[Quick Start]: /getting-started/quick-start/
 +[submodule]: https://github.com/blog/2104-working-with-submodules
 +[worktree feature]: https://git-scm.com/docs/git-worktree
index 47d552a847678f7d48d4dbbfa16850b577228b71,0000000000000000000000000000000000000000..0b852dde351f434554a960e6b53ffe10a2b4293c
mode 100644,000000..100644
--- /dev/null
@@@ -1,83 -1,0 +1,81 @@@
- title: Hosting on GitLab
- linktitle: Hosting on GitLab
 +---
- ```bash
++title: Host on GitLab
++linktitle: Host on GitLab
 +description: GitLab makes it incredibly easy to build, deploy, and host your Hugo website via their free GitLab Pages service, which provides native support for Hugo.
 +date: 2016-06-23
 +publishdate: 2016-06-23
 +lastmod: 2016-06-23
 +categories: [hosting and deployment]
 +#tags: [hosting,deployment,git,gitlab]
 +authors: [Riku-Pekka Silvola]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 40
 +weight: 40
 +sections_weight: 40
 +draft: false
 +toc: true
 +wip: false
 +aliases: [/tutorials/hosting-on-gitlab/]
 +---
 +
 +[GitLab](https://gitlab.com/) makes it incredibly easy to build, deploy, and host your Hugo website via their free GitLab Pages service, which provides [native support for Hugo, as well as numerous other static site generators](https://gitlab.com/pages/hugo).
 +
 +## Assumptions
 +
 +* Working familiarity with Git for version control
 +* Completion of the Hugo [Quick Start][]
 +* A [GitLab account](https://gitlab.com/users/sign_in)
 +* A Hugo website on your local machine that you are ready to publish
 +
 +## Create .gitlab-ci.yml
 +
- {{% code file="gitlab-ci.yml" %}}
- ```yml
++```
 +cd your-hugo-site
 +```
 +
 +In the root directory of your Hugo site, create a `.gitlab-ci.yml` file. The `.gitlab-ci.yml` configures the GitLab CI on how to build your page. Simply add the content below.
 +
- ```
- {{% /code %}}
++{{< code file="gitlab-ci.yml" >}}
 +image: publysher/hugo
 +
 +pages:
 +  script:
 +  - hugo
 +  artifacts:
 +    paths:
 +    - public
 +  only:
 +  - master
- ```bash
++{{< /code >}}
 +
 +## Push Your Hugo Website to GitLab
 +
 +Next, create a new repository on GitLab. It is *not* necessary to make the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab or keep your output website in version control.
 +
++```
 +# initialize new git repository
 +git init
 +
 +# add /public directory to our .gitignore file
 +echo "/public" >> .gitignore
 +
 +# commit and push code to master branch
 +git add .
 +git commit -m "Initial commit"
 +git remote add origin https://gitlab.com/YourUsername/your-hugo-site.git
 +git push -u origin master
 +```
 +
 +## Wait for Your Page to Build
 +
 +That's it! You can now follow the CI agent building your page at https://gitlab.com/<YourUsername>/<your-hugo-site>/pipelines.
 +
 +After the build has passed, your new website is available at `https://<YourUsername>.gitlab.io/<your-hugo-site>/`.
 +
 +## Next Steps
 +
 +GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see the [GitLab Pages setup documentation](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/).
 +
 +[Quick Start]: /getting-started/quick-start/
index 9c676d1c219867cc7d1bc5a8f3c54636b11ac85a,0000000000000000000000000000000000000000..012c45d2c36fdc2110c3bd4d4d578979459d4b4e
mode 100644,000000..100644
--- /dev/null
@@@ -1,123 -1,0 +1,123 @@@
- title: Hosting on Netlify
- linktitle: Hosting on Netlify
 +---
- ```bash
++title: Host on Netlify
++linktitle: Host on Netlify
 +description: Netlify can host your Hugo site with CDN, continuous deployment, 1-click HTTPS, an admin GUI, and its own CLI.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-11
 +categories: [hosting and deployment]
 +#tags: [netlify,hosting,deployment]
 +authors: [Ryan Watters, Seth MacLeod]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: []
 +toc: true
 +---
 +
 +[Netlify][netlify] provides continuous deployment services, global CDN, ultra-fast DNS, atomic deploys, instant cache invalidation, one-click SSL, a browser-based interface, a CLI, and many other features for managing your Hugo website.
 +
 +## Assumptions
 +
 +* You have an account with GitHub, GitLab, or Bitbucket.
 +* You have completed the [Quick Start][] or have Hugo website you are ready to deploy and share with the world.
 +* You do not already have a Netlify account.
 +
 +## Create a Netlify account
 +
 +Go to [app.netlify.com][] and select your preferred signup method. This will likely be a hosted Git provider, although you also have the option to sign up with an email address.
 +
 +The following examples use GitHub, but other git providers will follow a similar process.
 +
 +![Screenshot of the homepage for app.netlify.com, containing links to the most popular hosted git solutions.](/images/hosting-and-deployment/hosting-on-netlify/netlify-signup.jpg)
 +
 +Selecting GitHub will bring up a typical modal you've seen through other application that use GitHub for authentication. Select "Authorize application."
 +
 +![Screenshot of the authorization popup for Netlify and GitHub.](/images/hosting-and-deployment/hosting-on-netlify/netlify-first-authorize.jpg)
 +
 +## Create a New Site with Continuous Deployment
 +
 +You're now already a Netlify member and should be brought to your new dashboard. Select "New site from git."
 +
 +![Screenshot of the blank Netlify admin panel with no sites and highlighted 'add new site' button'](/images/hosting-and-deployment/hosting-on-netlify/netlify-add-new-site.jpg)
 +
 +Netlify will then start walking you through the steps necessary for continuous deployment. First, you'll need to select your git provider again, but this time you are giving Netlify added permissions to your repositories.
 +
 +![Screenshot of step 1 of create a new site for Netlify: selecting the git provider](/images/hosting-and-deployment/hosting-on-netlify/netlify-create-new-site-step-1.jpg)
 +
 +And then again with the GitHub authorization modal:
 +
 +![Screenshot of step 1 of create a new site for Netlify: selecting the git provider](/images/hosting-and-deployment/hosting-on-netlify/netlify-authorize-added-permissions.jpg)
 +
 +Select the repo you want to use for continuous deployment. If you have a large number of repositories, you can filter through them in real time using repo search:
 +
 +![Screenshot of step 1 of create a new site for Netlify: selecting the git provider](/images/hosting-and-deployment/hosting-on-netlify/netlify-create-new-site-step-2.jpg)
 +
 +Once selected, you'll be brought to a screen for basic setup. Here you can select the branch you wanted published, your [build command][], and your publish (i.e. deploy) directory. The publish directory should mirror that of what you've set in your [site configuration][config], the default of which is `public`. The following steps assume you are publishing from the `master` branch.
 +
 +### Build with a Specific Hugo Version
 +
 +Setting the build command to `hugo` will build your site according to the current default Hugo version used by Netlify. You can see the full list of [available Hugo versions in Netlify's Docker file][hugoversions].
 +
 +If you want to tell Netlify to build with a specific version, you can append an underscore followed by the version number to the build command:
 +
- ```bash
++```
 +hugo_0.19
 +```
 +
 +Your simple configuration should now look similar to the following:
 +
 +![Screenshot of 3-step, basic continuous deployment setup with a new Hugo site on Netlify](/images/hosting-and-deployment/hosting-on-netlify/netlify-create-new-site-step-3.jpg)
 +
 +Selecting "Deploy site" will immediately take you to a terminal for your build:.
 +
 +![Animated gif of deploying a site to Netlify, including the terminal read out for the build.](/images/hosting-and-deployment/hosting-on-netlify/netlify-deploying-site.gif)
 +
 +Once the build is finished---this should only take a few seconds--you should now see a "Hero Card" at the top of your screen letting you know the deployment is successful. The Hero Card is the first element that you see in most pages. It allows you to see a quick summary of the page and gives access to the most common/pertinent actions and information. You'll see that the URL is automatically generated by Netlify. You can update the URL in "Settings."
 +
 +![Screenshot of successful deploy badge at the top of a deployments screen from within the Netlify admin.](/images/hosting-and-deployment/hosting-on-netlify/netlify-deploy-published.jpg)
 +
 +![Screenshot of homepage to https://hugo-netlify-example.netlify.com, which is mostly dummy text](/images/hosting-and-deployment/hosting-on-netlify/netlify-live-site.jpg)
 +
 +[Visit the live site][visit].
 +
 +Now every time you push changes to your hosted git repository, Netlify will rebuild and redeploy your site.
 +
 +## Use Hugo Themes with Netlify
 +
 +The [`git clone` method for installing themes][installthemes] is not supported by Netlify. If you were to use `git clone`, it would require you to recursively remove the `.git` subdirectory from the theme folder and would therefore prevent compatibility with future versions of the theme.
 +
 +A *better* approach is to install a theme as a proper git submodule. You can [read the GitHub documentation for submodules][ghsm] or those found on [Git's website][gitsm] for more information, but the command is similar to that of `git clone`:
 +
++```
 +cd themes
 +git submodule add https://github.com/<THEMECREATOR>/<THEMENAME>
 +```
 +
 +## Next Steps
 +
 +You now have a live website served over https, distributed through CDN, and configured for continuous deployment. Dig deeper into the Netlify documentation:
 +
 +1. [Using a Custom Domain][]
 +2. [Setting up HTTPS on Custom Domains][httpscustom]
 +3. [Redirects and Rewrite Rules][]
 +
 +
 +[app.netlify.com]: https://app.netlify.com
 +[build command]: /getting-started/usage/#the-hugo-command
 +[config]: /getting-started/configuration/
 +[ghsm]: https://github.com/blog/2104-working-with-submodules
 +[gitsm]: https://git-scm.com/book/en/v2/Git-Tools-Submodules
 +[httpscustom]: https://www.netlify.com/docs/ssl/
 +[hugoversions]: https://github.com/netlify/build-image/blob/master/Dockerfile#L166
 +[installthemes]: /themes/installing/
 +[netlify]: https://www.netlify.com/
 +[netlifysignup]: https://app.netlify.com/signup
 +[Quick Start]: /getting-started/quick-start/
 +[Redirects and Rewrite Rules]: https://www.netlify.com/docs/redirects/
 +[Using a Custom Domain]: https://www.netlify.com/docs/custom-domains/
 +[visit]: https://hugo-netlify-example.netlify.com
index 1447ef938c224d38b7583f847e8400ac0b2e7c79,0000000000000000000000000000000000000000..366862e4d937f7da6972952f0493919501507fc5
mode 100644,000000..100644
--- /dev/null
@@@ -1,250 -1,0 +1,250 @@@
- title: "June Release"
 +---
 +date: 2016-06-06T13:54:06-04:00
 +description: "Hugo 0.16 is our best and biggest release ever. The Hugo community has outdone itself with continued performance improvements, beautiful themes and increased stability."
++title: "Hugo 0.16"
 +categories: ["Releases"]
 +---
 +
 +Hugo 0.16 is our best and biggest release ever. The Hugo community has
 +outdone itself with continued performance improvements,
 +[beautiful themes](http://themes.gohugo.io) for all types of sites from project
 +sites to documentation to blogs to portfolios, and increased stability.
 +
 +This release represents **over 550 contributions by over 110 contributors** to
 +the main Hugo code base. Since last release Hugo has **gained 3500 stars, 90
 +contributors and 23 additional themes.**
 +
 +This release celebrates 3 years since  {{< gh "@spf13" >}} wrote the first lines
 +of Hugo. During those 3 years Hugo has accomplished some major milestones
 +including...
 +
 +* 10,000+ stars on GitHub
 +* 320+ contributors
 +* 90+ themes
 +* 1000s of happy websites
 +* Many subprojects like {{< gh "@spf13/cobra">}}, {{< gh "@spf13/viper">}} and
 +  {{< gh "@spf13/afero">}} which have experienced broad usage across the Go
 +  ecosystem.
 +
 +{{< gh "@bep" >}} led the development of Hugo for the 3rd consecutive release
 +with nearly half of the contributions to 0.16 in addition to his considerable
 +contributions as lead maintainer. {{< gh "@anthonyfok" >}}, {{< gh
 +"@DigitalCraftsman" >}}, {{< gh "@MooreReason" >}} all made significant
 +contributions. A special thanks to {{< gh "@abourget" >}} for his considerable
 +work on multilingual support. Due to its broad impact we wanted to spend more
 +time testing it and it will be included in Hugo's next release.
 +
 +### Highlights
 +
 +**Partial Builds:** Prior to this release Hugo would always reread and rebuild
 +the entire site. This release introduces support for reactive site building
 +while watching (`hugo server`). Hugo will watch the filesystem for changes and
 +only re-read the changed files. Depending on the files change Hugo will
 +intelligently re-render only the needed portion of the site. Performance gains
 +depend on the operation performed and size of the site. In our testing build
 +times decreased anywhere from 10% to 99%.
 +
 +**Template Improvements:** Template improvements continue to be a mainstay of each Hugo release. Hugo 0.16 adds support for the new `block` keyword introduced in Go 1.6 -- think base templates with default sections -- as well as many new template functions.
 +
 +**Polish:** As Hugo matures releases will inevitably contain fewer huge new features. This release represents hundreds of small improvements across ever facet of Hugo which will make for a much better experience for all of our users. Worth mentioning here is the curious bug where live reloading didn't work in some editors on OS X, including the popular TextMate 2. This is now fixed. Oh, and now any error will exit with an error code, a big thing for automated deployments.
 +
 +### New Features
 +* Support reading configuration variables from the OS environment {{<gh 2090 >}}
 +* Add emoji support {{<gh 1892>}}
 +* Add `themesDir` option to configuration {{<gh 1556>}}
 +* Add support for Go 1.6 `block` keyword in templates {{<gh 1832>}}
 +* Partial static sync {{<gh 1644>}}
 +* Source file based relative linking (à la GitHub) {{<gh 0x0f6b334b6715253b030c4e783b88e911b6e53e56>}}
 +* Add `ByLastmod` sort function to pages. {{<gh 0xeb627ca16de6fb5e8646279edd295a8bf0f72bf1 >}}
 +* New templates functions:
 +    * `readFile` {{<gh 1551 >}}
 +    * `countwords` and `countrunes` {{<gh 1440>}}
 +    * `default` {{<gh 1943>}}
 +    * `hasPrefix` {{<gh 1243>}}
 +    * `humanize` {{<gh 1818>}}
 +    * `jsonify` {{<gh 0x435e996c4fd48e9009ffa9f83a19fb55f0777dbd>}}
 +    * `md5` and `sha1` {{<gh 1932>}}
 +    * `replaceRE` {{<gh 1845>}}
 +    * `findRE` {{<gh 2048>}}
 +    * `shuffle` {{<gh 1942>}}
 +    * `slice` {{<gh 1902>}}
 +    * `plainify` {{<gh 1915>}}
 +
 +### Enhancements
 +
 +* Hugo now exits with error code on any error. This is a big thing for
 +  automated deployments. {{<gh 740 >}}
 +* Print error when `/index.html` is zero-length {{<gh 947>}}
 +* Enable dirname and filename bash autocompletion for more flags {{<gh
 +  0x666ddd237791b56fd048992dca9a27d1af50a10e>}}
 +* Improve error handling in commands {{<gh 1502>}}
 +* Add sanity checks for `hugo import jekyll` {{<gh 1625 >}}
 +* Add description to `Page.Params` {{<gh 1484>}}
 +* Add async version of Google Analytics internal template {{<gh 1711>}}
 +* Add autostart option to YouTube shortcode {{<gh 1784>}}
 +* Set Date and Lastmod for main home page {{<gh 1903>}}
 +* Allow URL with extension in front matter {{<gh 1923>}}
 +* Add list support in Scratch {{<gh
 +  0xeaba04e82bdfc5d4c29e970f11b4aab9cc0efeaa>}}
 +* Add file option to gist shortcode {{<gh 1955>}}
 +* Add config layout and content directory CLI options {{<gh 1698>}}
 +* Add boolean value comparison to `where` template function {{<gh
 +  0xf3c74c9db484c8961e70cb3458f9e41e7832fa12>}}
 +* Do not write to to cache when `ignoreCache` is set  {{<gh 2067>}}
 +* Add option to disable rendering of 404 page  {{<gh 2037>}}
 +* Mercurial is no longer needed to build Hugo {{<gh 2062 >}}
 +* Do not create `robots.txt` by default {{<gh 2049>}}
 +* Disable syntax guessing for PygmentsCodeFences by default.  To enable syntax
 +  guessing again, add the following to your config file:
 +  `PygmentsCodeFencesGuessSyntax = true` {{<gh 2034>}}
 +* Make `ByCount` sort consistently {{<gh 1930>}}
 +* Add `Scratch` to shortcode {{<gh 2000>}}
 +* Add support for symbolic links for content, layout, static, theme  {{<gh 1855
 +  >}}
 +* Add '+' as one of the valid characters in URLs specified in the front matter
 +  {{<gh 1290 >}}
 +* Make alias redirect output URLs relative when `RelativeURLs = true` {{<gh
 +  2093 >}}
 +* Hugo injects meta generator tag on homepage if missing {{<gh
 +  2182 >}}
 +
 +### Fixes
 +* Fix file change watcher for TextMate 2 and friends on OS X {{<gh 1053 >}}
 +* Make dynamic reloading of config file reliable on all platform {{<gh 1684 >}}
 +* Hugo now works on Linux/arm64 {{<gh 1772 >}}
 +* `plainIDAnchors` now defaults to `true`  {{<gh 2057>}}
 +* Win32 and ARM builds fixed {{<gh 1716>}}
 +* Copy static dir files without theme's static dir {{<gh 1656>}}
 +* Make `noTimes` command flag work {{<gh 1657>}}
 +* Change most global CLI flags into local ones {{<gh 1624>}}
 +* Remove transformation of menu URLs {{<gh 1239>}}
 +* Do not fail on unknown Jekyll file {{<gh 1705>}}
 +* Use absolute path when editing with editor {{<gh 1589>}}
 +* Fix hugo server "Watching for changes" path display {{<gh 1721>}}
 +* Do not strip special characters out of URLs {{<gh 1292>}}
 +* Fix `RSSLink` when uglyURLs are enabled {{<gh 175>}}
 +* Get BaseURL from viper in server mode {{<gh 1821>}}
 +* Fix shortcode handling in RST {{<gh 1904>}}
 +* Use default sitemap configuration for homepage {{<gh 1304>}}
 +* Exit if specific port is unavailable in server mode {{<gh 1901>}}
 +* Fix regression in "section menus for lazy blogger" {{<gh 2065>}}
 +
 +****
 +
 +## **0.15.0**  November 25, 2015
 +
 +The v0.15.0 Hugo release brings a lot of polish to Hugo. Exactly 6 months after
 +the 0.14 release, Hugo has seen massive growth and changes. Most notably, this
 +is Hugo's first release under the Apache 2.0 license. With this license change
 +we hope to expand the great community around Hugo and make it easier for our
 +many users to contribute.  This release represents over **377 contributions by
 +87 contributors** to the main Hugo repo and hundreds of improvements to the
 +libraries Hugo uses. Hugo also launched a [new theme
 +showcase](http://themes.gohugo.io) and participated in
 +[Hacktoberfest](https://hacktoberfest.digitalocean.com).
 +
 +Hugo now has:
 +
 +* 6700 (+2700) stars on GitHub
 +* 235 (+75) contributors
 +* 65 (+30) themes
 +
 +
 +**Template Improvements:** This release takes Hugo to a new level of speed and
 +usability. Considerable work has been done adding features and performance to
 +the template system which now has full support of Ace, Amber and Go Templates.
 +
 +**Hugo Import:** Have a Jekyll site, but dreaming of porting it to Hugo? This
 +release introduces a new `hugo import jekyll`command that makes this easier
 +than ever.
 +
 +**Performance Improvements:** Just when you thought Hugo couldn't get any faster,
 +Hugo continues to improve in speed while adding features. Notably Hugo 0.15
 +introduces the ability to render and serve directly from memory resulting in
 +30%+ lower render times.
 +
 +Huge thanks to all who participated in this release. A special thanks to
 +{{< gh "@bep" >}} who led the development of Hugo this release again,
 +{{< gh "@anthonyfok" >}},
 +{{< gh "@eparis" >}},
 +{{< gh "@tatsushid" >}} and
 +{{< gh "@DigitalCraftsman" >}}.
 +
 +
 +### New features
 +* new `hugo import jekyll` command. {{< gh 1469 >}}
 +* The new `Param` convenience method on `Page` and `Node` can be used to get the most specific parameter value for a given key. {{< gh 1462 >}}
 +* Several new information elements have been added to `Page` and `Node`:
 +    * `RuneCount`: The number of [runes](http://blog.golang.org/strings) in the content, excluding any whitespace. This may be a good alternative to `.WordCount`  for Japanese and other CJK languages where a word-split by spaces makes no sense.  {{< gh 1266 >}}
 +    * `RawContent`: Raw Markdown as a string. One use case may be of embedding remarkjs.com slides.
 +    * `IsHome`: tells the truth about whether you're on the home page or not.
 +
 +### Improvements
 +* `hugo server` now builds ~30%+ faster by rendering to memory instead of disk. To get the old behavior, start the server with `--renderToDisk=true`.
 +* Hugo now supports dynamic reloading of the config file when watching.
 +* We now use a custom-built `LazyFileReader` for reading file contents, which means we don't read media files in `/content` into memory anymore -- and file reading is now performed in parallel on multicore PCs. {{< gh 1181 >}}
 +* Hugo is now built with `Go 1.5` which, among many other improvements, have fixed the last known data race in Hugo. {{< gh 917 >}}
 +* Paginator now also supports page groups. {{< gh 1274 >}}
 +* Markdown improvements:
 +    * Hugo now supports GitHub-flavoured markdown code fences for highlighting for `md`-files (Blackfriday rendered markdown) and `mmark` files (MMark rendered markdown). {{< gh 362 1258 >}}
 +    * Several new Blackfriday options are added:
 +        * Option to disable Blackfriday's `Smartypants`.
 +        * Option for Blackfriday to open links in a new window/tab. {{< gh 1220 >}}
 +        * Option to disable Blackfriday's LaTeX style dashes {{< gh 1231 >}}
 +        * Definition lists extension support.
 +* `Scratch` now has built-in `map` support.
 +* We now fall back to `link title` for the default page sort. {{< gh 1299 >}}
 +* Some notable new configuration options:
 +    *  `IgnoreFiles` can be set with a list of Regular Expressions that matches files to be ignored during build. {{< gh 1189 >}}
 +    * `PreserveTaxonomyNames`, when set to `true`, will preserve what you type as the taxonomy name both in the folders created and the taxonomy `key`, but it will be normalized for the URL.  {{< gh 1180 >}}
 +* `hugo gen` can now generate man files, bash auto complete and markdown documentation
 +* Hugo will now make suggestions when a command is mistyped
 +* Shortcodes now have a boolean `.IsNamedParams` property. {{< gh 1597 >}}
 +
 +### New Template Features
 +* All template engines:
 +    * The new `dict` function that could be used to pass maps into a template. {{< gh 1463 >}}
 +    * The new `pluralize` and `singularize` template funcs.
 +    * The new `base64Decode` and `base64Encode` template funcs.
 +    * The `sort` template func now accepts field/key chaining arguments and pointer values. {{< gh 1330 >}}
 +    * Several fixes for `slicestr` and `substr`, most importantly, they now have full `utf-8`-support. {{< gh 1190 1333 1347 >}}
 +    * The new `last` template function allows the user to select the last `N` items of a slice. {{< gh 1148 >}}
 +    * The new `after` func allows the user to select the items after the `Nth` item. {{< gh 1200 >}}
 +    * Add `time.Time` type support to the `where`, `ge`, `gt`, `le`, and `lt` template functions.
 +    * It is now possible to use constructs like `where Values ".Param.key" nil` to filter pages that doesn't have a particular parameter. {{< gh 1232 >}}
 +    * `getJSON`/`getCSV`: Add retry on invalid content. {{< gh 1166 >}}
 +    *   The new `readDir` func lists local files. {{< gh 1204 >}}
 +    * The new `safeJS` function allows the embedding of content into JavaScript contexts in Go templates.
 +    * Get the main site RSS link from any page by accessing the `.Site.RSSLink` property. {{< gh 1566 >}}
 +* Ace templates:
 +    * Base templates now also works in themes. {{< gh 1215 >}}.
 +    * And now also on Windows. {{< gh 1178 >}}
 +* Full support for Amber templates including all template functions.
 +* A built-in template for Google Analytics. {{< gh 1505 >}}
 +* Hugo is now shipped with new built-in shortcodes: {{< gh 1576 >}}
 +  * `youtube` for YouTube videos
 +  * `vimeo` for Vimeo videos
 +  * `gist` for GitHub gists
 +  * `tweet` for Twitter Tweets
 +  * `speakerdeck` for Speakerdeck slides
 +
 +
 +### Bugfixes
 +* Fix data races in page sorting and page reversal. These operations are now also cached. {{< gh 1293 >}}
 +* `page.HasMenuCurrent()` and `node.HasMenuCurrent()` now work correctly in multi-level nested menus.
 +* Support `Fish and Chips` style section titles. Previously, this would end up as  `Fish And Chips`. Now, the first character is made toupper, but the rest are preserved as-is. {{< gh 1176 >}}
 +* Hugo now removes superfluous p-tags around shortcodes. {{< gh 1148 >}}
 +
 +### Notices
 +* `hugo server` will watch by default now.
 +* Some fields and methods were deprecated in `0.14`. These are now removed, so the error message isn't as friendly if you still use the old values. So please change:
 +    *   `getJson` to `getJSON`, `getCsv` to `getCSV`, `safeHtml` to
 +  `safeHTML`, `safeCss` to `safeCSS`, `safeUrl` to `safeURL`, `Url` to `URL`,
 +  `UrlPath` to `URLPath`, `BaseUrl` to `BaseURL`, `Recent` to `Pages`.
 +
 +### Known Issues
 +
 +Using the Hugo v0.15 32-bit Windows or ARM binary, running `hugo server` would crash or hang due to a [memory alignment issue](https://golang.org/pkg/sync/atomic/#pkg-note-BUG) in [Afero](https://github.com/spf13/afero).  The bug was discovered shortly after the v0.15.0 release and has since been [fixed](https://github.com/spf13/afero/pull/23) by {{< gh "@tpng" >}}.  If you encounter this bug, you may either compile Hugo v0.16-DEV from source, or use the following solution/workaround:
 +
 +* **64-bit Windows users: Please use [hugo_0.15_windows_amd64.zip](https://github.com/gohugoio/hugo/releases/download/v0.15/hugo_0.15_windows_amd64.zip)** (amd64 == x86-64).  It is only the 32-bit hugo_0.15_windows_386.zip that crashes/hangs (see {{< gh 1621 >}} and {{< gh 1628 >}}).
 +* **32-bit Windows and ARM users: Please run `hugo server --renderToDisk` as a workaround** until Hugo v0.16 is released (see [“hugo server” returns runtime error on armhf](https://discourse.gohugo.io/t/hugo-server-returns-runtime-error-on-armhf/2293) and {{< gh 1716 >}}).
index 1288de5a9ea50aa573ae168ff9ba1767f535b5b0,0000000000000000000000000000000000000000..6c5245592d21e2f8cc0c63cb17ae606161b16feb
mode 100644,000000..100644
--- /dev/null
@@@ -1,92 -1,0 +1,92 @@@
- title: "October Release: Hugo is going global"
 +---
 +author: bep
 +categories: ["Releases"]
 +date: 2016-10-07T13:54:06-04:00
 +description: "Hugo now supports multilingual sites with the most simple and elegant experience."
 +link: ""
++title: "0.17: Hugo is going global"
 +draft: false
 +---
 +Hugo is going global with our 0.17 release.  We put a lot of thought into how we could extend Hugo
 +to support multilingual websites with the most simple and elegant experience. Hugo's multilingual
 +capabilities rival the best web and documentation software, but Hugo's experience is unmatched.
 +If you have a single language website, the simple Hugo experience you already love is unchanged.
 +Adding additional languages to your website is simple and straightforward. Hugo has been completely
 +internally rewritten to be multilingual aware with translation and internationalization features
 +embedded throughout Hugo.
 +
 +Hugo continues its trend of each release being faster than the last. It's quite a challenge to consistently add
 +significant new functionality and simultaneously dramatically improve performance. {{<gh "@bep">}} has made it
 +his personal mission to apply the Go mantra of "Enable more. Do less" to Hugo. Hugo's consistent improvement
 +is a testament to his brilliance and his dedication to his craft. Hugo additionally benefits from the
 +performance improvements from the Go team in the Go 1.7 release.
 +
 +This release represents **over 300 contributions by over 70 contributors** to
 +the main Hugo code base. Since last release Hugo has **gained 2000 stars, 50 new
 +contributors and 20 additional themes.**
 +
 +Hugo now has:
 +
 +* 12,000 stars on GitHub
 +* 370+ contributors
 +* 110+ themes
 +
 +{{<gh "@bep" >}} continues to lead the project with the lionshare of contributions
 +and reviews. A special thanks to {{<gh "@bep" >}} and {{<gh "@abourget" >}} for their
 +considerable work on multilingual support.
 +
 +A big welcome to newcomers {{<gh "@MarkDBlackwell" >}}, {{<gh "@bogem" >}} and
 +{{<gh "@g3wanghc" >}} for their critical contributions.
 +
 +### Highlights
 +
 +**Multilingual Support:**
 +Hugo now supports multiple languages side-by-side. A single site can now have multiple languages rendered with
 +full support for translation and i18n.
 +
 +**Performance:**
 +Hugo is faster than ever! Hugo 0.17 is not only our fastest release, it's also the most efficient.
 +Hugo 0.17 is **nearly twice as fast as Hugo 0.16** and uses about 10% less memory.
 +This means that the same site will build in nearly half the time it took with Hugo 0.16.
 +For the first time Hugo sites are averaging well under 1ms per rendered content.
 +
 +**Docs overhaul:**
 +This release really focused on improving the documentation. [Gohugo.io](http://gohugo.io) is
 +more accurate and complete than ever.
 +
 +**Support for macOS Sierra**
 +
 +### New Features
 +* Multilingual support {{<gh 2303>}}
 +* Allow content expiration {{<gh 2137 >}}
 +* New templates functions:
 +  * `querify` function to generate query strings inside templates {{<gh 2257>}}
 +  * `htmlEscape` and `htmlUnescape` template functions {{<gh 2287>}}
 +  * `time` converts a timestamp string into a time.Time structure {{<gh 2329>}}
 +
 +### Enhancements
 +
 +* Render the shortcodes as late as possible {{<gh 0xed0985404db4630d1b9d3ad0b7e41fb186ae0112>}}
 +* Remove unneeded casts in page.getParam {{<gh 2186 >}}
 +* Automatic page date fallback {{<gh 2239>}}
 +* Enable safeHTMLAttr {{<gh 2234>}}
 +* Add TODO list support for markdown {{<gh 2296>}}
 +* Make absURL and relURL accept any type {{<gh 2352>}}
 +* Suppress 'missing static' error {{<gh 2344>}}
 +* Make summary, wordcount etc. more efficient {{<gh 2378>}}
 +* Better error reporting in `hugo convert` {{<gh 2440>}}
 +* Reproducible builds thanks to govendor {{<gh 2461>}}
 +
 +### Fixes
 +
 +* Fix shortcode in markdown headers {{<gh 2210 >}}
 +* Explicitly bind livereload to hugo server port {{<gh 2205>}}
 +* Fix Emojify for certain text patterns {{<gh 2198>}}
 +* Normalize file name to NFC {{<gh 2259>}}
 +* Ignore emacs temp files {{<gh 2266>}}
 +* Handle symlink change event {{<gh 2273>}}
 +* Fix panic when using URLize {{<gh 2274>}}
 +* `hugo import jekyll`: Fixed target path location check {{<gh 2293>}}
 +* Return all errors from casting in templates {{<gh 2356>}}
 +* Fix paginator counter on x86-32 {{<gh 2420>}}
 +* Fix half-broken self-closing shortcodes {{<gh 2499>}}
index 7afa333399aa31b39bccabb902e411e9bc1944b1,0000000000000000000000000000000000000000..085d7fa0f795e211b5e6c63346e66d40be7bb68d
mode 100644,000000..100644
--- /dev/null
@@@ -1,113 -1,0 +1,113 @@@
- title: "December Hugo Release"
 +---
 +date: 2016-12-30T13:54:02-04:00
 +categories: ["Releases"]
 +description: "The primary new feature in Hugo 0.18 is that every piece of content is now a Page."
 +link: ""
++title: "Hugo 0.18"
 +draft: false
 +author: bep
 +---
 +
 +Hugo 0.18.1 is a bug fix release fixing some issues introduced in Hugo 0.18:
 +
 +* Fix 32-bit binaries {{<gh 2847 >}}
 +* Fix issues with `preserveTaxonomyNames` {{<gh 2809 >}}
 +* Fix `.URL` for taxonomy pages when `uglyURLs=true` {{<gh 2819 >}}
 +* Fix `IsTranslated` and `Translations` for node pages {{<gh 2812 >}}
 +* Make template error messages more verbose {{<gh 2820 >}}
 +
 +## **0.18.0** December 19th 2016
 +
 +Today, we're excited to release the much-anticipated Hugo 0.18!
 +
 +We're heading towards the end of the year 2016, and we can look back on three releases and a steady growing community around the project.
 +This release includes **over 220 contributions by nearly 50 contributors** to the main codebase.
 +Since the last release, Hugo has **gained 1750 stars and 27 additional themes**.
 +
 +Hugo now has:
 +
 +- 13750+ stars
 +- 408+ contributors
 +- 137+ themes
 +
 +{{< gh "@bep" >}} once again took the lead of Hugo and contributed a significant amount of additions.
 +Also a big shoutout to {{< gh "@digitalcraftsman" >}} for his relentless work on keeping the documentation and the themes site in pristine condition,
 +and also a big thanks to {{< gh "@moorereason" >}} and {{< gh "@bogem" >}} for their contributions.
 +
 +We wish you all a Merry Christmas and a Happy New Year.<br>
 +*The Hugo team*
 +
 +### Highlights
 +
 +The primary new feature in Hugo 0.18 is that every piece of content is now a `Page` ({{<gh 2297>}}). This means that every page, including the homepage, can have a content file with front matter.
 +
 +Not only is this a much simpler model to understand, it is also faster and paved the way for several important new features:
 +
 +* Enable proper titles for Nodes {{<gh 1051>}}
 +* Sitemap.xml should include nodes, as well as pages {{<gh 1303>}}
 +* Document homepage content workaround {{<gh 2240>}}
 +* Allow home page to be easily authored in markdown {{<gh 720>}}
 +* Minimalist website with homepage as content {{<gh 330>}}
 +
 +Hugo again continues its trend of each release being faster than the last. It's quite a challenge to consistently add significant new functionality and simultaneously dramatically improve performance. Running [this benchmark]( https://github.com/bep/hugo-benchmark) with [these sites](https://github.com/bep/hugo-benchmark/tree/master/sites) (renders to memory) shows about   60% reduction in time spent and 30% reduction in memory usage compared to Hugo 0.17.
 +
 +### Other New Features
 +
 +* Every `Page` now has a `Kind` property. Since everything is a `Page` now, the `Kind` is used to differentiate different kinds of pages.
 +  Possible values are `page`, `home`, `section`, `taxonomy`, and `taxonomyTerm`.
 +  (Internally, we also define `RSS`, `sitemap`, `robotsTXT`, and `404`, but those have no practical use for end users at the moment since they are not included in any collections.)
 +* Add a `GitInfo` object to `Page` if `enableGitInfo` is set. It then also sets `Lastmod` for the given `Page` to the author date provided by Git. {{<gh 2291>}}
 +* Implement support for alias templates  {{<gh 2533 >}}
 +* New template functions:
 +  * Add `imageConfig` function {{<gh 2677>}}
 +  * Add `sha256` function {{<gh 2762>}}
 +  * Add `partialCached` template function {{<gh 1368>}}
 +* Add shortcode to display Instagram images {{<gh 2690>}}
 +* Add `noChmod` option to disable perm sync {{<gh 2749>}}
 +* Add `quiet` build mode {{<gh 1218>}}
 +
 +
 +### Notices
 +
 +* `.Site.Pages` will now contain *several kinds of pages*, including regular pages, sections, taxonomies, and the home page.
 +  If you want a specific kind of page, you can filter it with `where` and `Kind`.
 +  `.Site.RegularPages` is a shortcut to the page collection you have been used to getting.
 +* `RSSlink` is now deprecated.  Use `RSSLink` instead.
 +  Note that in Hugo 0.17 both of them existed, so there is a fifty-fifty chance you will not have to do anything
 +  (if you use a theme, the chance is close to 0), and `RSSlink` will still work for two Hugo versions.
 +
 +### Fixes
 +
 +* Revise the `base` template lookup logic so it now better matches the behavior of regular templates, making it easier to override the master templates from the theme {{<gh 2783>}}
 +* Add workaround for `block` template crash.
 +  Block templates are very useful, but there is a bug in Go 1.6 and 1.7 which makes the template rendering crash if you use the block template in more complex scenarios.
 +  This is fixed in the upcoming Go 1.8, but Hugo adds a temporary workaround in Hugo 0.18. {{<gh 2549>}}
 +* All the `Params` configurations are now case insensitive {{<gh 1129>}} {{<gh 2590>}} {{<gh 2615>}}
 +* Make RawContent raw again {{<gh 2601>}}
 +* Fix archetype title and date handling {{<gh 2750>}}
 +* Fix TOML archetype parsing in `hugo new` {{<gh 2745>}}
 +* Fix page sorting when weight is zero {{<gh 2673>}}
 +* Fix page names that contain dot {{<gh 2555>}}
 +* Fix RSS Title regression {{<gh 2645>}}
 +* Handle ToC before handling shortcodes {{<gh 2433>}}
 +* Only watch relevant themes dir {{<gh 2602>}}
 +* Hugo new content creates TOML slices with closing bracket on new line {{<gh 2800>}}
 +
 +### Improvements
 +
 +* Add page information to error logging in rendering {{<gh 2570>}}
 +* Deprecate `RSSlink` in favor of `RSSLink`
 +* Make benchmark command more useful {{<gh 2432>}}
 +* Consolidate the `Param` methods {{<gh 2590>}}
 +* Allow to set cache dir in config file
 +* Performance improvements:
 +  * Avoid repeated Viper loads of `sectionPagesMenu` {{<gh 2728>}}
 +  * Avoid reading from Viper for path and URL funcs {{<gh 2495>}}
 +  * Add `partialCached` template function. This can be a significant performance boost if you have complex partials that does not need to be rerendered for every page. {{<gh 1368>}}
 +
 +### Documentation Updates
 +
 +* Update roadmap {{<gh 2666>}}
 +* Update multilingual example {{<gh 2417>}}
 +* Add a "Deployment with rsync" tutorial page {{<gh 2658>}}
 +* Refactor `/docs` to use the `block` keyword {{<gh 2226>}}
index 0aad6ab77b5aa567903b9c23e8ecbc2d2bae115b,0000000000000000000000000000000000000000..5ccc94ca07cf7d874fabd07e6b4c77a35807523c
mode 100644,000000..100644
--- /dev/null
@@@ -1,82 -1,0 +1,82 @@@
- title: "February Release"
 +---
 +date: 2017-02-27T13:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.19 brings native Emacs Org-mode content support, and Hugo has its own Twitter account"
 +link: ""
++title: "Hugo 0.19"
 +draft: false
 +author: budparr
 +---
 +
 +We're happy to announce the first release of Hugo in 2017.
 +
 +This release represents **over 180 contributions by over 50 contributors** to the main Hugo code base. Since last release Hugo has **gained 1450 stars, 35 new contributors, and 15 additional themes.**
 +
 +Hugo now has:
 +
 +* 15200+ stars
 +* 470+ contributors
 +* 151+ themes
 +
 +Furthermore, Hugo has its own Twitter account ([@gohugoio](https://twitter.com/gohugoio)) where we share bite-sized news and themes from the Hugo community.
 +
 +{{< gh "@bep" >}} leads the Hugo development and once again contributed a significant amount of additions. Also a big shoutout to  {{< gh "@chaseadamsio" >}} for the Emacs Org-mode support, {{< gh "@digitalcraftsman" >}} for his relentless work on keeping the documentation and the themes site in pristine condition, {{< gh "@fj" >}}for his work on revising the `params` handling in Hugo, and {{< gh "@moorereason" >}} and {{< gh "@bogem" >}} for their ongoing contributions.
 +
 +### Highlights
 +
 +Hugo `0.19` brings native Emacs Org-mode content support ({{<gh 1483>}}), big thanks to {{< gh "@chaseadamsio" >}}.
 +
 +Also, a considerably amount of work have been put into cleaning up the Hugo source code, in an issue titled [Refactor the globals out of site build](https://github.com/gohugoio/hugo/issues/2701). This is not immediately visible to the Hugo end user, but will speed up future development.
 +
 +Hugo `0.18` was bringing full-parallel page rendering, so workarounds depending on rendering order did not work anymore, and pages with duplicate target paths (common examples would be `/index.md` or `/about/index.md`) would now conflict with the home page or the section listing.
 +
 +With Hugo `0.19`, you can control this behaviour by turning off page types you do not want ({{<gh 2534 >}}). In its most extreme case, if you put the below setting in your [`config.toml`](/getting-started/configuration/), you will get **nothing!**:
 +
 +```
 +disableKinds = ["page", "home", "section", "taxonomy", "taxonomyTerm", "RSS", "sitemap", "robotsTXT", "404"]
 +```
 +
 +### Other New Features
 +
 +* Add ability to sort pages by front matter parameters, enabling easy custom "top 10" page lists. {{<gh 3022 >}}
 +* Add `truncate` template function {{<gh 2882 >}}
 +* Add `now` function, which replaces the now deprecated `.Now` {{<gh 2859 >}}
 +* Make RSS item limit configurable {{<gh 3035 >}}
 +
 +### Enhancements
 +
 +*  Enhance `.Param` to permit arbitrarily nested parameter references {{<gh 2598 >}}
 +* Use `Page.Params` more consistently when adding metadata {{<gh 3033 >}}
 +* The `sectionPagesMenu` feature ("Section menu for the lazy blogger") is now integrated with the section content pages. {{<gh 2974 >}}
 +* Hugo `0.19` is compiled with Go 1.8!
 +* Make template funcs like `findRE` and friends more liberal in what argument types they accept {{<gh 3018 >}} {{<gh 2822 >}}
 +* Improve generation of OpenGraph date tags {{<gh 2979 >}}
 +
 +### Notes
 +
 +* `sourceRelativeLinks` is now deprecated and will be removed in Hugo `0.21` if  no one is stepping up to the plate and fixes and maintains this feature. {{<gh 3028 >}}
 +
 +### Fixes
 +
 +* Fix `.Site.LastChange` on sites where the default sort order is not chronological. {{<gh 2909 >}}
 +* Fix regression of `.Truncated` evaluation in manual summaries. {{<gh 2989 >}}
 +* Fix `preserveTaxonomyNames` regression {{<gh 3070 >}}
 +* Fix issue with taxonomies when only some have content page {{<gh 2992 >}}
 +* Fix instagram shortcode panic on invalid ID {{<gh 3048 >}}
 +* Fix subtle data race in `getJSON` {{<gh 3045 >}}
 +* Fix deadlock in cached partials {{<gh 2935 >}}
 +* Avoid double-encoding of paginator URLs {{<gh 2177 >}}
 +* Allow tilde in URLs {{<gh 2177 >}}
 +* Fix `.Site.Pages` handling on live reloads {{<gh 2869 >}}
 +* `UniqueID` now correctly uses the fill file path from the content root to calculate the hash, and is finally ... unique!
 +* Discard current language based on `.Lang()`, go get translations correct for paginated pages. {{<gh 2972 >}}
 +* Fix infinite loop in template AST handling for recursive templates  {{<gh 2927 >}}
 +* Fix issue with watching when config loading fails {{<gh 2603 >}}
 +* Correctly flush the imageConfig on live-reload {{<gh 3016 >}}
 +* Fix parsing of TOML arrays in front matter {{<gh 2752 >}}
 +
 +### Docs
 +
 +* Add tutorial "How to use Google Firebase to host a Hugo site" {{<gh 3007 >}}
 +* Improve documentation for menu rendering {{<gh 3056 >}}
 +* Revise GitHub Pages deployment tutorial {{<gh 2930 >}}
index d58db935a6873199cd35c5078a0faa26252bdeb3,0000000000000000000000000000000000000000..53350d74154e2f531efcae17af6bb62b6a3798e5
mode 100644,000000..100644
--- /dev/null
@@@ -1,14 -1,0 +1,14 @@@
- title: "April Release"
 +---
 +date: 2017-04-13T13:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.20.1 is a bug fix release, fixing some important regressions introduced in 0.20"
 +link: ""
++title: "Hugo 0.20.1"
 +draft: false
 +author: bep
 +---
 +
 +*   Fix logic for base template in work dir vs in the theme [#3323](//github.com/gohugoio/hugo/issues/3323)
 +*   camelCased templates (partials, shortcodes etc.) not found [#3333](//github.com/gohugoio/hugo/issues/3333)
 +*   Live-reload fails with `_index.md` with paginator [#3315](//github.com/gohugoio/hugo/issues/3315)
 +*   `rssURI` WARNING always shown [#3319](//github.com/gohugoio/hugo/issues/3319)
index 7ea9e4b918940e1d21d04f820e8b2942baca164e,0000000000000000000000000000000000000000..c4aaf9d5b4db79188e77f5ef8d34e026f1b46fa3
mode 100644,000000..100644
--- /dev/null
@@@ -1,44 -1,0 +1,44 @@@
- title: "April Release"
 +---
 +date: 2017-04-16T13:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.20.2 adds support for plain text partials included into HTML templates"
 +link: ""
++title: "Hugo 0.20.2"
 +draft: false
 +author: bep
 +---
 +
 +Hugo `0.20.2` adds support for plain text partials included into `HTML` templates. This was a side-effect of the big new [Custom Output Format](https://gohugo.io/extras/output-formats/) feature in `0.20`, and while the change was intentional and there was an ongoing discussion about fixing it in [#3273](//github.com/gohugoio/hugo/issues/3273), it did break some themes. There were valid workarounds for these themes, but we might as well get it right.
 +
 +The most obvious use case for this is inline `CSS` styles, which you now can do without having to name your partials with a `html` suffix.
 +
 +A simple example:
 +
 +In `layouts/partials/mystyles.css`:
 +
 +    body {
 +      background-color: {{ .Param "colors.main" }}
 +    }
 +
 +Then in `config.toml` (note that by using the `.Param` lookup func, we can override the color in a page’s front matter if we want):
 +
 +    [params]
 +    [params.colors]
 +    main = "green"
 +    text = "blue"
 +
 +And then in `layouts/partials/head.html` (or the partial used to include the head section into your layout):
 +
 +    <head>
 +        <style type="text/css">
 +        {{ partial "mystyles.css" . | safeCSS }}
 +        </style>
 +    </head>
 +
 +Of course, `0.20` also made it super-easy to create external `CSS` stylesheets based on your site and page configuration. A simple example:
 +
 +Add “CSS” to your home page’s `outputs` list, create the template `/layouts/index.css` using Go template syntax for the dynamic parts, and then include it into your `HTML` template with:
 +
 +    {{ with  .OutputFormats.Get "css" }}
 +    <link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink |  safeURL }}">
 +    {{ end }}`
index f0299ba016325f81b0e2a6d3c057aaff9ef9feba,0000000000000000000000000000000000000000..98176f3c4eea1c09885c8e76681c4a6ce6714f1d
mode 100644,000000..100644
--- /dev/null
@@@ -1,25 -1,0 +1,25 @@@
- title: "April Release"
 +---
 +date: 2017-04-24T13:53:58-04:00
 +categories: ["Releases"]
 +description: "This is a bug-fix release with one important fix. But it also adds some harness around GoReleaser"
 +link: ""
++title: "Hugo 0.20.3"
 +draft: false
 +author: bep
 +---
 +
 +This is a bug-fix release with one important fix. But it also adds some harness around [GoReleaser](https://github.com/goreleaser/goreleaser) to automate the Hugo release process. Big thanks to [@caarlos0](https://github.com/caarlos0) for great and super-fast support fixing issues along the way.
 +
 +Hugo now has:
 +
 +* 16619&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 458&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 156&#43; [themes](http://themes.gohugo.io/)
 +
 +## Enhancement
 +
 +* Automate the Hugo release process [550eba64](https://github.com/gohugoio/hugo/commit/550eba64705725eb54fdb1042e0fb4dbf6f29fd0) [@bep](https://github.com/bep) [#3358](https://github.com/gohugoio/hugo/issues/3358) 
 +
 +## Fix
 +
 +* Fix handling of zero-length files [9bf5c381](https://github.com/gohugoio/hugo/commit/9bf5c381b6b3e69d4d8dbfd7a40074ac44792bbf) [@bep](https://github.com/bep) [#3355](https://github.com/gohugoio/hugo/issues/3355) 
index ae566f93c6035db69547fa68a9d4b4d972e540ec,0000000000000000000000000000000000000000..f67939faf8738a74c162f2bcd358c26e21e33200
mode 100644,000000..100644
--- /dev/null
@@@ -1,23 -1,0 +1,23 @@@
- title: "April Release"
 +---
 +date: 2017-04-24T17:53:58-04:00
 +categories: ["Releases"]
 +description: "This is the second bug-fix release of the day, fixing a couple of issues related to the new release scripts"
 +link: ""
++title: "Hugo 0.20.4"
 +draft: false
 +author: bep
 +---
 +
 +This is the second bug-fix release of the day, fixing a couple of issues related to the new release scripts.
 +
 +Hugo now has:
 +
 +* 16626&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 457&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 156&#43; [themes](http://themes.gohugo.io/)
 +
 +## Fixes
 +
 +* Fix statically linked binaries [275bcf56](https://github.com/gohugoio/hugo/commit/275bcf566c7cb72367d4423cf4810319311ff680) [@munnerz](https://github.com/munnerz) [#3382](https://github.com/gohugoio/hugo/issues/3382) 
 +* Filename change in Hugo 0.20.3 binaries [#3385](https://github.com/gohugoio/hugo/issues/3385)
 +* Fix version calculation [cb3c6b6f](https://github.com/gohugoio/hugo/commit/cb3c6b6f7670f85189a4a3637e7132901d1ed6e9) [@bep](https://github.com/bep) 
index ca7da4cdfb0b50ceabec14858c76b66d81c27f48,0000000000000000000000000000000000000000..dd6863982b5b5f26faf6e2b994cff5d7ca0dd89e
mode 100644,000000..100644
--- /dev/null
@@@ -1,11 -1,0 +1,11 @@@
- title: "April Release"
 +---
 +date: 2017-04-25T17:53:58-04:00
 +categories: ["Releases"]
 +description: ""
 +link: ""
++title: "Hugo 0.20.5"
 +draft: false
 +author: bep
 +---
 +
 +This is a bug-fix release which fixes the version number of `0.20.4` (which wrongly shows up as `0.21-DEV`) ([#3388](https://github.com/gohugoio/hugo/issues/3388)).
index 249ea4bac7a0e5a10b1555eb960282d64d4bb2cc,0000000000000000000000000000000000000000..53e4cd812a48e4952050ded5a7b2b0fbe2152dd8
mode 100644,000000..100644
--- /dev/null
@@@ -1,23 -1,0 +1,23 @@@
- title: "April Release"
 +---
 +date: 2017-04-27T17:53:58-04:00
 +categories: ["Releases"]
 +description: ""
 +link: ""
++title: "Hugo 0.20.6"
 +draft: false
 +author: bep
 +---
 +
 +There have been some [shouting on discuss.gohugo.io](https://discuss.gohugo.io/t/index-md-is-generated-in-subfolder-index-index-html-hugo-0-20/6338/15) about some broken sites after the release of Hugo `0.20`. This release reintroduces the old behaviour, making  `/my-blog-post/index.md` work as expected.
 +
 +Hugo now has:
 +
 +* 16675&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 456&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 156&#43; [themes](http://themes.gohugo.io/)
 +
 +## Fixes
 +
 +* Avoid index.md in /index/index.html [#3396](https://github.com/gohugoio/hugo/issues/3396) 
 +* Make missing GitInfo a WARNING [b30ca4be](https://github.com/gohugoio/hugo/commit/b30ca4bec811dbc17e9fd05925544db2b75e0e49) [@bep](https://github.com/bep) [#3376](https://github.com/gohugoio/hugo/issues/3376) 
 +* Fix some of the fpm fields for deb [3bd1d057](https://github.com/gohugoio/hugo/commit/3bd1d0571d5f2f6bf0dc8f90a8adf2dbfcb2fdfd) [@anthonyfok](https://github.com/anthonyfok) 
index 364306a2a1802cae0989fd3445673048a6a1d03a,0000000000000000000000000000000000000000..5b66758062a092bef503704be3cff52b16efb32c
mode 100644,000000..100644
--- /dev/null
@@@ -1,22 -1,0 +1,22 @@@
- title: "May Release"
 +---
 +date: 2017-05-03T17:53:58-04:00
 +categories: ["Releases"]
 +description: "This just fixes an issue with the release scripts, no change in the binaries"
 +link: ""
++title: "Hugo 0.20.7"
 +draft: false
 +author: bep
 +---
 +
 +This just fixes an issue with the release scripts, no change in the binaries.
 +
 +
 +Hugo now has:
 +
 +* 16782&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 458&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 156&#43; [themes](http://themes.gohugo.io/)
 +
 +## Fix
 +
 +* Push the tag before goreleaser is run [3682bf52](https://github.com/gohugoio/hugo/commit/3682bf527989e86d9da32d76809306cb576383e8) [@bep](https://github.com/bep) [#3405](https://github.com/gohugoio/hugo/issues/3405) 
index dba01970939da9a9108a61570e01241c7da68620,0000000000000000000000000000000000000000..7afd02135fe21636536d2ca2b4909514620b562c
mode 100644,000000..100644
--- /dev/null
@@@ -1,71 -1,0 +1,71 @@@
- title: "April Release"
 +---
 +date: 2017-04-10T13:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.20 introduces the powerful and long sought after feature Custom Output Formats"
 +link: ""
++title: "Hugo 0.20"
 +draft: false
 +author: bep
 +---
 +
 +Hugo `0.20` introduces the powerful and long sought after feature [Custom Output Formats](http://gohugo.io/extras/output-formats/); Hugo isn’t just that “static HTML with an added RSS feed” anymore. _Say hello_ to calendars, e-book formats, Google AMP, and JSON search indexes, to name a few ( [#2828](//github.com/gohugoio/hugo/issues/2828) ).
 +
 +This release represents **over 180 contributions by over 30 contributors** to the main Hugo code base. Since last release Hugo has **gained 1100 stars, 20 new contributors and 5 additional themes.**
 +
 +Hugo now has:
 +
 +*   16300+ stars
 +*   495+ contributors
 +*   156+ themes
 +
 +[@bep](//github.com/bep) still leads the Hugo development with his witty Norwegian humor, and once again contributed a significant amount of additions. Also a big shoutout to [@digitalcraftsman](//github.com/digitalcraftsman) for his relentless work on keeping the documentation and the themes site in pristine condition, and [@moorereason](//github.com/moorereason) and [@bogem](//github.com/bogem) for their ongoing contributions.
 +
 +## Other Highlights
 +
 +[@bogem](//github.com/bogem) has also contributed TOML as an alternative and much simpler format for language/i18n files ([#3200](//github.com/gohugoio/hugo/issues/3200)). A feature you will appreciate when you start to work on larger translations.
 +
 +Also, there have been some important updates in the Emacs Org-mode handling: [@chaseadamsio](//github.com/chaseadamsio) has fixed the newline-handling ( [#3126](//github.com/gohugoio/hugo/issues/3126) ) and [@clockoon](//github.com/clockoon) has added basic footnote support.
 +
 +Worth mentioning is also the ongoing work that [@rdwatters](//github.com/rdwatters) and [@budparr](//github.com/budparr) is doing to re-do the [gohugo.io](https://gohugo.io/) site, including a total restructuring and partial rewrite of the documentation. It is getting close to finished, and it looks fantastic!
 +
 +## Notes
 +
 +*   `RSS` description in the built-in template is changed from full `.Content` to `.Summary`. This is a somewhat breaking change, but is what most people expect from their RSS feeds. If you want full content, please provide your own RSS template.
 +*   The deprecated `.RSSlink` is now removed. Use `.RSSLink`.
 +*   `RSSUri` is deprecated and will be removed in a future Hugo version, replace it with an output format definition.
 +*   The deprecated `.Site.GetParam` is now removed, use `.Site.Param`.
 +*   Hugo does no longer append missing trailing slash to `baseURL` set as a command line parameter, making it consistent with how it behaves from site config. [#3262](//github.com/gohugoio/hugo/issues/3262)
 +
 +## Enhancements
 +
 +*   Hugo `0.20` is built with Go 1.8.1.
 +*   Add `.Site.Params.mainSections` that defaults to the section with the most pages. Plan is to get themes to use this instead of the hardcoded `blog` in `where` clauses. [#3206](//github.com/gohugoio/hugo/issues/3206)
 +*   File extension is now configurable. [#320](//github.com/gohugoio/hugo/issues/320)
 +*   Impove `markdownify` template function performance. [#3292](//github.com/gohugoio/hugo/issues/3292)
 +*   Add taxonomy terms’ pages to `.Data.Pages` [#2826](//github.com/gohugoio/hugo/issues/2826)
 +*   Change `RSS` description from full `.Content` to `.Summary`.
 +*   Ignore “.” dirs in `hugo --cleanDestinationDir` [#3202](//github.com/gohugoio/hugo/issues/3202)
 +*   Allow `jekyll import` to accept both `2006-01-02` and `2006-1-2` date format [#2738](//github.com/gohugoio/hugo/issues/2738)
 +*   Raise the default `rssLimit` [#3145](//github.com/gohugoio/hugo/issues/3145)
 +*   Unify section list vs single template lookup order [#3116](//github.com/gohugoio/hugo/issues/3116)
 +*   Allow `apply` to be used with the built-in Go template funcs `print`, `printf` and `println`. [#3139](//github.com/gohugoio/hugo/issues/3139)
 +
 +## Fixes
 +
 +*   Fix deadlock in `getJSON` [#3211](//github.com/gohugoio/hugo/issues/3211)
 +*   Make sure empty terms pages are created. [#2977](//github.com/gohugoio/hugo/issues/2977)
 +*   Fix base template lookup order for sections [#2995](//github.com/gohugoio/hugo/issues/2995)
 +*   `URL` fixes:
 +    *   Fix pagination URLs with `baseURL` with sub-root and `canonifyUrls=false` [#1252](//github.com/gohugoio/hugo/issues/1252)
 +    *   Fix pagination URL for resources with “.” in name [#2110](//github.com/gohugoio/hugo/issues/2110) [#2374](//github.com/gohugoio/hugo/issues/2374) [#1885](//github.com/gohugoio/hugo/issues/1885)
 +    *   Handle taxonomy names with period [#3169](//github.com/gohugoio/hugo/issues/3169)
 +    *   Handle `uglyURLs` ambiguity in `Permalink` [#3102](//github.com/gohugoio/hugo/issues/3102)
 +    *   Fix `Permalink` for language-roots wrong when `uglyURLs` is `true` [#3179](//github.com/gohugoio/hugo/issues/3179)
 +    *   Fix misc case issues for `URLs` [#1641](//github.com/gohugoio/hugo/issues/1641)
 +    *   Fix for taxonomies URLs when `uglyUrls=true` [#1989](//github.com/gohugoio/hugo/issues/1989)
 +    *   Fix empty `RSSLink` for list pages with content page. [#3131](//github.com/gohugoio/hugo/issues/3131)
 +*   Correctly identify regular pages on the form “my_index_page.md” [#3234](//github.com/gohugoio/hugo/issues/3234)
 +*   `Exit -1` on `ERROR` in global logger [#3239](//github.com/gohugoio/hugo/issues/3239)
 +*   Document hugo `help command` [#2349](//github.com/gohugoio/hugo/issues/2349)
 +*   Fix internal `Hugo` version handling for bug fix releases. [#3025](//github.com/gohugoio/hugo/issues/3025)
 +*   Only return `RSSLink` for pages that actually have a RSS feed. [#1302](//github.com/gohugoio/hugo/issues/1302)
index 4a75affc7207312efad2e68b770425be7d1843c6,0000000000000000000000000000000000000000..ce47643419b8a640021ea9831c123a153ec8e2e9
mode 100644,000000..100644
--- /dev/null
@@@ -1,104 -1,0 +1,104 @@@
- title: "May Release"
 +---
 +date: 2017-05-22T17:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.21 brings full support for shortcodes per Output Format, the last vital piece of that puzzle"
 +link: ""
++title: "Hugo 0.21"
 +draft: false
 +author: bep
 +---
 +
 +Hugo `0.21` brings full support for shortcodes per [Output Format](https://gohugo.io/extras/output-formats/) ([#3220](https://github.com/gohugoio/hugo/issues/3220)), the last vital piece of that puzzle. This is especially useful for `Google AMP` with its many custom media tags.
 +
 +This release represents **126 contributions by 29 contributors** to the main Hugo code base. Since last main release Hugo has **gained 850 stars and 7 additional themes**.
 +
 +Hugo now has:
 +
 +* 17156&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 457&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 163&#43; [themes](http://themes.gohugo.io/)
 +
 +[@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), [@bogem](https://github.com/bogem), and [@munnerz](https://github.com/munnerz) 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.
 +
 +## Other Highlights
 +
 +On a more technical side, [@moorereason](https://github.com/moorereason) and [@bep](https://github.com/bep) have introduced namespaces for Hugo&#39;s many template funcs ([#3042](https://github.com/gohugoio/hugo/issues/3042) ). There are so many now, and adding more into that big pile would be a sure path toward losing control.  Now they are nicely categorised into namespaces with its own tests and examples, with an API that the documentation site can use to make sure it is correct and up-to-date.
 +
 +## Notes
 +
 +* The deprecated `.Extension`, `.Now` and `.TargetPath` will now `ERROR` [544f0a63](https://github.com/gohugoio/hugo/commit/544f0a6394b0e085d355e8217fc5bb3d96c12a98) [@bep](https://github.com/bep) 
 +* The config settings and flags `disable404`, `disableRSS`, `disableSitemap`, `disableRobotsTXT` are now deprecated. Use `disableKinds`. [5794a265](https://github.com/gohugoio/hugo/commit/5794a265b41ffdeebfd8485eecf65cf4088d49d6) [@bep](https://github.com/bep) [#3345](https://github.com/gohugoio/hugo/issues/3345) 
 +
 +## Enhancements
 +
 +### Templates
 +
 +* Log a WARNING on wrong usage of `IsSet` [38661c17](https://github.com/gohugoio/hugo/commit/38661c17bb8c31c9f31ee18f8eba5e3bfddd5574) [@moorereason](https://github.com/moorereason) [#3092](https://github.com/gohugoio/hugo/issues/3092) 
 +* Add support for ellipsed paginator navigator, making paginators with lots of pages more compact  [b6ea492b](https://github.com/gohugoio/hugo/commit/b6ea492b7a6325d04d44eeb00a990a3a0e29e0c0) [@bep](https://github.com/bep) [#3466](https://github.com/gohugoio/hugo/issues/3466) 
 +* Add support for interfaces to `intersect` [f1c29b01](https://github.com/gohugoio/hugo/commit/f1c29b017bbd88e701cd5151dd186e868672ef89) [@moorereason](https://github.com/moorereason) [#1952](https://github.com/gohugoio/hugo/issues/1952) 
 +* Add `NumFmt` function [93b3b138](https://github.com/gohugoio/hugo/commit/93b3b1386714999d716e03b131f77234248f1724) [@moorereason](https://github.com/moorereason) [#1444](https://github.com/gohugoio/hugo/issues/1444) 
 +* Add template function namespaces [#3418](https://github.com/gohugoio/hugo/issues/3418)  [#3042](https://github.com/gohugoio/hugo/issues/3042)  [@moorereason](https://github.com/moorereason)  [@bep](https://github.com/bep) 
 +* Add translation links to the default sitemap template [90d3fbf1](https://github.com/gohugoio/hugo/commit/90d3fbf1da93a279cfe994a226ae82cf5441deab) [@rayjolt](https://github.com/rayjolt) [#2569](https://github.com/gohugoio/hugo/issues/2569) 
 +* Allow text partials in HTML templates and the other way around [1cf29200](https://github.com/gohugoio/hugo/commit/1cf29200b4bb0a9c006155ec76759b7f4b1ad925) [@bep](https://github.com/bep) [#3273](https://github.com/gohugoio/hugo/issues/3273) 
 +
 +### Output
 +
 +* Refactor site rendering with an &#34;output format context&#34;. In this release, this is used for shortcode handling only, but this paves the way for future niceness [1e4d082c](https://github.com/gohugoio/hugo/commit/1e4d082cf5b92fedbc60b1b4f0e9d1ee6ec45e33) [@bep](https://github.com/bep) [#3397](https://github.com/gohugoio/hugo/issues/3397)  [2bcbf104](https://github.com/gohugoio/hugo/commit/2bcbf104006e0ec03be4fd500f2519301d460f8c) [@bep](https://github.com/bep) [#3220](https://github.com/gohugoio/hugo/issues/3220) 
 +
 +
 +### Core
 +
 +* Handle `shortcode` per `Output Format` [af72db80](https://github.com/gohugoio/hugo/commit/af72db806f2c1c0bf1dfe5832275c41eeba89906) [@bep](https://github.com/bep) [#3220](https://github.com/gohugoio/hugo/issues/3220) 
 +* Improve shortcode error message [58d9cbd3](https://github.com/gohugoio/hugo/commit/58d9cbd31bcf7c296a39860fd7e566d10faaff28) [@bep](https://github.com/bep) 
 +* Avoid `index.md` in `/index/index.html` [fea4fd86](https://github.com/gohugoio/hugo/commit/fea4fd86a324bf9679df23f8289887d91b42e919) [@bep](https://github.com/bep) [#3396](https://github.com/gohugoio/hugo/issues/3396) 
 +* Make missing `GitInfo` a `WARNING` [5ad2f176](https://github.com/gohugoio/hugo/commit/5ad2f17693a9860be76ef8089c8728d2b59d6b04) [@bep](https://github.com/bep) [#3376](https://github.com/gohugoio/hugo/issues/3376) 
 +* Prevent decoding `pageParam` in common cases [e98f885b](https://github.com/gohugoio/hugo/commit/e98f885b8af27f5473a89d31d0b1f02e61e8a5ec) [@bogem](https://github.com/bogem) 
 +* Ignore non-source files on partial rebuild [b5b6e81c](https://github.com/gohugoio/hugo/commit/b5b6e81c0269abf9b0f4bc6a127744a25344e5c6) [@xofyarg](https://github.com/xofyarg) [#3325](https://github.com/gohugoio/hugo/issues/3325) 
 +* Log `WARNING` only on unknown `/data` files [ab692e73](https://github.com/gohugoio/hugo/commit/ab692e73dea3ddfe979c88ee236cc394e47e82f1) [@bep](https://github.com/bep) [#3361](https://github.com/gohugoio/hugo/issues/3361) 
 +* Avoid processing the same notify event twice [3b677594](https://github.com/gohugoio/hugo/commit/3b67759495c9268c30e6ba2d8c7e3b75d52d2960) [@bep](https://github.com/bep) 
 +* Only show `rssURI` deprecation `WARNING` if it is actually set [cfd3af8e](https://github.com/gohugoio/hugo/commit/cfd3af8e691119461effa4385251b9d3818e2291) [@bep](https://github.com/bep) [#3319](https://github.com/gohugoio/hugo/issues/3319) 
 +
 +### Docs
 +
 +* Add documentation on slug translation [635b3bb4](https://github.com/gohugoio/hugo/commit/635b3bb4eb873978c7d52e6c0cb85da0c4d25299) [@xavib](https://github.com/xavib) 
 +* Replace `cdn.mathjax.org` with `cdnjs.cloudflare.com` [4b637ac0](https://github.com/gohugoio/hugo/commit/4b637ac041d17b22187f5ccd0f65461f0065aaa9) [@takuti](https://github.com/takuti) 
 +* Add notes about some output format behaviour [162d3a58](https://github.com/gohugoio/hugo/commit/162d3a586d36cabf6376a76b096fd8b6414487ae) [@jpatters](https://github.com/jpatters) 
 +* Add `txtpen` as alternative commenting service [7cdc244a](https://github.com/gohugoio/hugo/commit/7cdc244a72de4c08edc0008e37aec83d945dccdf) [@rickyhan](https://github.com/rickyhan) 
 +
 +### Other
 +
 +* Embed `Page` in `WeightedPage` [ebf677a5](https://github.com/gohugoio/hugo/commit/ebf677a58360126d8b9a1e98d086aa4279f53181) [@bep](https://github.com/bep) [#3435](https://github.com/gohugoio/hugo/issues/3435) 
 +* Improve the detection of untranslated strings [a40d1f6e](https://github.com/gohugoio/hugo/commit/a40d1f6ed2aedddc99725658993258cd557640ed) [@bogem](https://github.com/bogem) [#2607](https://github.com/gohugoio/hugo/issues/2607) 
 +* Make first letter of the Hugo commands flags&#39; usage lowercase [f0f69d03](https://github.com/gohugoio/hugo/commit/f0f69d03c551acb8ac2eeedaad579cf0b596f9ef) [@bogem](https://github.com/bogem) 
 +* Import `Octopress` image tag in `Jekyll importer` [5f3ad1c3](https://github.com/gohugoio/hugo/commit/5f3ad1c31985450fab8d6772e9cbfcb57cf5cc53) [@buynov](https://github.com/buynov) 
 +
 +## Fixes
 +
 +### Templates
 +
 +*  Do not lower case template names [6d2ea0f7](https://github.com/gohugoio/hugo/commit/6d2ea0f7d7e8a54b8edfc36e52ff74266c30dc27) [@bep](https://github.com/bep) [#3333](https://github.com/gohugoio/hugo/issues/3333) 
 +
 +### Output
 +
 +* Fix output format mixup in example [10287263](https://github.com/gohugoio/hugo/commit/10287263f529181d3169668b044cb84e2e3b049a) [@bep](https://github.com/bep) [#3481](https://github.com/gohugoio/hugo/issues/3481) 
 +* Fix base theme vs project base template logic [077005e5](https://github.com/gohugoio/hugo/commit/077005e514b1ed50d84ceb90c7c72f184cb04521) [@bep](https://github.com/bep) [#3323](https://github.com/gohugoio/hugo/issues/3323) 
 +
 +### Core
 +* Render `404` in default language only [154e18dd](https://github.com/gohugoio/hugo/commit/154e18ddb9ad205055d5bd4827c87f3f0daf499f) [@mitchchn](https://github.com/mitchchn) [#3075](https://github.com/gohugoio/hugo/issues/3075) 
 +* Fix `RSSLink` vs `RSS` `Output Format` [e682fcc6](https://github.com/gohugoio/hugo/commit/e682fcc62233b47cf5bdcaf598ac0657ef089471) [@bep](https://github.com/bep) [#3450](https://github.com/gohugoio/hugo/issues/3450) 
 +* Add default config for `ignoreFiles`, making that option work when running in server mode [42f4ce15](https://github.com/gohugoio/hugo/commit/42f4ce15a9d68053da36f9efcf7a7d975cc59559) [@chaseadamsio](https://github.com/chaseadamsio) 
 +* Fix output formats override when no outputs definition given [6e2f2dd8](https://github.com/gohugoio/hugo/commit/6e2f2dd8d3ca61c92a2ee8824fbf05cadef08425) [@bep](https://github.com/bep) [#3447](https://github.com/gohugoio/hugo/issues/3447) 
 +* Fix handling of zero-length files [0e87b18b](https://github.com/gohugoio/hugo/commit/0e87b18b66d2c8ba9e2abc429630cb03f5b093d6) [@bep](https://github.com/bep) [#3355](https://github.com/gohugoio/hugo/issues/3355) 
 +* Must recreate `Paginator` on live-reload [45c74526](https://github.com/gohugoio/hugo/commit/45c74526686f6a2afa02bcee767d837d6b9dd028) [@bep](https://github.com/bep) [#3315](https://github.com/gohugoio/hugo/issues/3315) 
 +
 +### Docs
 +
 +* Fix incorrect path in `templates/list` [27e88154](https://github.com/gohugoio/hugo/commit/27e88154af2dd9af6d0523d6e67b612e6336f91c) [@MunifTanjim](https://github.com/MunifTanjim) 
 +* Fixed incorrect specification of directory structure [a28fbca6](https://github.com/gohugoio/hugo/commit/a28fbca6dcfa80b6541f5ef6c8c12cd1804ae9ed) [@TejasQ](https://github.com/TejasQ) 
 +* Fix `bash` command in `tutorials/github-pages-blog` [c9976155](https://github.com/gohugoio/hugo/commit/c99761555c014e4d041438d5d7e53a6cbaee4492) [@hansott](https://github.com/hansott) 
 +* Fix `.Data.Pages` range in example [b5e32eb6](https://github.com/gohugoio/hugo/commit/b5e32eb60993b4656918af2c959ae217a68c461e) [@hxlnt](https://github.com/hxlnt) 
 +
 +### Other
 +
 +* Fix data race in live-reload close, avoiding some rare panics [355736ec](https://github.com/gohugoio/hugo/commit/355736ec357c81dfb2eb6851ee019d407090c5ec) [@bep](https://github.com/bep) [#2625](https://github.com/gohugoio/hugo/issues/2625) 
 +* Skip `.git` directories in file scan [94b5be67](https://github.com/gohugoio/hugo/commit/94b5be67fc73b87d114d94a7bb1a33ab997f30f1) [@bogem](https://github.com/bogem) [#3468](https://github.com/gohugoio/hugo/issues/3468) 
index f3157dca289aa3d457341ff0037237920182cbf8,0000000000000000000000000000000000000000..1efbba6500c00c2784be04162906df5f89c714db
mode 100644,000000..100644
--- /dev/null
@@@ -1,36 -1,0 +1,36 @@@
- title: "June Release"
 +---
 +date: 2017-06-13T17:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.22.1 fixes a couple of issues reported after the 0.22 release"
 +link: ""
- ```toml
++title: "Hugo 0.22.1"
 +draft: false
 +author: bep
 +---
 +
 +Hugo `0.22.1` fixes a couple of issues reported after the [0.22 release](https://github.com/gohugoio/hugo/releases/tag/v0.22) Monday. Most importantly a fix for detecting regular subfolders below the root-sections.
 +
 +Also, we forgot to adapt the `permalink settings` with support for nested sections, which made that feature less useful than it could be.
 +
 +With this release you can configure **permalinks with sections** like this:
 +
 +**First level only:**
 +
- ```toml
++```
 +[permalinks]
 +blog = ":section/:title"
 +```
 +
 +**Nested (all levels):**
 +
++```
 +[permalinks]
 +blog = ":sections/:title"
 +```
 +## Fixes
 +
 +* Fix section logic for root folders with subfolders [a30023f5](https://github.com/gohugoio/hugo/commit/a30023f5cbafd06034807255181a5b7b17f3c25f) [@bep](https://github.com/bep) [#3586](https://github.com/gohugoio/hugo/issues/3586) 
 +* Support sub-sections in permalink settings [1f26420d](https://github.com/gohugoio/hugo/commit/1f26420d392a5ab4c7b7fe1911c0268b45d01ab8) [@bep](https://github.com/bep) [#3580](https://github.com/gohugoio/hugo/issues/3580) 
 +* Adjust rlimit to 64000 [ff54b6bd](https://github.com/gohugoio/hugo/commit/ff54b6bddcefab45339d8dc2b13776b92bdc04b9) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582) 
 +* Make error on setting rlimit a warning only [629e1439](https://github.com/gohugoio/hugo/commit/629e1439e819a7118ae483381d4634f16d3474dd) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582) 
 +* Revert: Remove the rlimit tweaking on macOS [26aa06a3](https://github.com/gohugoio/hugo/commit/26aa06a3db57ab7134a900d641fa2976f7971520) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582)
index c85e2e8acfdf03741e1d3491d245d838463f5a6b,0000000000000000000000000000000000000000..d3af64c35762c38cd0d4a8dc1e7fffc200f54fb3
mode 100644,000000..100644
--- /dev/null
@@@ -1,88 -1,0 +1,88 @@@
- title: "June Release"
 +---
 +date: 2017-06-12T17:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.22 brings nested sections, by popular demand and a long sought after feature"
 +link: ""
- ```go
++title: "Hugo 0.22"
 +draft: false
 +author: bep
 +---
 +
 +
 +Hugo `0.22` brings **nested sections**, by popular demand and a long sought after feature ([#465](https://github.com/gohugoio/hugo/issues/465)).  We are still low on documentation for this great feature, but [@bep](https://github.com/bep)  has been kind enough to accompany his implementation with a [demo site](http://hugotest.bep.is/).
 +
 +This release represents **58 contributions by 10 contributors** to the main Hugo code base. Since last release Hugo has **gained 420 stars and 2 additional themes.**
 +
 +[@bep](https://github.com/bep) still leads the Hugo development with his witty Norwegian humor, and once again contributed a significant amount of additions. But also a big shoutout to [@bogem](https://github.com/bogem), [@moorereason](https://github.com/moorereason), and [@onedrawingperday](https://github.com/onedrawingperday) for their ongoing contributions. And as always big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the documentation and the themes site in pristine condition.
 +
 +Hugo now has:
 +
 +* 17576&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 455&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 165&#43; [themes](http://themes.gohugo.io/)
 +
 +## Other Highlights
 +
 +`.Site.GetPage` can now also be used to get regular pages ([#2844](https://github.com/gohugoio/hugo/issues/2844)):
 +
++```
 +{{ (.Site.GetPage "page" "blog" "mypost.md" ).Title }}
 +```
 +
 +Also, considerable work has been put into writing automated benchmark tests for the site builds, and we&#39;re happy to report that although this release comes with fundamental structural changes, this version is -- in general -- even faster than the previous. It’s quite a challenge to consistently add significant new functionality and simultaneously maintain the stellar performance Hugo is famous for. 
 +
 +
 + 
 +## Notes
 +
 +`.Site.Sections` is replaced. We have reworked how sections work in Hugo, they can now be nested and are no longer taxonomies. If you use the old collection, you should get detailed upgrade instructions in the log when you run `hugo`. For more information, see this [demo site](http://hugotest.bep.is/). 
 +
 +## Enhancements
 +
 +### Templates
 +
 +* Add `uint` support to `In` [b82cd82f](https://github.com/gohugoio/hugo/commit/b82cd82f1198a371ed94bda7faafe22813f4cb29) [@moorereason](https://github.com/moorereason) 
 +* Support interfaces in `union` [204c3a9e](https://github.com/gohugoio/hugo/commit/204c3a9e32fcf6617ede978e35d3e2e89a5b491c) [@moorereason](https://github.com/moorereason) [#3411](https://github.com/gohugoio/hugo/issues/3411) 
 +* Add `uniq` function [e28d9aa4](https://github.com/gohugoio/hugo/commit/e28d9aa42c3429d22fe254e69e4605aaf1e684f3) [@adiabatic](https://github.com/adiabatic) 
 +* Handle `template.HTML` and friends in `ToInt` [4113693a](https://github.com/gohugoio/hugo/commit/4113693ac1b275f3a40aa5c248269340ef9b57f6) [@moorereason](https://github.com/moorereason) [#3308](https://github.com/gohugoio/hugo/issues/3308) 
 +
 +
 +### Core
 +
 +* Make the `RSS feed` use the date for the node it represents [f1da5a15](https://github.com/gohugoio/hugo/commit/f1da5a15a37666ee59350d6600a8c14c1383f5bc) [@bep](https://github.com/bep) [#2708](https://github.com/gohugoio/hugo/issues/2708) 
 +* Enable `nested sections` [b3968939](https://github.com/gohugoio/hugo/commit/b39689393ccb8434d9a57658a64b77568c718e99) [@bep](https://github.com/bep) [#465](https://github.com/gohugoio/hugo/issues/465) 
 +* Add test for &#34;no 404&#34; in `sitemap` [8aaec644](https://github.com/gohugoio/hugo/commit/8aaec644a90d09bd7f079d35d382f76bb4ed35db) [@bep](https://github.com/bep) [#3563](https://github.com/gohugoio/hugo/issues/3563) 
 +* Support regular pages in `.Site.GetPage` [e0c2e798](https://github.com/gohugoio/hugo/commit/e0c2e798201f75ae6e9a81a7442355288c2d141b) [@bep](https://github.com/bep) [#2844](https://github.com/gohugoio/hugo/issues/2844) 
 +[#3082](https://github.com/gohugoio/hugo/issues/3082) 
 +
 +### Performance
 +* Add site building benchmarks [8930e259](https://github.com/gohugoio/hugo/commit/8930e259d78cba4041b550cc51a7f40bc91d7c20) [@bep](https://github.com/bep) [#3535](https://github.com/gohugoio/hugo/issues/3535) 
 +* Add a cache to `GetPage` which makes it much faster [50d11138](https://github.com/gohugoio/hugo/commit/50d11138f3e18b545c15fadf52f7b0b744bf3e7c) [@bep](https://github.com/bep) 
 +* Speed up `GetPage` [fbb78b89](https://github.com/gohugoio/hugo/commit/fbb78b89df8ccef8f0ab26af00aa45d35c1ee2cf) [@bep](https://github.com/bep) [#3503](https://github.com/gohugoio/hugo/issues/3503) 
 +* Add BenchmarkFrontmatterTags [3d9c4f51](https://github.com/gohugoio/hugo/commit/3d9c4f513b0443648d7e88995e351df1739646d2) [@bep](https://github.com/bep) [#3464](https://github.com/gohugoio/hugo/issues/3464) 
 +* Add `benchSite.sh` to make it easy to run Hugo performance benchmarks [d74452cf](https://github.com/gohugoio/hugo/commit/d74452cfe8f69a85ec83e05481e16bebf199a5cb) [@bep](https://github.com/bep) 
 +* Cache language config [4aff2b6e](https://github.com/gohugoio/hugo/commit/4aff2b6e7409a308f30cff1825fec02991e0d56a) [@bep](https://github.com/bep) 
 +* Temporarily revert to BurntSushi for `TOML` front matter handling; it is currently much faster [0907a5c1](https://github.com/gohugoio/hugo/commit/0907a5c1c293755e6bf297246f07888448d81f8b) [@bep](https://github.com/bep) [#3541](https://github.com/gohugoio/hugo/issues/3541) [#3464](https://github.com/gohugoio/hugo/issues/3464) 
 +* Add a simple partitioned lazy cache [87203139](https://github.com/gohugoio/hugo/commit/87203139c38e0b992c96d7b8a23c7730649c68e5) [@bep](https://github.com/bep) 
 +
 +### Other
 +
 +* Add `noindex` tag to HTML generated by Hugo aliases [d5ab7f08](https://github.com/gohugoio/hugo/commit/d5ab7f087d967b30e7de7d789e6ad3091b42f1f7) [@onedrawingperday](https://github.com/onedrawingperday) 
 +* Update Go versions [bde807bd](https://github.com/gohugoio/hugo/commit/bde807bd1e560fb4cc765c0fc22132db7f8a0801) [@bep](https://github.com/bep) 
 +* Remove the `rlimit` tweaking on `macOS` [bcd32f10](https://github.com/gohugoio/hugo/commit/bcd32f1086c8c604fb22a7496924e41cc46b1605) [@bep](https://github.com/bep) [#3512](https://github.com/gohugoio/hugo/issues/3512) 
 +
 +### Docs
 +* Rewrite “Archetypes” article [@davidturnbull](https://github.com/davidturnbull) [#3543](https://github.com/gohugoio/hugo/pull/3543/) 
 +* Remove Unmaintaned Frontends from Tools. [f41f7282](https://github.com/gohugoio/hugo/commit/f41f72822251c9a31031fd5b3dda585c57c8b028) [@onedrawingperday](https://github.com/onedrawingperday) 
 +
 +## Fixes
 +
 +### Core
 +* Improve `live-reload` on directory structure changes making removal of directories or pasting new content directories into  `/content` just work [fe901b81](https://github.com/gohugoio/hugo/commit/fe901b81191860b60e6fcb29f8ebf87baef2ee79) [@bep](https://github.com/bep) [#3570](https://github.com/gohugoio/hugo/issues/3570) 
 +* Respect `disableKinds=[&#34;sitemap&#34;]` [69d92dc4](https://github.com/gohugoio/hugo/commit/69d92dc49cb8ab9276ab013d427ba2d9aaf9135d) [@bep](https://github.com/bep) [#3544](https://github.com/gohugoio/hugo/issues/3544) 
 +* Fix `disablePathToLower` regression [5be04486](https://github.com/gohugoio/hugo/commit/5be0448635fdf5fe6b1ee673e869f2b9baf1a5c6) [@bep](https://github.com/bep) [#3374](https://github.com/gohugoio/hugo/issues/3374) 
 +* Fix `ref`/`relref` issue with duplicate base filenames [612f6e3a](https://github.com/gohugoio/hugo/commit/612f6e3afe0510c31f70f3621f3dc8ba609dade4) [@bep](https://github.com/bep) [#2507](https://github.com/gohugoio/hugo/issues/2507) 
 +
 +### Docs
 +
 +* Fix parameter name in `YouTube` shortcode section [37e37877](https://github.com/gohugoio/hugo/commit/37e378773fbc127863f2b7a389d5ce3a14674c73) [@zivbk1](https://github.com/zivbk1) 
index 49235f7331534aab8446db39f66b6b8be7dea7d7,0000000000000000000000000000000000000000..0e14bceed4b25fbc41717b8ef4753e1dd54d933a
mode 100644,000000..100644
--- /dev/null
@@@ -1,45 -1,0 +1,45 @@@
- title: "June Release"
 +---
 +date: 2017-06-16T17:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.23 is mainly a release that handles all the small changes needed to get Hugo moved to a GitHub organisation"
 +link: ""
++title: "Hugo 0.23"
 +draft: false
 +author: bep
 +---
 +
 +Hugo `0.23` is mainly a release that handles all the small changes needed to get Hugo moved to a GitHub organisation: [gohugoio](https://github.com/gohugoio), but it also contains a couple of important fixes that makes this an update worth-while for all.
 +
 +Hugo now has:
 +
 +* 17739&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 494&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 165&#43; [themes](http://themes.gohugo.io/)
 +
 +## Fixes
 +
 +* Fix handling of duplicate footnotes [a9e551a1](https://github.com/gohugoio/hugo/commit/a9e551a100e60a603210ee083103dd73369d6a98) [@bep](https://github.com/bep) [#1912](https://github.com/gohugoio/hugo/issues/1912) 
 +*  Add support for spaces in project folder for `GitInfo` #3533 #3552
 +
 +## GitHub organisation related changes
 +
 +* Update layout references to gohugoio/hugo [66d4850b](https://github.com/gohugoio/hugo/commit/66d4850b89db293dc58e828de784037f06c6c8dc) [@bep](https://github.com/bep) 
 +* Update content references to gohugoio/hugo [715ff1f8](https://github.com/gohugoio/hugo/commit/715ff1f87406edf27738c8c0f52fe185fa974ee8) [@bep](https://github.com/bep) 
 +* Add note on updates for rpm-based distros [52a0cea6](https://github.com/gohugoio/hugo/commit/52a0cea65de7b75ae1662abe3dec36fca3604617) [@daftaupe](https://github.com/daftaupe) 
 +* Update logo link in README [ccb8300d](https://github.com/gohugoio/hugo/commit/ccb8300d380636d75a39f4133284eb0109e836c3) [@bep](https://github.com/bep) 
 +* Remove docs building from CI builds [214dbdfb](https://github.com/gohugoio/hugo/commit/214dbdfb6f016d21415bc1ed511a37a084238878) [@bep](https://github.com/bep) 
 +* Adjust docs path [729be807](https://github.com/gohugoio/hugo/commit/729be8074bddb58c9111f32c55cc769e49cd0d5a) [@bep](https://github.com/bep) 
 +* Add docs as submodule [6cee0dfe](https://github.com/gohugoio/hugo/commit/6cee0dfe53899d433afc3c173a87d56265904cb0) [@bep](https://github.com/bep) 
 +* Update Gitter link in README [fbb25014](https://github.com/gohugoio/hugo/commit/fbb25014e1306ce7127d53e5fc4fc49867790336) [@bep](https://github.com/bep) 
 +* Change Windows build badge link, take #3 [86543d6a](https://github.com/gohugoio/hugo/commit/86543d6a50251b40540ebd0b851d45eb99d017c7) [@bep](https://github.com/bep) 
 +* Update Windows build link [e6ae32a0](https://github.com/gohugoio/hugo/commit/e6ae32a0ba75b9894418227e87391defbb1b3b49) [@bep](https://github.com/bep) 
 +* Update links in CONTRIBUTING.md due to the org transition [95386544](https://github.com/gohugoio/hugo/commit/95386544e858949a2baa414f395f30aaf66a6257) [@digitalcraftsman](https://github.com/digitalcraftsman) 
 +* Update source path in Dockerfile due to the org transition [7b99fb9f](https://github.com/gohugoio/hugo/commit/7b99fb9f1ca8381457afe9d8e953a388b8ada182) [@digitalcraftsman](https://github.com/digitalcraftsman) 
 +* Update clone folder in appveyor.yml due to the org transition [d531d17b](https://github.com/gohugoio/hugo/commit/d531d17b3be0b14faf4934611e01ac3289e37835) [@digitalcraftsman](https://github.com/digitalcraftsman) 
 +* Update import path in snapcraft.yaml due to the org transition [9266bf9d](https://github.com/gohugoio/hugo/commit/9266bf9d4c24592b875a7f6b92f761b4cea40879) [@digitalcraftsman](https://github.com/digitalcraftsman) 
 +* Run gofmt to get imports in line vs gohugoio/hugo [873a6f18](https://github.com/gohugoio/hugo/commit/873a6f18851bcda79d562ff6c02e1109e8e31a88) [@bep](https://github.com/bep) 
 +* Update Makefile vs gohugoio/hugo [f503d76a](https://github.com/gohugoio/hugo/commit/f503d76a3b2719bbb65ab9df5595d0dbc871fae9) [@bep](https://github.com/bep) 
 +* Update README to point to gohugoio/hugo [93643860](https://github.com/gohugoio/hugo/commit/93643860c9db10c6c32176b17cc83f1c317279bd) [@bep](https://github.com/bep) 
 +* Update examples to point to gohugoio/hugo [db46bcf8](https://github.com/gohugoio/hugo/commit/db46bcf82d060656d4bc731550e63ec9cf8576f2) [@bep](https://github.com/bep) 
 +* Update textual references in Go source to point to gohugoio/hugo [c17ad675](https://github.com/gohugoio/hugo/commit/c17ad675e8fcdb2db40fc50816b8f016bc14294c) [@bep](https://github.com/bep) 
 +* Update import paths to gohugoio/hugo [d8717cd4](https://github.com/gohugoio/hugo/commit/d8717cd4c74e80ea8e20adead9321412a2d76022) [@bep](https://github.com/bep) 
index 26fdcf45f9e7028f30bd0fcf652d0507ef1d499b,0000000000000000000000000000000000000000..559e1e2523d78124aa1d73e1c3cc5bc0c7d52731
mode 100644,000000..100644
--- /dev/null
@@@ -1,21 -1,0 +1,21 @@@
- title: "June Release"
 +---
 +date: 2017-06-24T17:53:58-04:00
 +categories: ["Releases"]
 +description: "This release fixes some important archetype-related regressions from Hugo 0.24"
 +link: ""
++title: "Hugo 0.24.1"
 +draft: false
 +author: bep
 +---
 +
 +This release fixes some important **archetype-related regressions** from the recent Hugo 0.24-release.
 +
 +## Fixes
 +
 +* Fix archetype regression when no archetype file [4294dd8d](https://github.com/gohugoio/hugo/commit/4294dd8d9d22bd8107b7904d5389967da1f83f27) [@bep](https://github.com/bep) [#3626](https://github.com/gohugoio/hugo/issues/3626) 
 +* Preserve shortcodes in archetype templates [b63e4ee1](https://github.com/gohugoio/hugo/commit/b63e4ee198c875b73a6a9af6bb809589785ed589) [@bep](https://github.com/bep) [#3623](https://github.com/gohugoio/hugo/issues/3623) 
 +* Fix handling of timezones with positive UTC offset (e.g., +0800) in TOML [0744f81e](https://github.com/gohugoio/hugo/commit/0744f81ec00bb8888f59d6c8b5f57096e07e70b1) [@bep](https://github.com/bep) [#3628](https://github.com/gohugoio/hugo/issues/3628) 
 +
 +## Enhancements
 +
 +* Create default archetype on new site [bfa336d9](https://github.com/gohugoio/hugo/commit/bfa336d96173377b9bbe2298dbd101f6a718c174) [@bep](https://github.com/bep) [#3626](https://github.com/gohugoio/hugo/issues/3626) 
index 1357a213d7b8c69879b34974360f9dbaddf34064,0000000000000000000000000000000000000000..2d598b79bfdfb422a9fd3b81e9156d67207f7b41
mode 100644,000000..100644
--- /dev/null
@@@ -1,73 -1,0 +1,73 @@@
- title: "June Release"
 +---
 +date: 2017-06-17T17:53:58-04:00
 +categories: ["Releases"]
 +description: "The Revival of the Archetypes!"
 +link: ""
- ```markdown
++title: "Hugo 0.24"
 +draft: false
 +author: bep
 +---
 +
 +> "A feature that could be the name of the next Indiana Jones movie deserves its own release," says [@bep](https://github.com/bep).
 +
 +Hugo now handles the **archetype files as Go templates**. This means that the issues with sorting and lost comments are long gone. This also means that you will have to supply all values, including title and date. But this also opens up a lot of new windows.
 +
 +A fictional example for the section `newsletter` and the archetype file `archetypes/newsletter.md`:
 +
- ```bash
++```
 +---
 +title: "{{ replace .TranslationBaseName "-" " " | title }}"
 +date: {{ .Date }}
 +draft: true
 +---
 +
 +**Insert Lead paragraph here.**
 +
 +<!--more-->
 +
 +## New Cool Posts
 +
 +{{ range first 10 ( where .Site.RegularPages "Type" "cool" ) }}
 +* {{ .Title }}
 +{{ end }}
 +```
 +
 +And then create a new post with:
 +
++```
 +hugo new newsletter/the-latest-cool.stuff.md
 +```
 +
 +**Note:** the site will only be built if the `.Site` is in use in the archetype file, and this can be time consuming for big sites.
 +
 +**Hot Tip:** If you set the `newContentEditor` configuration variable to an editor on your `PATH`, the newly created article will be opened.
 +
 +The above _newsletter type archetype_ illustrates the possibilities: The full Hugo `.Site` and all of Hugo&#39;s template funcs can be used in the archetype file.
 +
 +**Also, Hugo now supports archetype files for all content formats, not just markdown.**
 +
 +Hugo now has:
 +
 +* 17839&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 493&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 166&#43; [themes](http://themes.gohugo.io/)
 +
 +## Notes
 +
 +* Archetype files now need to be complete, including `title` and `date`.
 +* The `-f` (format) flag in `hugo new` is removed: Now use the archetype files as is.
 +
 +## Enhancements
 +
 +* Support extension-less media types. The motivation behind this change is to support Netlify&#39;s `_redirects` files, so we can generate server-side redirects for the Hugo docs site. See [this commit](https://github.com/gohugoio/hugoDocs/commit/c1ab9894e8292e0a74c43bbca2263b1fb3840f9e) to see how we configured that. [0f40e1fa](https://github.com/gohugoio/hugo/commit/0f40e1fadfca2276f65adefa6d7d5d63aef9160a) [@bep](https://github.com/bep) [#3614](https://github.com/gohugoio/hugo/issues/3614) 
 +* Add `disableAliases` [516e6c6d](https://github.com/gohugoio/hugo/commit/516e6c6dc5733cdaf985317d58eedbc6ec0ef2f7) [@bep](https://github.com/bep) [#3613](https://github.com/gohugoio/hugo/issues/3613) 
 +* Support non-md files as archetype files [19f2e729](https://github.com/gohugoio/hugo/commit/19f2e729135af700c5d4aa06e7b3540e6d4847fd) [@bep](https://github.com/bep) [#3597](https://github.com/gohugoio/hugo/issues/3597) [#3618](https://github.com/gohugoio/hugo/issues/3618) 
 +* Identify extension-less text types as text [c43b512b](https://github.com/gohugoio/hugo/commit/c43b512b4700f76ac77f12d632bb030c3a241393) [@bep](https://github.com/bep) [#3614](https://github.com/gohugoio/hugo/issues/3614) 
 +* Add `.Site` to the archetype templates [662e12f3](https://github.com/gohugoio/hugo/commit/662e12f348a638a6fcc92a416ee7f7c2a7ef8792) [@bep](https://github.com/bep) [#1629](https://github.com/gohugoio/hugo/issues/1629) 
 +* Use archetype template as-is as a Go template [422057f6](https://github.com/gohugoio/hugo/commit/422057f60709696bbbd1c38c9ead2bf114d47e31) [@bep](https://github.com/bep) [#452](https://github.com/gohugoio/hugo/issues/452) [#1629](https://github.com/gohugoio/hugo/issues/1629) 
 +* Update links to new discuss URL [4aa12390](https://github.com/gohugoio/hugo/commit/4aa1239070bb9d4324d3582f3e809b702a59d3ac) [@bep](https://github.com/bep) 
 +
 +## Fixes
 +
 +* Fix error handling for `JSON` front matter [fb53987a](https://github.com/gohugoio/hugo/commit/fb53987a4ff2acb9da8dec6ec7b11924d37352ce) [@bep](https://github.com/bep) [#3610](https://github.com/gohugoio/hugo/issues/3610) 
 +* Fix handling of quoted brackets in `JSON` front matter [3183b9a2](https://github.com/gohugoio/hugo/commit/3183b9a29d8adac962fbc73f79b04542f4c4c55d) [@bep](https://github.com/bep) [#3511](https://github.com/gohugoio/hugo/issues/3511) 
index f2c6c90979697ca322f5a403c4b19421e1fa6edd,0000000000000000000000000000000000000000..40e2124a36c72e32c13d1b5f16eb06a9f68d5723
mode 100644,000000..100644
--- /dev/null
@@@ -1,24 -1,0 +1,24 @@@
- title: "July Release"
 +---
 +date: 2017-07-10T17:53:58-04:00
 +categories: ["Releases"]
 +description: "This is a bug-fix release with a couple of important fixes"
 +link: ""
++title: "Hugo 0.25.1"
 +draft: false
 +author: bep
 +---
 +
 +This is a bug-fix release with a couple of important fixes.
 +
 +Hugo now has:
 +
 +* 18277+ [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 456+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 170+ [themes](http://themes.gohugo.io/)
 +
 +## Fixes
 +
 +* Fix union when the first slice is empty [dbbc5c48](https://github.com/gohugoio/hugo/commit/dbbc5c4810a04ac06fad7500d88cf5c3bfe0c7fd) [@bep](https://github.com/bep) [#3686](https://github.com/gohugoio/hugo/issues/3686)
 +* Navigate to changed on CREATE When working with content from IntelliJ IDE, like WebStorm, every file save is followed by two events: "RENAME" and then "CREATE". [7bcc1ce6](https://github.com/gohugoio/hugo/commit/7bcc1ce659710f2220b400ce3b76e50d2e48b241) [@miltador](https://github.com/miltador) 
 +* Final (!) fix for issue with escaped JSON front matter [7f82b41a](https://github.com/gohugoio/hugo/commit/7f82b41a24af0fd04d28fbfebf9254766a3c6e6f) [@bep](https://github.com/bep) [#3682](https://github.com/gohugoio/hugo/issues/3682)
 +* Fix issue with escaped JSON front matter [84db6c74](https://github.com/gohugoio/hugo/commit/84db6c74a084d2b52117b999d4ec343cd3389a68) [@bep](https://github.com/bep) [#3682](https://github.com/gohugoio/hugo/issues/3682)
index 86d445f69491caa500b782652ca2a8ad78849c80,0000000000000000000000000000000000000000..fa0f0a544415a14a6ea6a6d61146fb69d48a100f
mode 100644,000000..100644
--- /dev/null
@@@ -1,77 -1,0 +1,77 @@@
- title: "July Release"
 +---
 +date: 2017-07-07T17:53:58-04:00
 +categories: ["Releases"]
 +description: "Hugo 0.25 automatically opens the page you&#39;re working on in the browser"
 +link: ""
- ```go
++title: "Hugo 0.25"
 +draft: false
 +author: bep
 +---
 +
 +Hugo `0.25` is the **Kinder Surprise**: It automatically opens the page you&#39;re working on in the browser, it adds full `AND` and `OR` support in page queries, and you can now have templates per language.
 +
 +![Hugo Open on Save](https://cdn-standard5.discourse.org/uploads/gohugo/optimized/2X/6/622088d4a8eacaf62bbbaa27dab19d789e10fe09_1_690x345.gif "Hugo Open on Save")
 +
 +If you start with `hugo server --navigateToChanged`, Hugo will navigate to the relevant page on save (see animated GIF). This is extremely useful for site-wide edits. Another very useful feature in this version is the added support for `AND` (`intersect`)  and `OR` (`union`)  filters when combined with `where`.
 +
 +Example:
 +
++```
 +{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
 +{{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }}
 +{{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}
 +```
 +
 +The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page params.
 +
 +This release represents **36 contributions by 12 contributors** to the main Hugo code base. [@bep](https://github.com/bep) still leads the Hugo development with his witty Norwegian humor, and once again contributed a significant amount of additions. But also a big shoutout to [@yihui](https://github.com/yihui), [@anthonyfok](https://github.com/anthonyfok), and [@kropp](https://github.com/kropp) 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.
 +
 +Hugo now has:
 +
 +* 18209&#43; [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 455&#43; [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 168&#43; [themes](http://themes.gohugo.io/)
 +
 +## Enhancements
 +
 +### Templates
 +
 +* Add `Pages` support to `intersect` (`AND`) and `union`(`OR`). This makes the `where` template func even more powerful. [ccdd08d5](https://github.com/gohugoio/hugo/commit/ccdd08d57ab64441e93d6861ae126b5faacdb92f) [@bep](https://github.com/bep) [#3174](https://github.com/gohugoio/hugo/issues/3174)
 +* Add `math.Log` function. This is very handy for creating tag clouds. [34c56677](https://github.com/gohugoio/hugo/commit/34c566773a1364077e1397daece85b22948dc721) [@artem-sidorenko](https://github.com/artem-sidorenko) 
 +* Add `WebP` images support [8431c8d3](https://github.com/gohugoio/hugo/commit/8431c8d39d878c18c6b5463d9091a953608df10b) [@bep](https://github.com/bep) [#3529](https://github.com/gohugoio/hugo/issues/3529)
 +* Only show post&#39;s own keywords in schema.org [da72805a](https://github.com/gohugoio/hugo/commit/da72805a4304a57362e8e79a01cc145767b027c5) [@brunoamaral](https://github.com/brunoamaral) [#2635](https://github.com/gohugoio/hugo/issues/2635)[#2646](https://github.com/gohugoio/hugo/issues/2646)
 +* Simplify the `Disqus` template a little bit (#3655) [eccb0647](https://github.com/gohugoio/hugo/commit/eccb0647821e9db20ba9800da1b4861807cc5205) [@yihui](https://github.com/yihui) 
 +* Improve the built-in Disqus template (#3639) [2e1e4934](https://github.com/gohugoio/hugo/commit/2e1e4934b60ce8081a7f3a79191ed204f3098481) [@yihui](https://github.com/yihui) 
 +
 +### Output
 +
 +* Support templates per site/language. This is for both regular templates and shortcode templates. [aa6b1b9b](https://github.com/gohugoio/hugo/commit/aa6b1b9be7c9d7322333893b642aaf8c7a5f2c2e) [@bep](https://github.com/bep) [#3360](https://github.com/gohugoio/hugo/issues/3360)
 +
 +### Core
 +
 +* Extend the sections API [a1d260b4](https://github.com/gohugoio/hugo/commit/a1d260b41a6673adef679ec4e262c5f390432cf5) [@bep](https://github.com/bep) [#3591](https://github.com/gohugoio/hugo/issues/3591)
 +* Make `.Site.Sections` return the top level sections [dd9b1baa](https://github.com/gohugoio/hugo/commit/dd9b1baab0cb860a3eb32fd9043bac18cab3f9f0) [@bep](https://github.com/bep) [#3591](https://github.com/gohugoio/hugo/issues/3591)
 +* Render `404.html` for all languages [41805dca](https://github.com/gohugoio/hugo/commit/41805dca9e40e9b0952e04d06074e6fc91140495) [@mitchchn](https://github.com/mitchchn) [#3598](https://github.com/gohugoio/hugo/issues/3598)
 +
 +### Other
 +
 +* Support human-readable `YAML` boolean values in `undraft` [1039356e](https://github.com/gohugoio/hugo/commit/1039356edf747f044c989a5bc0e85d792341ed5d) [@kropp](https://github.com/kropp) 
 +* `hugo import jekyll` support nested `_posts` directories [7ee1f25e](https://github.com/gohugoio/hugo/commit/7ee1f25e9ef3be8f99c171e8e7982f4f82c13e16) [@coderzh](https://github.com/coderzh) [#1890](https://github.com/gohugoio/hugo/issues/1890)[#1911](https://github.com/gohugoio/hugo/issues/1911)
 +* Update `Dockerfile` and add Docker optimizations [118f8f7c](https://github.com/gohugoio/hugo/commit/118f8f7cf22d756d8a894ff93551974a806f2155) [@ellerbrock](https://github.com/ellerbrock) 
 +* Add Blackfriday `joinLines` extension support (#3574) [a5440496](https://github.com/gohugoio/hugo/commit/a54404968a4b36579797f2e7ff7f5eada94866d9) [@choueric](https://github.com/choueric) 
 +* add `--initial-header-level=2` to rst2html (#3528) [bfce30d8](https://github.com/gohugoio/hugo/commit/bfce30d85972c27c27e8a2caac9db6315f813298) [@frankbraun](https://github.com/frankbraun) 
 +* Support open "current content page" in browser [c825a731](https://github.com/gohugoio/hugo/commit/c825a7312131b4afa67ee90d593640dee3525d98) [@bep](https://github.com/bep) [#3643](https://github.com/gohugoio/hugo/issues/3643)
 +* Make `--navigateToChanged` more robust on Windows [30e14cc3](https://github.com/gohugoio/hugo/commit/30e14cc31678ddc204b082ab362f86b6b8063881) [@anthonyfok](https://github.com/anthonyfok) [#3645](https://github.com/gohugoio/hugo/issues/3645)
 +* Remove the docs submodule [31393f60](https://github.com/gohugoio/hugo/commit/31393f6024416ea1b2e61d1080dfd7104df36eda) [@bep](https://github.com/bep) [#3647](https://github.com/gohugoio/hugo/issues/3647)
 +* Use `example.com` as homepage for new theme [aff1ac32](https://github.com/gohugoio/hugo/commit/aff1ac3235b6c075d01f7237addf44fecdd36d82) [@anthonyfok](https://github.com/anthonyfok) 
 +
 +## Fixes
 +
 +### Templates
 +
 +* Fix `in` function for JSON arrays [d12cf5a2](https://github.com/gohugoio/hugo/commit/d12cf5a25df00fa16c59f0b2ae282187a398214c) [@bep](https://github.com/bep) [#1468](https://github.com/gohugoio/hugo/issues/1468)
 +
 +### Other
 +
 +* Fix handling of `JSON` front matter with escaped quotes [e10e51a0](https://github.com/gohugoio/hugo/commit/e10e51a00827b9fdc1bee51439fef05afc529831) [@bep](https://github.com/bep) [#3661](https://github.com/gohugoio/hugo/issues/3661)
 +* Fix typo in code comment [56d82aa0](https://github.com/gohugoio/hugo/commit/56d82aa025f4d2edb1dc6315132cd7ab52df649a) [@dvic](https://github.com/dvic) 
index 19871ad14d4b9689d9027c8e971e56b7c86fc15b,0000000000000000000000000000000000000000..353accc3d0cd8137199d3cf3a88ea79ed327a5c1
mode 100644,000000..100644
--- /dev/null
@@@ -1,3 -1,0 +1,4 @@@
 +---
 +title: "Hugo News"
++aliases: [/release-notes/]
 +---
index 583568a3ebe07d153fca00026207eb6092235e80,0000000000000000000000000000000000000000..5af546b1f2f952340c5416f4a88f38bb6f36eda4
mode 100644,000000..100644
--- /dev/null
@@@ -1,981 -1,0 +1,981 @@@
- ```css
 +---
 +title: Release Notes
 +linktitle: Release Notes
 +description: See the full list of Hugo release notes since v0.05 in June 2015.
 +date: 2016-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [releases]
 +draft: false
 +aliases: [/meta/release-notes/]
 +toc: true
 +---
 +
 +## **0.20.2** April 16th 2017
 +
 +Hugo `0.20.2` adds support for plain text partials included into `HTML` templates. This was a side-effect of the big new [Custom Output Format](/templates/output-formats/) feature in `0.20`, and while the change was intentional and there was an ongoing discussion about fixing it in {{< gh 3273  >}}, it did break some themes. There were valid workarounds for these themes, but we might as well get it right.
 +
 +The most obvious use case for this is inline `CSS` styles,  which you now can do without having to name your partials with a `html` suffix.
 +
 +A simple example:
 +
 +In `layouts/partials/mystyles.css`:
 +
- ```toml
++```
 +body {
 +  background-color: {{ .Param "colors.main" }}
 +}
 +```
 +
 +Then in `config.toml` (note that by using the `.Param` lookup func, we can override the color in a page's front matter if we want):
 +
- ```html
++```
 +[params]
 +[params.colors]
 +main = "green"
 +text = "blue"
 +```
 +
 +And then in `layouts/partials/head.html` (or the partial used to include the head section into your layout):
 +
- ```html
++```
 +<head>
 +    <style type="text/css">
 +    {{ partial "mystyles.css" . | safeCSS }}
 +    </style>
 +</head>
 +```
 +
 +Of course, `0.20` also made it super-easy to create external `CSS` stylesheets based on your site and page configuration. A simple example:
 +
 +Add "CSS" to your home page's `outputs` list, create the template `/layouts/index.css` using Go template syntax for the dynamic parts, and then include it into your `HTML` template with:
 +
++```
 +{{ with  .OutputFormats.Get "css" }}
 +<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink |  safeURL }}">
 +{{ end }}`
 +```
 +
 +## **0.20.1** April 13th 2017
 +
 +Hugo `0.20.1` is a bug fix release, fixing some important regressions introduced in `0.20` a couple of days ago:
 +
 +* Fix logic for base template in a work directory vs in a theme {{< gh 3323 >}}
 +* camelCased templates (partials, shortcodes, etc.) not found {{< gh 3333 >}}
 +* LiveReload fails with `_index.md` with paginator {{< gh 3315 >}}
 +* `rssURI` WARNING always shown {{< gh 3319 >}}
 +
 +See the [full list of closed issues on GitHub](https://github.com/gohugoio/hugo/milestone/16?closed=1).
 +
 +## **0.20** April 10th 2017
 +
 +Hugo `0.20` introduces the powerful and long sought after feature [Custom Output Formats](/templates/output-formats/)); Hugo isn't just that "static HTML with an added RSS feed" anymore. *Say hello* to calendars, e-book formats, Google AMP, and JSON search indexes, to name a few ({{< gh 2828 >}}).
 +
 +This release represents **over 180 contributions by over 30 contributors** to the main Hugo code base. Since last release Hugo has **gained 1100 stars, 20 new contributors and 5 additional themes.**
 +
 +Hugo now has:
 +
 +* 16300+ stars
 +* 495+ contributors
 +* 156+ themes
 +
 +{{< gh "@bep" >}} still leads the Hugo development with his witty Norwegian humor, and once again contributed a significant amount of additions. Also a big shoutout to {{< gh "@digitalcraftsman" >}} for his relentless work on keeping the documentation and the themes site in pristine condition, and {{< gh "@moorereason" >}} and {{< gh "@bogem" >}} for their ongoing contributions.
 +
 +### Other Highlights
 +
 +{{< gh "@bogem" >}} has also contributed TOML as an alternative and much simpler format for language/i18n files ({{< gh 3200 >}}). A feature you will appreciate when you start to work on larger translations.
 +
 +Also, there have been some important updates in the Emacs Org-mode handling: {{< gh "@chaseadamsio" >}} has fixed the newline-handling ({{< gh 3126 >}}) and {{< gh "@clockoon" >}}  has added basic footnote support.
 +
 +Worth mentioning is also the ongoing work that {{< gh "@rdwatters" >}} and {{< gh "@budparr" >}} is doing to re-do the [gohugo.io](https://gohugo.io/) site, including a total restructuring and partial rewrite of the documentation. It is getting close to finished, and it looks fantastic!
 +
 +### Notes
 +
 +* `RSS` description in the built-in template is changed from full `.Content` to `.Summary`. This is a somewhat breaking change, but is what most people expect from their RSS feeds. If you want full content, please provide your own RSS template.
 +* The deprecated `.RSSlink` is now removed. Use `.RSSLink`.
 +* `RSSUri` is deprecated and will be removed in a future Hugo version, replace it with an output format definition.
 +* The deprecated `.Site.GetParam` is now removed, use `.Site.Param`.
 +* Hugo does no longer append missing trailing slash to `baseURL` set as a command line parameter, making it consistent with how it behaves from site config. {{< gh 3262 >}}
 +
 +### Enhancements
 +
 +* Hugo `0.20` is built with Go 1.8.1.
 +* Add `.Site.Params.mainSections` that defaults to the section with the most pages. Plan is to get themes to use this instead of the hardcoded `blog` in `where` clauses.  {{< gh 3206 >}}
 +* File extension is now configurable. {{< gh 320 >}}
 +* Impove `markdownify` template function performance. {{< gh 3292 >}}
 +* Add taxonomy terms' pages to `.Data.Pages` {{< gh 2826 >}}
 +* Change `RSS` description from full `.Content` to `.Summary`.
 +* Ignore "." dirs in `hugo --cleanDestinationDir` {{< gh 3202 >}}
 +* Allow `jekyll import` to accept both `2006-01-02` and `2006-1-2` date format {{< gh 2738 >}}
 +* Raise the default `rssLimit` {{< gh 3145 >}}
 +* Unify section list vs single template lookup order {{< gh 3116 >}}
 +* Allow `apply` to be used with the built-in Go template funcs `print`, `printf` and `println`. {{< gh 3139 >}}
 +
 +### Fixes
 +
 +* Fix deadlock in `getJSON` {{< gh 3211 >}}
 +* Make sure empty terms pages are created. {{< gh 2977 >}}
 +* Fix base template lookup order for sections {{< gh 2995 >}}
 +* `URL` fixes:
 +    * Fix pagination URLs with `baseURL` with sub-root and `canonifyUrls=false` {{< gh 1252 >}}
 +    * Fix pagination URL for resources with "." in name {{< gh 2110 >}} {{< gh 2374 >}} {{< gh 1885 >}}
 +    * Handle taxonomy names with period {{< gh 3169 >}}
 +    * Handle `uglyURLs` ambiguity in `Permalink` {{< gh 3102 >}}
 +    * Fix `Permalink` for language-roots wrong when `uglyURLs` is `true` {{< gh 3179 >}}
 +    * Fix misc case issues for `URLs` {{< gh 1641 >}}
 +    * Fix for taxonomies URLs when `uglyUrls=true` {{< gh 1989 >}}
 +    * Fix empty `RSSLink` for list pages with content page. {{< gh 3131 >}}
 +* Correctly identify regular pages on the form "my_index_page.md" {{< gh 3234 >}}
 +*  `Exit -1` on `ERROR` in global logger {{< gh 3239 >}}
 +* Document hugo `help command` {{< gh 2349 >}}
 +* Fix internal `Hugo` version handling for bug fix releases. {{< gh 3025 >}}
 +* Only return `RSSLink` for pages that actually have a RSS feed. {{< gh 1302 >}}
 +
 +
 +## **0.19** February 27th 2017
 +
 +We're happy to announce the first release of Hugo in 2017.
 +
 +This release represents **over 180 contributions by over 50 contributors** to the main Hugo code base. Since last release Hugo has **gained 1450 stars, 35 new contributors, and 15 additional themes.**
 +
 +Hugo now has:
 +
 +* 15200+ stars
 +* 470+ contributors
 +* 151+ themes
 +
 +Furthermore, Hugo has its own Twitter account ([@gohugoio](https://twitter.com/gohugoio)) where we share bite-sized news and themes from the Hugo community.
 +
 +{{< gh "@bep" >}} leads the Hugo development and once again contributed a significant amount of additions. Also a big shoutout to  {{< gh "@chaseadamsio" >}} for the Emacs Org-mode support, {{< gh "@digitalcraftsman" >}} for his relentless work on keeping the documentation and the themes site in pristine condition, {{< gh "@fj" >}}for his work on revising the `params` handling in Hugo, and {{< gh "@moorereason" >}} and {{< gh "@bogem" >}} for their ongoing contributions.
 +
 +### Highlights
 +
 +Hugo `0.19` brings native Emacs Org-mode content support ({{<gh 1483>}}), big thanks to {{< gh "@chaseadamsio" >}}.
 +
 +Also, a considerably amount of work have been put into cleaning up the Hugo source code, in an issue titled [Refactor the globals out of site build](https://github.com/gohugoio/hugo/issues/2701). This is not immediately visible to the Hugo end user, but will speed up future development.
 +
 +Hugo `0.18` was bringing full-parallel page rendering, so workarounds depending on rendering order did not work anymore, and pages with duplicate target paths (common examples would be `/index.md` or `/about/index.md`) would now conflict with the homepage or the section listing.
 +
 +With Hugo `0.19`, you can control this behaviour by turning off page types you do not want ({{<gh 2534 >}}). In its most extreme case, if you put the below setting in your [`config.toml`](/getting-started/configuration/), you will get **nothing!**:
 +
 +```
 +disableKinds = ["page", "home", "section", "taxonomy", "taxonomyTerm", "RSS", "sitemap", "robotsTXT", "404"]
 +```
 +
 +### Other New Features
 +
 +* Add ability to sort pages by front matter parameters, enabling easy custom "top 10" page lists. {{<gh 3022 >}}
 +* Add `truncate` template function {{<gh 2882 >}}
 +* Add `now` function, which replaces the now deprecated `.Now` {{<gh 2859 >}}
 +* Make RSS item limit configurable {{<gh 3035 >}}
 +
 +### Enhancements
 +
 +*  Enhance `.Param` to permit arbitrarily nested parameter references {{<gh 2598 >}}
 +* Use `Page.Params` more consistently when adding metadata {{<gh 3033 >}}
 +* The `sectionPagesMenu` feature ("Section menu for the lazy blogger") is now integrated with the section content pages. {{<gh 2974 >}}
 +* Hugo `0.19` is compiled with Go 1.8!
 +* Make template funcs like `findRE` and friends more liberal in what argument types they accept {{<gh 3018 >}} {{<gh 2822 >}}
 +* Improve generation of OpenGraph date tags {{<gh 2979 >}}
 +
 +### Notes
 +
 +* `sourceRelativeLinks` is now deprecated and will be removed in Hugo `0.21` if  no one is stepping up to the plate and fixes and maintains this feature. {{<gh 3028 >}}
 +
 +### Fixes
 +
 +* Fix `.Site.LastChange` on sites where the default sort order is not chronological. {{<gh 2909 >}}
 +* Fix regression of `.Truncated` evaluation in manual summaries. {{<gh 2989 >}}
 +* Fix `preserveTaxonomyNames` regression {{<gh 3070 >}}
 +* Fix issue with taxonomies when only some have content page {{<gh 2992 >}}
 +* Fix instagram shortcode panic on invalid ID {{<gh 3048 >}}
 +* Fix subtle data race in `getJSON` {{<gh 3045 >}}
 +* Fix deadlock in cached partials {{<gh 2935 >}}
 +* Avoid double-encoding of paginator URLs {{<gh 2177 >}}
 +* Allow tilde in URLs {{<gh 2177 >}}
 +* Fix `.Site.Pages` handling on live reloads {{<gh 2869 >}}
 +* `UniqueID` now correctly uses the fill file path from the content root to calculate the hash, and is finally ... unique!
 +* Discard current language based on `.Lang()`, go get translations correct for paginated pages. {{<gh 2972 >}}
 +* Fix infinite loop in template AST handling for recursive templates  {{<gh 2927 >}}
 +* Fix issue with watching when config loading fails {{<gh 2603 >}}
 +* Correctly flush the imageConfig on live-reload {{<gh 3016 >}}
 +* Fix parsing of TOML arrays in front matter {{<gh 2752 >}}
 +
 +### Docs
 +
 +* Add tutorial "How to use Google Firebase to host a Hugo site" {{<gh 3007 >}}
 +* Improve documentation for menu rendering {{<gh 3056 >}}
 +* Revise GitHub Pages deployment tutorial {{<gh 2930 >}}
 +
 +## **0.18.1** December 30th 2016
 +
 +Hugo 0.18.1 is a bug fix release fixing some issues introduced in Hugo 0.18:
 +
 +* Fix 32-bit binaries {{<gh 2847 >}}
 +* Fix issues with `preserveTaxonomyNames` {{<gh 2809 >}}
 +* Fix `.URL` for taxonomy pages when `uglyURLs=true` {{<gh 2819 >}}
 +* Fix `IsTranslated` and `Translations` for node pages {{<gh 2812 >}}
 +* Make template error messages more verbose {{<gh 2820 >}}
 +
 +## **0.18.0** December 19th 2016
 +
 +Today, we're excited to release the much-anticipated Hugo 0.18!
 +
 +We're heading towards the end of the year 2016, and we can look back on three releases and a steady growing community around the project.
 +This release includes **over 220 contributions by nearly 50 contributors** to the main codebase.
 +Since the last release, Hugo has **gained 1750 stars and 27 additional themes**.
 +
 +Hugo now has:
 +
 +- 13750+ stars
 +- 408+ contributors
 +- 137+ themes
 +
 +{{< gh "@bep" >}} once again took the lead of Hugo and contributed a significant amount of additions.
 +Also a big shoutout to {{< gh "@digitalcraftsman" >}} for his relentless work on keeping the documentation and the themes site in pristine condition,
 +and also a big thanks to {{< gh "@moorereason" >}} and {{< gh "@bogem" >}} for their contributions.
 +
 +We wish you all a Merry Christmas and a Happy New Year.<br>
 +*The Hugo team*
 +
 +### Highlights
 +
 +The primary new feature in Hugo 0.18 is that every piece of content is now a `Page` ({{<gh 2297>}}). This means that every page, including the homepage, can have a content file with front matter.
 +
 +Not only is this a much simpler model to understand, it is also faster and paved the way for several important new features:
 +
 +* Enable proper titles for Nodes {{<gh 1051>}}
 +* Sitemap.xml should include nodes, as well as pages {{<gh 1303>}}
 +* Document homepage content workaround {{<gh 2240>}}
 +* Allow homepage to be easily authored in markdown {{<gh 720>}}
 +* Minimalist website with homepage as content {{<gh 330>}}
 +
 +Hugo again continues its trend of each release being faster than the last. It's quite a challenge to consistently add significant new functionality and simultaneously dramatically improve performance. Running [this benchmark]( https://github.com/bep/hugo-benchmark) with [these sites](https://github.com/bep/hugo-benchmark/tree/master/sites) (renders to memory) shows about   60% reduction in time spent and 30% reduction in memory usage compared to Hugo 0.17.
 +
 +### Other New Features
 +
 +* Every `Page` now has a `Kind` property. Since everything is a `Page` now, the `Kind` is used to differentiate different kinds of pages.
 +  Possible values are `page`, `home`, `section`, `taxonomy`, and `taxonomyTerm`.
 +  (Internally, we also define `RSS`, `sitemap`, `robotsTXT`, and `404`, but those have no practical use for end users at the moment since they are not included in any collections.)
 +* Add a `GitInfo` object to `Page` if `enableGitInfo` is set. It then also sets `Lastmod` for the given `Page` to the author date provided by Git. {{<gh 2291>}}
 +* Implement support for alias templates  {{<gh 2533 >}}
 +* New template functions:
 +  * Add `imageConfig` function {{<gh 2677>}}
 +  * Add `sha256` function {{<gh 2762>}}
 +  * Add `partialCached` template function {{<gh 1368>}}
 +* Add shortcode to display Instagram images {{<gh 2690>}}
 +* Add `noChmod` option to disable perm sync {{<gh 2749>}}
 +* Add `quiet` build mode {{<gh 1218>}}
 +
 +
 +### Notices
 +
 +* `.Site.Pages` will now contain *several kinds of pages*, including regular pages, sections, taxonomies, and the homepage.
 +  If you want a specific kind of page, you can filter it with `where` and `Kind`.
 +  `.Site.RegularPages` is a shortcut to the page collection you have been used to getting.
 +* `RSSlink` is now deprecated.  Use `RSSLink` instead.
 +  Note that in Hugo 0.17 both of them existed, so there is a fifty-fifty chance you will not have to do anything
 +  (if you use a theme, the chance is close to 0), and `RSSlink` will still work for two Hugo versions.
 +
 +### Fixes
 +
 +* Revise the `base` template lookup logic so it now better matches the behavior of regular templates, making it easier to override the master templates from the theme {{<gh 2783>}}
 +* Add workaround for `block` template crash.
 +  Block templates are very useful, but there is a bug in Go 1.6 and 1.7 which makes the template rendering crash if you use the block template in more complex scenarios.
 +  This is fixed in the upcoming Go 1.8, but Hugo adds a temporary workaround in Hugo 0.18. {{<gh 2549>}}
 +* All the `Params` configurations are now case insensitive {{<gh 1129>}} {{<gh 2590>}} {{<gh 2615>}}
 +* Make RawContent raw again {{<gh 2601>}}
 +* Fix archetype title and date handling {{<gh 2750>}}
 +* Fix TOML archetype parsing in `hugo new` {{<gh 2745>}}
 +* Fix page sorting when weight is zero {{<gh 2673>}}
 +* Fix page names that contain dot {{<gh 2555>}}
 +* Fix RSS Title regression {{<gh 2645>}}
 +* Handle ToC before handling shortcodes {{<gh 2433>}}
 +* Only watch relevant themes dir {{<gh 2602>}}
 +* Hugo new content creates TOML slices with closing bracket on new line {{<gh 2800>}}
 +
 +### Improvements
 +
 +* Add page information to error logging in rendering {{<gh 2570>}}
 +* Deprecate `RSSlink` in favor of `RSSLink`
 +* Make benchmark command more useful {{<gh 2432>}}
 +* Consolidate the `Param` methods {{<gh 2590>}}
 +* Allow to set cache dir in config file
 +* Performance improvements:
 +  * Avoid repeated Viper loads of `sectionPagesMenu` {{<gh 2728>}}
 +  * Avoid reading from Viper for path and URL funcs {{<gh 2495>}}
 +  * Add `partialCached` template function. This can be a significant performance boost if you have complex partials that does not need to be rerendered for every page. {{<gh 1368>}}
 +
 +### Documentation Updates
 +
 +* Update roadmap {{<gh 2666>}}
 +* Update multilingual example {{<gh 2417>}}
 +* Add a "Deployment with rsync" tutorial page {{<gh 2658>}}
 +* Refactor `/docs` to use the `block` keyword {{<gh 2226>}}
 +
 +
 +## **0.17.0** October 7th 2016
 +
 +Hugo is going global with our 0.17 release.  We put a lot of thought into how we could extend Hugo
 +to support multilingual websites with the most simple and elegant experience. Hugo's multilingual
 +capabilities rival the best web and documentation software, but Hugo's experience is unmatched.
 +If you have a single language website, the simple Hugo experience you already love is unchanged.
 +Adding additional languages to your website is simple and straightforward. Hugo has been completely
 +internally rewritten to be multilingual aware with translation and internationalization features
 +embedded throughout Hugo.
 +
 +Hugo continues its trend of each release being faster than the last. It's quite a challenge to consistently add
 +significant new functionality and simultaneously dramatically improve performance. {{<gh "@bep">}} has made it
 +his personal mission to apply the Go mantra of "Enable more. Do less" to Hugo. Hugo's consistent improvement
 +is a testament to his brilliance and his dedication to his craft. Hugo additionally benefits from the
 +performance improvements from the Go team in the Go 1.7 release.
 +
 +This release represents **over 300 contributions by over 70 contributors** to
 +the main Hugo code base. Since last release Hugo has **gained 2000 stars, 50 new
 +contributors and 20 additional themes.**
 +
 +Hugo now has:
 +
 +* 12,000 stars on GitHub
 +* 370+ contributors
 +* 110+ themes
 +
 +{{<gh "@bep" >}} continues to lead the project with the lionshare of contributions
 +and reviews. A special thanks to {{<gh "@bep" >}} and {{<gh "@abourget" >}} for their
 +considerable work on multilingual support.
 +
 +A big welcome to newcomers {{<gh "@MarkDBlackwell" >}}, {{<gh "@bogem" >}} and
 +{{<gh "@g3wanghc" >}} for their critical contributions.
 +
 +### Highlights
 +
 +**Multilingual Support:**
 +Hugo now supports multiple languages side-by-side. A single site can now have multiple languages rendered with
 +full support for translation and i18n.
 +
 +**Performance:**
 +Hugo is faster than ever! Hugo 0.17 is not only our fastest release, it's also the most efficient.
 +Hugo 0.17 is **nearly twice as fast as Hugo 0.16** and uses about 10% less memory.
 +This means that the same site will build in nearly half the time it took with Hugo 0.16.
 +For the first time Hugo sites are averaging well under 1ms per rendered content.
 +
 +**Docs overhaul:**
 +This release really focused on improving the documentation. [Gohugo.io](http://gohugo.io) is
 +more accurate and complete than ever.
 +
 +**Support for macOS Sierra**
 +
 +### New Features
 +* Multilingual support {{<gh 2303>}}
 +* Allow content expiration {{<gh 2137 >}}
 +* New templates functions:
 +  * `querify` function to generate query strings inside templates {{<gh 2257>}}
 +  * `htmlEscape` and `htmlUnescape` template functions {{<gh 2287>}}
 +  * `time` converts a timestamp string into a time.Time structure {{<gh 2329>}}
 +
 +### Enhancements
 +
 +* Render the shortcodes as late as possible {{<gh 0xed0985404db4630d1b9d3ad0b7e41fb186ae0112>}}
 +* Remove unneeded casts in page.getParam {{<gh 2186 >}}
 +* Automatic page date fallback {{<gh 2239>}}
 +* Enable safeHTMLAttr {{<gh 2234>}}
 +* Add TODO list support for markdown {{<gh 2296>}}
 +* Make absURL and relURL accept any type {{<gh 2352>}}
 +* Suppress 'missing static' error {{<gh 2344>}}
 +* Make summary, wordcount etc. more efficient {{<gh 2378>}}
 +* Better error reporting in `hugo convert` {{<gh 2440>}}
 +* Reproducible builds thanks to govendor {{<gh 2461>}}
 +
 +### Fixes
 +
 +* Fix shortcode in markdown headers {{<gh 2210 >}}
 +* Explicitly bind livereload to hugo server port {{<gh 2205>}}
 +* Fix Emojify for certain text patterns {{<gh 2198>}}
 +* Normalize file name to NFC {{<gh 2259>}}
 +* Ignore emacs temp files {{<gh 2266>}}
 +* Handle symlink change event {{<gh 2273>}}
 +* Fix panic when using URLize {{<gh 2274>}}
 +* `hugo import jekyll`: Fixed target path location check {{<gh 2293>}}
 +* Return all errors from casting in templates {{<gh 2356>}}
 +* Fix paginator counter on x86-32 {{<gh 2420>}}
 +* Fix half-broken self-closing shortcodes {{<gh 2499>}}
 +
 +****
 +
 +## **0.16.0** June 6th 2016
 +
 +Hugo 0.16 is our best and biggest release ever. The Hugo community has
 +outdone itself with continued performance improvements,
 +[beautiful themes](http://themes.gohugo.io) for all types of sites from project
 +sites to documentation to blogs to portfolios, and increased stability.
 +
 +This release represents **over 550 contributions by over 110 contributors** to
 +the main Hugo code base. Since last release Hugo has **gained 3500 stars, 90
 +contributors and 23 additional themes.**
 +
 +This release celebrates 3 years since  {{< gh "@spf13" >}} wrote the first lines
 +of Hugo. During those 3 years Hugo has accomplished some major milestones
 +including...
 +
 +* 10,000+ stars on GitHub
 +* 320+ contributors
 +* 90+ themes
 +* 1000s of happy websites
 +* Many subprojects like {{< gh "@spf13/cobra">}}, {{< gh "@spf13/viper">}} and
 +  {{< gh "@spf13/afero">}} which have experienced broad usage across the Go
 +  ecosystem.
 +
 +{{< gh "@bep" >}} led the development of Hugo for the 3rd consecutive release
 +with nearly half of the contributions to 0.16 in addition to his considerable
 +contributions as lead maintainer. {{< gh "@anthonyfok" >}}, {{< gh
 +"@DigitalCraftsman" >}}, {{< gh "@MooreReason" >}} all made significant
 +contributions. A special thanks to {{< gh "@abourget" >}} for his considerable
 +work on multilingual support. Due to its broad impact we wanted to spend more
 +time testing it and it will be included in Hugo's next release.
 +
 +### Highlights
 +
 +**Partial Builds:** Prior to this release Hugo would always reread and rebuild
 +the entire site. This release introduces support for reactive site building
 +while watching (`hugo server`). Hugo will watch the filesystem for changes and
 +only re-read the changed files. Depending on the files change Hugo will
 +intelligently re-render only the needed portion of the site. Performance gains
 +depend on the operation performed and size of the site. In our testing build
 +times decreased anywhere from 10% to 99%.
 +
 +**Template Improvements:** Template improvements continue to be a mainstay of each Hugo release. Hugo 0.16 adds support for the new `block` keyword introduced in Go 1.6 -- think base templates with default sections -- as well as many new template functions.
 +
 +**Polish:** As Hugo matures releases will inevitably contain fewer huge new features. This release represents hundreds of small improvements across ever facet of Hugo which will make for a much better experience for all of our users. Worth mentioning here is the curious bug where live reloading didn't work in some editors on OS X, including the popular TextMate 2. This is now fixed. Oh, and now any error will exit with an error code, a big thing for automated deployments.
 +
 +### New Features
 +* Support reading configuration variables from the OS environment {{<gh 2090 >}}
 +* Add emoji support {{<gh 1892>}}
 +* Add `themesDir` option to configuration {{<gh 1556>}}
 +* Add support for Go 1.6 `block` keyword in templates {{<gh 1832>}}
 +* Partial static sync {{<gh 1644>}}
 +* Source file based relative linking (à la GitHub) {{<gh 0x0f6b334b6715253b030c4e783b88e911b6e53e56>}}
 +* Add `ByLastmod` sort function to pages. {{<gh 0xeb627ca16de6fb5e8646279edd295a8bf0f72bf1 >}}
 +* New templates functions:
 +    * `readFile` {{<gh 1551 >}}
 +    * `countwords` and `countrunes` {{<gh 1440>}}
 +    * `default` {{<gh 1943>}}
 +    * `hasPrefix` {{<gh 1243>}}
 +    * `humanize` {{<gh 1818>}}
 +    * `jsonify` {{<gh 0x435e996c4fd48e9009ffa9f83a19fb55f0777dbd>}}
 +    * `md5` and `sha1` {{<gh 1932>}}
 +    * `replaceRE` {{<gh 1845>}}
 +    * `findRE` {{<gh 2048>}}
 +    * `shuffle` {{<gh 1942>}}
 +    * `slice` {{<gh 1902>}}
 +    * `plainify` {{<gh 1915>}}
 +
 +### Enhancements
 +
 +* Hugo now exits with error code on any error. This is a big thing for
 +  automated deployments. {{<gh 740 >}}
 +* Print error when `/index.html` is zero-length {{<gh 947>}}
 +* Enable dirname and filename bash autocompletion for more flags {{<gh
 +  0x666ddd237791b56fd048992dca9a27d1af50a10e>}}
 +* Improve error handling in commands {{<gh 1502>}}
 +* Add sanity checks for `hugo import jekyll` {{<gh 1625 >}}
 +* Add description to `Page.Params` {{<gh 1484>}}
 +* Add async version of Google Analytics internal template {{<gh 1711>}}
 +* Add autostart option to YouTube shortcode {{<gh 1784>}}
 +* Set Date and Lastmod for main homepage {{<gh 1903>}}
 +* Allow URL with extension in front matter {{<gh 1923>}}
 +* Add list support in Scratch {{<gh
 +  0xeaba04e82bdfc5d4c29e970f11b4aab9cc0efeaa>}}
 +* Add file option to gist shortcode {{<gh 1955>}}
 +* Add config layout and content directory CLI options {{<gh 1698>}}
 +* Add boolean value comparison to `where` template function {{<gh
 +  0xf3c74c9db484c8961e70cb3458f9e41e7832fa12>}}
 +* Do not write to to cache when `ignoreCache` is set  {{<gh 2067>}}
 +* Add option to disable rendering of 404 page  {{<gh 2037>}}
 +* Mercurial is no longer needed to build Hugo {{<gh 2062 >}}
 +* Do not create `robots.txt` by default {{<gh 2049>}}
 +* Disable syntax guessing for PygmentsCodeFences by default.  To enable syntax
 +  guessing again, add the following to your config file:
 +  `PygmentsCodeFencesGuessSyntax = true` {{<gh 2034>}}
 +* Make `ByCount` sort consistently {{<gh 1930>}}
 +* Add `Scratch` to shortcode {{<gh 2000>}}
 +* Add support for symbolic links for content, layout, static, theme  {{<gh 1855
 +  >}}
 +* Add '+' as one of the valid characters in URLs specified in the front matter
 +  {{<gh 1290 >}}
 +* Make alias redirect output URLs relative when `RelativeURLs = true` {{<gh
 +  2093 >}}
 +* Hugo injects meta generator tag on homepage if missing {{<gh
 +  2182 >}}
 +
 +### Fixes
 +* Fix file change watcher for TextMate 2 and friends on OS X {{<gh 1053 >}}
 +* Make dynamic reloading of config file reliable on all platform {{<gh 1684 >}}
 +* Hugo now works on Linux/arm64 {{<gh 1772 >}}
 +* `plainIDAnchors` now defaults to `true`  {{<gh 2057>}}
 +* Win32 and ARM builds fixed {{<gh 1716>}}
 +* Copy static dir files without theme's static dir {{<gh 1656>}}
 +* Make `noTimes` command flag work {{<gh 1657>}}
 +* Change most global CLI flags into local ones {{<gh 1624>}}
 +* Remove transformation of menu URLs {{<gh 1239>}}
 +* Do not fail on unknown Jekyll file {{<gh 1705>}}
 +* Use absolute path when editing with editor {{<gh 1589>}}
 +* Fix hugo server "Watching for changes" path display {{<gh 1721>}}
 +* Do not strip special characters out of URLs {{<gh 1292>}}
 +* Fix `RSSLink` when uglyURLs are enabled {{<gh 175>}}
 +* Get BaseURL from viper in server mode {{<gh 1821>}}
 +* Fix shortcode handling in RST {{<gh 1904>}}
 +* Use default sitemap configuration for homepage {{<gh 1304>}}
 +* Exit if specific port is unavailable in server mode {{<gh 1901>}}
 +* Fix regression in "section menus for lazy blogger" {{<gh 2065>}}
 +
 +****
 +
 +## **0.15.0**  November 25, 2015
 +
 +The v0.15.0 Hugo release brings a lot of polish to Hugo. Exactly 6 months after
 +the 0.14 release, Hugo has seen massive growth and changes. Most notably, this
 +is Hugo's first release under the Apache 2.0 license. With this license change
 +we hope to expand the great community around Hugo and make it easier for our
 +many users to contribute.  This release represents over **377 contributions by
 +87 contributors** to the main Hugo repo and hundreds of improvements to the
 +libraries Hugo uses. Hugo also launched a [new theme
 +showcase](http://themes.gohugo.io) and participated in
 +[Hacktoberfest](https://hacktoberfest.digitalocean.com).
 +
 +Hugo now has:
 +
 +* 6700 (+2700) stars on GitHub
 +* 235 (+75) contributors
 +* 65 (+30) themes
 +
 +
 +**Template Improvements:** This release takes Hugo to a new level of speed and
 +usability. Considerable work has been done adding features and performance to
 +the template system which now has full support of Ace, Amber and Go Templates.
 +
 +**Hugo Import:** Have a Jekyll site, but dreaming of porting it to Hugo? This
 +release introduces a new `hugo import jekyll`command that makes this easier
 +than ever.
 +
 +**Performance Improvements:** Just when you thought Hugo couldn't get any faster,
 +Hugo continues to improve in speed while adding features. Notably Hugo 0.15
 +introduces the ability to render and serve directly from memory resulting in
 +30%+ lower render times.
 +
 +Huge thanks to all who participated in this release. A special thanks to
 +{{< gh "@bep" >}} who led the development of Hugo this release again,
 +{{< gh "@anthonyfok" >}},
 +{{< gh "@eparis" >}},
 +{{< gh "@tatsushid" >}} and
 +{{< gh "@DigitalCraftsman" >}}.
 +
 +
 +### New features
 +* new `hugo import jekyll` command. {{< gh 1469 >}}
 +* The new `Param` convenience method on `Page` and `Node` can be used to get the most specific parameter value for a given key. {{< gh 1462 >}}
 +* Several new information elements have been added to `Page` and `Node`:
 +    * `RuneCount`: The number of [runes](http://blog.golang.org/strings) in the content, excluding any whitespace. This may be a good alternative to `.WordCount`  for Japanese and other CJK languages where a word-split by spaces makes no sense.  {{< gh 1266 >}}
 +    * `RawContent`: Raw Markdown as a string. One use case may be of embedding remarkjs.com slides.
 +    * `IsHome`: tells the truth about whether you're on the homepage or not.
 +
 +### Improvements
 +* `hugo server` now builds ~30%+ faster by rendering to memory instead of disk. To get the old behavior, start the server with `--renderToDisk=true`.
 +* Hugo now supports dynamic reloading of the config file when watching.
 +* We now use a custom-built `LazyFileReader` for reading file contents, which means we don't read media files in `/content` into memory anymore -- and file reading is now performed in parallel on multicore PCs. {{< gh 1181 >}}
 +* Hugo is now built with `Go 1.5` which, among many other improvements, have fixed the last known data race in Hugo. {{< gh 917 >}}
 +* Paginator now also supports page groups. {{< gh 1274 >}}
 +* Markdown improvements:
 +    * Hugo now supports GitHub-flavoured markdown code fences for highlighting for `md`-files (Blackfriday rendered markdown) and `mmark` files (MMark rendered markdown). {{< gh 362 1258 >}}
 +    * Several new Blackfriday options are added:
 +        * Option to disable Blackfriday's `Smartypants`.
 +        * Option for Blackfriday to open links in a new window/tab. {{< gh 1220 >}}
 +        * Option to disable Blackfriday's LaTeX style dashes {{< gh 1231 >}}
 +        * Definition lists extension support.
 +* `Scratch` now has built-in `map` support.
 +* We now fall back to `link title` for the default page sort. {{< gh 1299 >}}
 +* Some notable new configuration options:
 +    *  `IgnoreFiles` can be set with a list of Regular Expressions that matches files to be ignored during build. {{< gh 1189 >}}
 +    * `PreserveTaxonomyNames`, when set to `true`, will preserve what you type as the taxonomy name both in the folders created and the taxonomy `key`, but it will be normalized for the URL.  {{< gh 1180 >}}
 +* `hugo gen` can now generate man files, bash auto complete and markdown documentation
 +* Hugo will now make suggestions when a command is mistyped
 +* Shortcodes now have a boolean `.IsNamedParams` property. {{< gh 1597 >}}
 +
 +### New Template Features
 +* All template engines:
 +    * The new `dict` function that could be used to pass maps into a template. {{< gh 1463 >}}
 +    * The new `pluralize` and `singularize` template funcs.
 +    * The new `base64Decode` and `base64Encode` template funcs.
 +    * The `sort` template func now accepts field/key chaining arguments and pointer values. {{< gh 1330 >}}
 +    * Several fixes for `slicestr` and `substr`, most importantly, they now have full `utf-8`-support. {{< gh 1190 1333 1347 >}}
 +    * The new `last` template function allows the user to select the last `N` items of a slice. {{< gh 1148 >}}
 +    * The new `after` func allows the user to select the items after the `Nth` item. {{< gh 1200 >}}
 +    * Add `time.Time` type support to the `where`, `ge`, `gt`, `le`, and `lt` template functions.
 +    * It is now possible to use constructs like `where Values ".Param.key" nil` to filter pages that doesn't have a particular parameter. {{< gh 1232 >}}
 +    * `getJSON`/`getCSV`: Add retry on invalid content. {{< gh 1166 >}}
 +    *   The new `readDir` func lists local files. {{< gh 1204 >}}
 +    * The new `safeJS` function allows the embedding of content into JavaScript contexts in Go templates.
 +    * Get the main site RSS link from any page by accessing the `.Site.RSSLink` property. {{< gh 1566 >}}
 +* Ace templates:
 +    * Base templates now also works in themes. {{< gh 1215 >}}.
 +    * And now also on Windows. {{< gh 1178 >}}
 +* Full support for Amber templates including all template functions.
 +* A built-in template for Google Analytics. {{< gh 1505 >}}
 +* Hugo is now shipped with new built-in shortcodes: {{< gh 1576 >}}
 +  * `youtube` for YouTube videos
 +  * `vimeo` for Vimeo videos
 +  * `gist` for GitHub gists
 +  * `tweet` for Twitter Tweets
 +  * `speakerdeck` for Speakerdeck slides
 +
 +
 +### Bugfixes
 +* Fix data races in page sorting and page reversal. These operations are now also cached. {{< gh 1293 >}}
 +* `page.HasMenuCurrent()` and `node.HasMenuCurrent()` now work correctly in multi-level nested menus.
 +* Support `Fish and Chips` style section titles. Previously, this would end up as  `Fish And Chips`. Now, the first character is made toupper, but the rest are preserved as-is. {{< gh 1176 >}}
 +* Hugo now removes superfluous p-tags around shortcodes. {{< gh 1148 >}}
 +
 +### Notices
 +* `hugo server` will watch by default now.
 +* Some fields and methods were deprecated in `0.14`. These are now removed, so the error message isn't as friendly if you still use the old values. So please change:
 +    *   `getJson` to `getJSON`, `getCsv` to `getCSV`, `safeHtml` to
 +  `safeHTML`, `safeCss` to `safeCSS`, `safeUrl` to `safeURL`, `Url` to `URL`,
 +  `UrlPath` to `URLPath`, `BaseUrl` to `BaseURL`, `Recent` to `Pages`.
 +
 +### Known Issues
 +
 +Using the Hugo v0.15 32-bit Windows or ARM binary, running `hugo server` would crash or hang due to a [memory alignment issue](https://golang.org/pkg/sync/atomic/#pkg-note-BUG) in [Afero](https://github.com/spf13/afero).  The bug was discovered shortly after the v0.15.0 release and has since been [fixed](https://github.com/spf13/afero/pull/23) by {{< gh "@tpng" >}}.  If you encounter this bug, you may either compile Hugo v0.16-DEV from source, or use the following solution/workaround:
 +
 +* **64-bit Windows users: Please use [hugo_0.15_windows_amd64.zip](https://github.com/gohugoio/hugo/releases/download/v0.15/hugo_0.15_windows_amd64.zip)** (amd64 == x86-64).  It is only the 32-bit hugo_0.15_windows_386.zip that crashes/hangs (see {{< gh 1621 >}} and {{< gh 1628 >}}).
 +* **32-bit Windows and ARM users: Please run `hugo server --renderToDisk` as a workaround** until Hugo v0.16 is released (see [“hugo server” returns runtime error on armhf](https://discourse.gohugo.io/t/hugo-server-returns-runtime-error-on-armhf/2293) and {{< gh 1716 >}}).
 +
 +----
 +
 +## **0.14.0** May 25, 2015
 +
 +The v0.14.0 Hugo release brings of the most demanded features to Hugo. The
 +foundation of Hugo is stabilizing nicely and a lot of polish has been added.
 +We’ve expanded support for additional content types with support for AsciiDoc,
 +Restructured Text, HTML and Markdown. Some of these types depend on external
 +libraries as there does not currently exist native support in Go. We’ve tried
 +to make the experience as seamless as possible. Look for more improvements here
 +in upcoming releases.
 +
 +A lot of work has been done to improve the user experience, with extra polish
 +to the Windows experience. Hugo errors are more helpful overall and Hugo now
 +can detect if it’s being run in Windows Explorer and provide additional
 +instructions to run it via the command prompt.
 +
 +The Hugo community continues to grow. Hugo has over 4000 stars on github, 165
 +contributors, 35 themes and 1000s of happy users. It is now the 5th most
 +popular static site generator (by Stars) and has the 3rd largest contributor
 +community.
 +
 +This release represents over **240 contributions by 36 contributors** to the main
 +Hugo codebase.
 +
 +Big shout out to {{< gh "@bep" >}} who led the development of Hugo
 +this release, {{< gh "@anthonyfok" >}},
 +{{< gh "@eparis" >}},
 +{{< gh "@SchumacherFM" >}},
 +{{< gh "@RickCogley" >}} &
 +{{< gh "@mdhender" >}} for their significant contributions
 +and {{< gh "@tatsushid" >}} for his continuous improvements
 +to the templates. Also a big thanks to all the theme creators. 11 new themes
 +have been added since last release and the [hugoThemes repo now has previews of
 +all of
 +them](https://github.com/gohugoio/hugoThemes/blob/master/README.md#theme-list).
 +
 +Hugo also depends on a lot of other great projects. A big thanks to all of our dependencies including:
 +[cobra](https://github.com/spf13/cobra),
 +[viper](https://github.com/spf13/viper),
 +[blackfriday](https://github.com/russross/blackfriday),
 +[pflag](https://github.com/spf13/pflag),
 +[HugoThemes](https://github.com/gohugoio/hugothemes),
 +[BurntSushi](https://github.com/BurntSushi/toml),
 +[goYaml](https://github.com/go-yaml/yaml/tree/v2), and the Go standard library.
 +
 +### New features
 +
 +* Support for all file types in content directory.
 +    * If dedicated file type handler isn’t found it will be copied to the destination.
 +* Add `AsciiDoc` support using external helpers.
 +* Add experimental support for [`Mmark`](https://github.com/miekg/mmark) markdown processor
 +* Bash autocomplete support via `genautocomplete` command
 +* Add section menu support for a [Section Menu for "the Lazy Blogger"](/templates/menu-templates/)
 +* Add support for `Ace` base templates
 +* Adding `RelativeURLs = true` to site config will now make all the relative URLs relative to the content root.
 +* New template functions:
 +  * `getenv`
 +  * The string functions `substr` and `slicestr`
 +  * `seq`, a sequence generator very similar to its Gnu counterpart
 +  * `absURL` and `relURL`, both of which takes the `BaseURL` setting into account
 +
 +### Improvements
 +
 +* Highlighting with `Pygments` is now cached to disk -- expect a major speed boost if you use it!
 +* More Pygments highlighting options, including `line numbers`
 +* Show help information to Windows users who try to double click on `hugo.exe`.
 +* Add `bind` flag to `hugo server` to set the interface to which the server will bind
 +* Add support for `canonifyURLs` in `srcset`
 +* Add shortcode support for HTML (content) files
 +* Allow the same `shortcode` to  be used with or without inline content
 +* Configurable RSS output filename
 +
 +### Bugfixes
 +
 +* Fix panic with paginator and zero pages in result set.
 +* Fix crossrefs on Windows.
 +* Fix `eq` and `ne` template functions when used with a raw number combined with the result of `add`, `sub` etc.
 +* Fix paginator with uglyURLs
 +* Fix {{< gh 998 >}}, supporting UTF8 characters in Permalinks.
 +
 +### Notices
 +
 +* To get variable and function names in line with the rest of the Go community,
 +  a set of variable and function names has been deprecated: These will still
 +  work in 0.14, but will be removed in 0.15. What to do should be obvious by
 +  the build log; `getJson` to `getJSON`, `getCsv` to `getCSV`, `safeHtml` to
 +  `safeHTML`, `safeCss` to `safeCSS`, `safeUrl` to `safeURL`, `Url` to `URL`,
 +  `UrlPath` to `URLPath`, `BaseUrl` to `BaseURL`, `Recent` to `Pages`,
 +  `Indexes` to `Taxonomies`.
 +
 +
 +----
 +
 +## **0.13.0** Feb 21, 2015
 +
 +The v0.13.0 release is the largest Hugo release to date. The release introduced
 +some long sought after features (pagination, sequencing, data loading, tons of
 +template improvements) as well as major internal improvements. In addition to
 +the code changes, the Hugo community has grown significantly and now has over
 +3000 stars on github, 134 contributors, 24 themes and 1000s of happy users.
 +
 +This release represents **448 contributions by 65 contributors**
 +
 +A special shout out to {{< gh "@bep" >}} and
 +{{< gh "@anthonyfok" >}} for their new role as Hugo
 +maintainers and their tremendous contributions this release.
 +
 +### New major features
 +* Support for [data files](/templates/data-templates/) in [YAML](http://yaml.org/),
 +  [JSON](http://www.json.org/), or [TOML](https://github.com/toml-lang/toml)
 +  located in the `data` directory ({{< gh 885 >}})
 +* Support for [dynamic content](/templates/data-templates/) by loading JSON & CSV
 +  from remote sources via GetJson and GetCsv in short codes or other layout
 +  files ({{< gh 748 >}})
 +* [Pagination support](/templates/pagination/) for homepage, sections and
 +  taxonomies ({{< gh 750 >}})
 +* Universal sequencing support
 +    * A new, generic Next/Prev functionality is added to all lists of pages
 +      (sections, taxonomies, etc.)
 +    * Add in-section [Next/Prev](/variables/) content pointers
 +* `Scratch` -- [a "scratchpad"](/functions/scratch/) for your node- and page-scoped
 +  variables
 +* [Cross Reference](/content-management/cross-references/) support to easily link documents
 +  together with the ref and relref shortcodes.
 +* [Ace](https://github.com/yosssi/ace) template engine support ({{< gh 541 >}})
 +* A new [shortcode](/content-management/shortcodes/) token of `{{</* */>}}` (raw HTML)
 +  alongside the existing `{{%/* */%}}` (Markdown)
 +* A top level `Hugo` variable (on Page & Node) is added with various build
 +  information
 +* Several new ways to order and group content:
 +    * `ByPublishDate`
 +    * `GroupByPublishDate(format, order)`
 +    * `GroupByParam(key, order)`
 +    * `GroupByParamDate(key, format, order)`
 +* Hugo has undergone a major refactoring, with a new handler system and a
 +  generic file system. This sounds and is technical, but will pave the way for
 +  new features and make Hugo even speedier
 +
 +### Notable enhancements to existing features
 +
 +* The [shortcode](/content-management/shortcodes/) handling is rewritten for speed and
 +  better error messages.
 +* Several improvements to the [template functions](/functions/):
 +    * [`where`](/functions/where/) is now even more powerful and accepts SQL-like syntax with the
 +      operators `==`, `eq`; `!=`, `<>`, `ne`; `>=`, `ge`; `>`, `gt`; `<=`,
 +      `le`; `<`, `lt`; `in`, `not in`
 +    * `where` template function now also accepts dot chaining key argument
 +      (e.g. `"Params.foo.bar"`)
 +* New template functions:
 +    * `apply`
 +    * `chomp`
 +    * `delimit`
 +    * `sort`
 +    * `markdownify`
 +    * `in` and `intersect`
 +    * `trim`
 +    * `replace`
 +    * `dateFormat`
 +* Several [configurable improvements related to Markdown
 +  rendering](/getting-started/configuration/):
 +    * Configuration of footnote rendering
 +    * Optional support for smart angled quotes, e.g. `"Hugo"` → «Hugo»
 +    * Enable descriptive header IDs
 +* URLs in XML output is now correctly canonified ({{< gh 725 728 >}}, and part
 +  of {{< gh 789 >}})
 +
 +### Other improvements
 +
 +* Internal change to use byte buffer pool significantly lowering memory usage
 +  and providing measurable performance improvements overall
 +* Changes to docs:
 +    * A new [Troubleshooting](/troubleshooting/) section is added
 +    * It's now searchable through Google Custom Search ({{< gh 753 >}})
 +    * Some new great tutorials:
 +        * [Automated deployments with
 +          Wercker](/tutorials/automated-deployments/)
 +        * [Creating a new theme](/tutorials/creating-a-new-theme/)
 +* [`hugo new`](/content-management/archetypes/) now copies the content in addition to the front matter
 +* Improved unit test coverage
 +* Fixed a lot of Windows-related path issues
 +* Improved error messages for template and rendering errors
 +* Enabled soft LiveReload of CSS and images ({{< gh 490 >}})
 +* Various fixes in RSS feed generation ({{< gh 789 >}})
 +* `HasMenuCurrent` and `IsMenuCurrent` is now supported on Nodes
 +* A bunch of [bug fixes](https://github.com/gohugoio/hugo/commits/master)
 +
 +----
 +
 +## **0.12.0** Sept 1, 2014
 +
 +A lot has happened since Hugo v0.11.0 was released. Most of the work has been
 +focused on polishing the theme engine and adding critical functionality to the
 +templates.
 +
 +This release represents over 90 code commits from 28 different contributors.
 +
 +  * 10 [new themes](https://github.com/gohugoio/hugoThemes) created by the community
 +  * Fully themable [Partials](/templates/partials/)
 +  * [404 template](/templates/404/) support in themes
 +  * [Shortcode](/content-management/shortcodes/) support in themes
 +  * [Views](/templates/views/) support in themes
 +  * Inner [shortcode](/content-management/shortcodes/) content now treated as Markdown
 +  * Support for header ids in Markdown (# Header {#myid})
 +  * [Where](/templates/lists/) template function to filter lists of content, taxonomies, etc.
 +  * [GroupBy](/templates/lists/) & [GroupByDate](/templates/list/) methods to group pages
 +  * Taxonomy [pages list](/templates/taxonomy-templates/) now sortable, filterable, limitable & groupable
 +  * General cleanup to taxonomies & documentation to make it more clear and consistent
 +  * [Showcase](/showcase/) returned and has been expanded
 +  * Pretty links now always have trailing slashes
 +  * [BaseUrl](/getting-started/configuration/) can now include a subdirectory
 +  * Better feedback about draft & future post rendering
 +  * A variety of improvements to [the website](http://gohugo.io/)
 +
 +----
 +
 +## **0.11.0** May 28, 2014
 +
 +This release represents over 110 code commits from 29 different contributors.
 +
 +  * Considerably faster... about 3 - 4x faster on average
 +  * [LiveReload](/getting-started/usage/). Hugo will automatically reload the browser when the build is complete
 +  * Theme engine w/[Theme Repository](https://github.com/gohugoio/hugoThemes)
 +  * [Menu system](/content-management/menus/) with support for active page
 +  * [Builders](/getting-started/usage/) to quickly create a new site, content or theme
 +  * [XML sitemap](/templates/sitemap-template/) generation
 +  * [Integrated Disqus](/content-management/comments/) support
 +  * Streamlined [template organization](/templates/)
 +  * [Brand new docs site](http://gohugo.io/)
 +  * Support for publishDate which allows for posts to be dated in the future
 +  * More [sort](/templates/lists/) options
 +  * Logging support
 +  * Much better error handling
 +  * More informative verbose output
 +  * Renamed Indexes > [Taxonomies](/content-management/taxonomies/)
 +  * Renamed Chrome > [Partials](/templates/partials/)
 +
 +----
 +
 +## **0.10.0** March 1, 2014
 +
 +This release represents over 110 code commits from 29 different contributors.
 +
 +  * [Syntax highlighting](/tools/syntax-highlighting/) powered by pygments (**slow**)
 +  * Ability to [sort content](/templates/lists/) many more ways
 +  * Automatic [table of contents](/content-management/toc/) generation
 +  * Support for Unicode URLs, aliases and indexes
 +  * Configurable per-section [permalink](/content-management/urls/) pattern support
 +  * Support for [paired shortcodes](/content-management/shortcodes/)
 +  * Shipping with some [shortcodes](/content-management/shortcodes/) (highlight & figure)
 +  * Adding [canonify](/content-management/urls/) option to keep urls relative
 +  * A bunch of [additional template functions](/functions/)
 +  * Watching very large sites now works on Mac
 +  * RSS generation improved. Limited to 50 items by default, can limit further in [template](/templates/rss/)
 +  * Boolean params now supported in [fm](/content-management/front-matter/)
 +  * Launched website [showcase](/showcase/). Show off your own hugo site!
 +  * A bunch of [bug fixes](https://github.com/gohugoio/hugo/commits/master)
 +
 +----
 +
 +## **0.9.0** November 15, 2013
 +
 +This release represents over 220 code commits from 22 different contributors.
 +
 +  * New [command based interface](/getting-started/usage/) similar to git (`hugo server -s ./`)
 +  * Amber template support
 +  * [Aliases](/content-management/urls/) (redirects)
 +  * Support for top level pages (in addition to homepage)
 +  * Complete overhaul of the documentation site
 +  * Full Windows support
 +  * Better index support including [ordering by content weight](/templates/lists/)
 +  * Add params to site config, available in .Site.Params from templates
 +  * Friendlier JSON support
 +  * Support for html & xml content (with front matter support)
 +  * Support for [summary](/content-management/summaries/) content divider (<code>&lt;!&#45;&#45;more&#45;&#45;&gt;</code>)
 +  * HTML in [summary](/content-management/summaries/) (when using divider)
 +  * Added ["Minutes to Read"](/variables/) functionality
 +  * Support for a custom 404 page
 +  * Cleanup of how content organization is handled
 +  * Loads of unit and performance tests
 +  * Integration with travis ci
 +  * Static directory now watched and copied on any addition or modification
 +  * Support for relative permalinks
 +  * Fixed watching being triggered multiple times for the same event
 +  * Watch now ignores temp files (as created by Vim)
 +  * Configurable number of posts on [homepage](/templates/homepage/)
 +  * [Front matter](/content-management/front-matter/) supports multiple types (int, string, date, float)
 +  * Indexes can now use a default template
 +  * Addition of truncated bool to content to determine if should show 'more' link
 +  * Support for [linkTitles](/variables/)
 +  * Better handling of most errors with directions on how to resolve
 +  * Support for more date / time formats
 +  * Support for go 1.2
 +  * Support for `first` in templates
 +
 +----
 +
 +## **0.8.0** August 2, 2013
 +
 +This release represents over 65 code commits from 6 different contributors.
 +
 +* Added support for pretty urls (filename/index.html vs filename.html)
 +* Hugo supports a destination directory
 +* Will efficiently sync content in static to destination directory
 +* Cleaned up options.. now with support for short and long options
 +* Added support for TOML
 +* Added support for YAML
 +* Added support for Previous & Next
 +* Added support for indexes for the indexes
 +* Better Windows compatibility
 +* Support for series
 +* Adding verbose output
 +* Loads of bugfixes
 +
 +----
 +
 +## **0.7.0** July 4, 2013
 +
 +* Hugo now includes a simple server
 +* First public release
 +
 +----
 +
 +## **0.6.0** July 2, 2013
 +
 +* Hugo includes an example documentation site which it builds
 +
 +----
 +
 +## **0.5.0** June 25, 2013
 +  * Hugo is quite usable and able to build spf13.com
index 818bf079ad286aed047d7a4aa4c7591635d717e4,0000000000000000000000000000000000000000..67b349f83db6317659aaa338075c9a949526c448
mode 100644,000000..100644
--- /dev/null
@@@ -1,55 -1,0 +1,55 @@@
-     Purpose: `true` enables smart, angled double quotes. Example: "Hugo" renders to renders to «Hugo» instead of “Hugo”.
 +`taskLists`
 +: default: **`true`**<br>
 +    Blackfriday flag: <br>
 +    Purpose: `false` turns off GitHub-style automatic task/TODO list generation
 +
 +`smartypants`
 +: default: **`true`** <br>
 +    Blackfriday flag: **`HTML_USE_SMARTYPANTS`** <br>
 +    Purpose: `false` disables smart punctuation substitutions, including smart quotes, smart dashes, smart fractions, etc. If `true`, it may be fine-tuned with the `angledQuotes`, `fractions`, `smartDashes`, and `latexDashes` flags (see below).
 +
 +`angledQuotes`
 +: default: **`false`**<br>
 +    Blackfriday flag: **`HTML_SMARTYPANTS_ANGLED_QUOTES`**<br>
-     Example: Include `autoHeaderIds` as `false` in the list to disable Blackfriday's `EXTENSION_AUTO_HEADER_IDS`.
++    Purpose: `true` enables smart, angled double quotes. Example: "Hugo" renders to «Hugo» instead of “Hugo”.
 +
 +`fractions`
 +: default: **`true`**<br>
 +    Blackfriday flag: **`HTML_SMARTYPANTS_FRACTIONS`** <br>
 +    Purpose: <code>false</code> disables smart fractions.<br>
 +    Example: `5/12` renders to <sup>5</sup>&frasl;<sub>12</sub>(<code>&lt;sup&gt;5&lt;/sup&gt;&amp;frasl;&lt;sub&gt;12&lt;/sub&gt;</code>).<br> <strong>Caveat:</strong> Even with <code>fractions = false</code>, Blackfriday still converts `1/2`, `1/4`, and `3/4` respectively to ½ (<code>&amp;frac12;</code>), ¼ (<code>&amp;frac14;</code>) and ¾ (<code>&amp;frac34;</code>), but only these three.</small>
 +
 +`smartDashes`
 +: default: **`true`** <br>
 +    Blackfriday flag: **`HTML_SMARTY_DASHES`** <br>
 +    Purpose: `false` disables smart dashes; i.e., the conversion of multiple hyphens into an en dash or em dash. If `true`, its behavior can be modified with the `latexDashes` flag below.
 +
 +`latexDashes`
 +: default: **`true`** <br>
 +    Blackfriday flag: **`HTML_SMARTYPANTS_LATEX_DASHES`** <br>
 +    Purpose: `false` disables LaTeX-style smart dashes and selects conventional smart dashes. Assuming `smartDashes`: <br>
 +    If `true`, `--` is translated into &ndash; (`&ndash;`), whereas `---` is translated into &mdash; (`&mdash;`). <br>
 +    However, *spaced* single hyphen between two words is translated into an en&nbsp;dash&mdash; e.g., "`12 June - 3 July`" becomes `12 June ndash; 3 July` upon rendering.
 +
 +`hrefTargetBlank`
 +: default: **`false`** <br>
 +    Blackfriday flag: **`HTML_HREF_TARGET_BLANK`** <br>
 +    Purpose: `true` opens external links in a new window or tab.
 +
 +`plainIDAnchors`
 +: default **`true`** <br>
 +    Blackfriday flag: **`FootnoteAnchorPrefix` and `HeaderIDSuffix`** <br>
 +    Purpose: `true` renders any heading and footnote IDs without the document ID. <br>
 +    Example: renders `#my-heading` instead of `#my-heading:bec3ed8ba720b970`
 +
 +`extensions`
 +: default: **`[]`** <br>
 +    Blackfriday flag: **`EXTENSION_*`** <br>
 +    Purpose: Enable one or more Blackfriday's Markdown extensions (if they aren't Hugo defaults). <br>
 +    Example: Include `hardLineBreak` in the list to enable Blackfriday's `EXTENSION_HARD_LINK_BREAK`
 +
 +`extensionsmask`
 +: default: **`[]`** <br>
 +    Blackfriday flag: **`EXTENSION_*`** <br>
 +    Purpose: Enable one or more of Blackfriday's Markdown extensions (if they aren't Hugo defaults). <br>
++    Example: Include `autoHeaderIds` as `false` in the list to disable Blackfriday's `EXTENSION_AUTO_HEADER_IDS`.
index 7bb2a69fe417e8ad64d2f387ebfb54379cbe59b0,0000000000000000000000000000000000000000..396be314df9c9822634d623855f160c57f0deb67
mode 100644,000000..100644
--- /dev/null
@@@ -1,57 -1,0 +1,55 @@@
- ```bash
 +---
 +title: Custom 404 Page
 +linktitle: 404 Page
 +description: If you know how to create a single page template, you have unlimited options for creating a custom 404.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-31
 +categories: [templates]
 +#tags: [404, page not found]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 120
 +weight: 120   #rem
 +draft: false
 +aliases: [/templates/404/]
 +toc: false
 +---
 +
 +When using Hugo with [GitHub Pages](http://pages.github.com/), you can provide your own template for a [custom 404 error page](https://help.github.com/articles/custom-404-pages/) by creating a 404.html template file in your `/layouts` folder. When Hugo generates your site, the `404.html` file will be placed in the root.
 +
 +404 pages will have all the regular [page variables][pagevars] available to use in the templates.
 +
 +In addition to the standard page variables, the 404 page has access to all site content accessible from `.Data.Pages`.
 +
- {{% code file="layouts/404.html" download="404.html" %}}
- ```html
++```
 +▾ layouts/
 +    404.html
 +```
 +
 +## 404.html
 +
 +This is a basic example of a 404.html template:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/404.html" download="404.html" >}}
 +{{ define "main"}}
 +    <main id="main">
 +      <div>
 +       <h1 id="title"><a href="{{ "/" | relURL }}">Go Home</a></h1>
 +      </div>
 +    </main>
 +{{ end }}
++{{< /code >}}
 +
 +## Automatic Loading
 +
 +Your 404.html file can be set to load automatically when a visitor enters a mistaken URL path, dependent upon the web serving environment you are using. For example:
 +
 +* [GitHub Pages](/hosting-and-deployment/hosting-on-github/). The 404 page is automatic.
 +* Apache. You can specify `ErrorDocument 404 /404.html` in an `.htaccess` file in the root of your site.
 +* Nginx. You might specify `error_page 404 /404.html;` in your `nginx.conf` file.
 +* Amazon AWS S3. When setting a bucket up for static web serving, you can specify the error file from within the S3 GUI.
 +* Caddy Server. Using `errors { 404 /404.html }`. [Details here](https://caddyserver.com/docs/errors)
 +
 +[pagevars]: /variables/page/
index 57a30733ea7f6fa34fa8c1504048b919b6af3bed,0000000000000000000000000000000000000000..52a238e5ed8a1be949e58f205ca2b89fa065c73a
mode 100644,000000..100644
--- /dev/null
@@@ -1,77 -1,0 +1,77 @@@
- ```bash
 +---
 +title: Alternative Templating Languages
 +linktitle: Alternative Templating
 +description: In addition to Go templates, Hugo supports the powerful Ace templating from @yosssi and Amber templating from @eknkc.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-20
 +categories: [templates]
 +#tags: [amber,ace,templating languages]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 170
 +weight: 170
 +sections_weight: 170
 +draft: false
 +aliases: [/templates/ace/,/templates/amber/]
 +toc: true
 +---
 +
 +## Ace Templates
 +
 +For template documentation, follow the links from the [Ace project](https://github.com/yosssi/ace).
 +
 +* Ace templates must be named with the ace-suffix; e.g., `list.ace`
 +* It's possible to use both Go templates and Ace templates side by side and even include one into the other
 +* Full Go template syntax support, including all the useful helper [template functions][]
 +* Partials can be included both with the Ace and the Go template syntax. For example, the following two will have the same output in Ace:
 +    * `= include partials/foo.html .`
 +    * `{{ partial "foo" . }}`
 +
 +One noticeable difference between Ace and the other templating engines in Hugo is [Ace's inheritance support through base and inner templates][aceinheritance].
 +
 +In Hugo, the Ace base template will be chosen with the same rule set as for [Go base templates][].
 +
++```
 +.:
 +index.ace
 +
 +./blog:
 +single.ace
 +baseof.ace
 +
 +./_default:
 +baseof.ace  list.ace  single.ace  single-baseof.ace
 +```
 +
 +{{% note %}}
 +Note that the `html` suffix is needed even if the filename is suffixed `ace`. This does not work from inside a theme ([issue #763](https://github.com/gohugoio/hugo/issues/763)).
 +{{% /note %}}
 +
 +Some examples for the layout files above:
 +
 +* Home page: `./index.ace` +  `./_default/baseof.ace`
 +* Single page in the `blog` section: `./blog/single.ace` +  `./blog/baseof.ace`
 +* Single page in another section: `./_default/single.ace` +  `./_default/single-baseof.ace`
 +* Taxonomy page in any section: `./_default/list.ace` +  `./_default/baseof.ace`
 +
 +{{% note %}}
 +In most cases, one `baseof.ace` in `_default` will suffice. An Ace template without a reference to a base section (e.g., `= content`) will be handled as a standalone template.
 +{{% /note %}}
 +
 +## Amber Templates
 +
 +For Amber template documentation, follow the links from the [Amber project][].
 +
 +* Amber templates must be named with the Amber suffix; e.g., `list.amber`
 +* Partials in Amber or HTML can be included with the Amber template syntax:
 +    * `import ../partials/test.html `
 +    * `import ../partials/test_a.amber `
 +
 +[aceinheritance]: https://github.com/yosssi/ace/tree/master/examples/base_inner_template
 +[Amber Project]: https://github.com/eknkc/amber
 +[template functions]: /functions/
 +[Go templates]: /templates/introduction/
 +[Go base templates]: /templates/base/
index e4d595722c7476c6e2644a55f90070ae65d11f1a,0000000000000000000000000000000000000000..b27b1a33d98a80a473c780219ca2e688921c2354
mode 100644,000000..100644
--- /dev/null
@@@ -1,136 -1,0 +1,130 @@@
- {{% code file="layouts/_default/baseof.html" download="baseof.html" %}}
- ```html
 +---
 +title: Base Templates and Blocks
 +linktitle:
 +description: The base and block constructs allow you to define the outer shell of your master templates (i.e., the chrome of the page).
 +godocref: https://golang.org/pkg/text/template/#example_Template_block
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates,fundamentals]
 +#tags: [blocks,base]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +aliases: [/templates/blocks/,/templates/base-templates-and-blocks/]
 +toc: 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.
 +
 +## Base Template Lookup Order
 +
 +The [lookup order][lookup] for base templates is as follows:
 +
 +1. `/layouts/section/<TYPE>-baseof.html`
 +2. `/themes/<THEME>/layouts/section/<TYPE>-baseof.html`
 +3. `/layouts/<TYPE>/baseof.html`
 +4. `/themes/<THEME>/layouts/<TYPE>/baseof.html`
 +5. `/layouts/section/baseof.html`
 +6. `/themes/<THEME>/layouts/section/baseof.html`
 +7. `/layouts/_default/post-baseof.html`
 +8. `/themes/<THEME>/layouts/_default/post-baseof.html`
 +9. `/layouts/_default/baseof.html`
 +10. `/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 `post` section. Hugo picks `layout/section/post.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 `post` base template:
 +
 +1. `/layouts/section/post-baseof.html`
 +2. `/themes/mytheme/layouts/section/post-baseof.html`
 +3. `/layouts/post/baseof.html`
 +4. `/themes/mytheme/layouts/post/baseof.html`
 +5. `/layouts/section/baseof.html`
 +6. `/themes/mytheme/layouts/section/baseof.html`
 +7. `/layouts/_default/post-baseof.html`
 +8. `/themes/mytheme/layouts/_default/post-baseof.html`
 +9. `/layouts/_default/baseof.html`
 +10. `/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 %}}
++{{< code file="layouts/_default/baseof.html" download="baseof.html" >}}
 +<!DOCTYPE html>
 +<html>
 +  <head>
 +    <meta charset="utf-8">
 +    <title>{{ block "title" . }}
 +      <!-- Blocks may include default content. -->
 +      {{ .Site.Title }}
 +    {{ end }}</title>
 +  </head>
 +  <body>
 +    <!-- Code that all your templates share, like a header -->
 +    {{ block "main" . }}
 +      <!-- The part of the page that begins to differ between templates -->
 +    {{ end }}
 +    {{ block "footer" . }}
 +    <!-- More shared code, perhaps a footer but that can be overridden if need be in  -->
 +    {{ end }}
 +  </body>
 +</html>
- {{% code file="layouts/_default/list.html" download="list.html" %}}
- ```html
++{{< /code >}}
 +
 +## Override the Base Template
 +
 +From the above base template, you can define a [default list template][hugolists]. The default list template will inherit all of the code defined above and can then implement its own `"main"` block from:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/list.html" download="list.html" >}}
 +{{ define "main" }}
 +  <h1>Posts</h1>
 +  {{ range .Data.Pages }}
 +    <article>
 +      <h2>{{ .Title }}</h2>
 +      {{ .Content }}
 +    </article>
 +  {{ end }}
 +{{ end }}
- ```html
++{{< /code >}}
 +
 +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:
 +
- {{% code file="layouts/_default/single.html" download="single.html" %}}
- ```html
++```
 +<!-- 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.](https://discourse.gohugo.io/t/baseof-html-block-templates-and-list-types-results-in-empty-pages/5612/6)
 +{{% /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][singletemplate]:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/single.html" download="single.html" >}}
 +{{ define "title" }}
 +  <!-- This will override the default value set in baseof.html; i.e., "{{.Site.Title}}" in the original example-->
 +  {{ .Title }} &ndash; {{ .Site.Title }}
 +{{ end }}
 +{{ define "main" }}
 +  <h1>{{ .Title }}</h1>
 +  {{ .Content }}
 +{{ end }}
++{{< /code >}}
 +
 +[hugolists]: /templates/lists
 +[lookup]: /templates/lookup-order/
 +[rendering the section]: /templates/section-templates/
 +[singletemplate]: /templates/single-page-templates/
index c7f33c429134b2238e6d20b6212cff3e72046e90,0000000000000000000000000000000000000000..b7500809a4d51fb122925d6a1ba412cd8c21c450
mode 100644,000000..100644
--- /dev/null
@@@ -1,255 -1,0 +1,253 @@@
- ```html
 +---
 +title: Data Templates
 +linktitle:
 +description: In addition to Hugo's built-in variables, you can specify your own custom data in templates or shortcodes that pull from both local and dynamic sources.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-12
 +categories: [templates]
 +#tags: [data,dynamic,csv,json,toml,yaml]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 80
 +weight: 80
 +sections_weight: 80
 +draft: false
 +aliases: [/extras/datafiles/,/extras/datadrivencontent/,/doc/datafiles/]
 +toc: true
 +---
 +
 +<!-- 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.
 +
 +## The Data Folder
 +
 +The `data` folder is where you can store additional data for Hugo to use when generating your site. Data files aren't used to generate standalone pages; rather, they're meant to be supplemental to content files. This feature can extend the content in case your front matter fields grow out of control. Or perhaps you want to show a larger dataset in a template (see example below). In both cases, it's a good idea to outsource the data in their own files.
 +
 +These files must be YAML, JSON, or TOML files (using the `.yml`, `.yaml`, `.json`, or `toml` extension). The data will be accessible as a `map` in the `.Site.Data` variable.
 +
 +## Data Files in Themes
 +
 +Data Files can also be used in [Hugo themes][themes] but note that theme data files follow the same logic as other template files in the [Hugo lookup order][lookup] (i.e., given two files with the same name and relative path, the file in the root project `data` directory will override the file in the `themes/<THEME>/data` directory).
 +
 +Therefore, theme authors should take care to not include data files that could be easily overwritten by a user who decides to [customize a theme][customize]. For theme-specific data items that shouldn't be overridden, it can be wise to prefix the folder structure with a namespace; e.g. `mytheme/data/<THEME>/somekey/...`. To check if any such duplicate exists, run hugo with the `-v` flag.
 +
 +The keys in the map created with data templates from data files will be a dot-chained set of `path`, `filename`, and `key` in file (if applicable).
 +
 +This is best explained with an example:
 +
 +## Example: Jaco Pastorius' Solo Discography
 +
 +[Jaco Pastorius](http://en.wikipedia.org/wiki/Jaco_Pastorius_discography) was a great bass player, but his solo discography is short enough to use as an example. [John Patitucci](http://en.wikipedia.org/wiki/John_Patitucci) is another bass giant.
 +
 +The example below is a bit contrived, but it illustrates the flexibility of data Files. This example uses TOML as its file format with the two following data files:
 +
 +* `data/jazz/bass/jacopastorius.toml`
 +* `data/jazz/bass/johnpatitucci.toml`
 +
 +`jacopastorius.toml` contains the content below. `johnpatitucci.toml` contains a similar list:
 +
 +```
 +discography = [
 +"1974 – Modern American Music … Period! The Criteria Sessions",
 +"1974 – Jaco",
 +"1976 - Jaco Pastorius",
 +"1981 - Word of Mouth",
 +"1981 - The Birthday Concert (released in 1995)",
 +"1982 - Twins I & II (released in 1999)",
 +"1983 - Invitation",
 +"1986 - Broadway Blues (released in 1998)",
 +"1986 - Honestly Solo Live (released in 1990)",
 +"1986 - Live In Italy (released in 1991)",
 +"1986 - Heavy'n Jazz (released in 1992)",
 +"1991 - Live In New York City, Volumes 1-7.",
 +"1999 - Rare Collection (compilation)",
 +"2003 - Punk Jazz: The Jaco Pastorius Anthology (compilation)",
 +"2007 - The Essential Jaco Pastorius (compilation)"
 +]
 +```
 +
 +The list of bass players can be accessed via `.Site.Data.jazz.bass`, a single bass player by adding the filename without the suffix, e.g. `.Site.Data.jazz.bass.jacopastorius`.
 +
 +You can now render the list of recordings for all the bass players in a template:
 +
- ```golang
++```
 +{{ range $.Site.Data.jazz.bass }}
 +   {{ partial "artist.html" . }}
 +{{ end }}
 +```
 +
 +And then in the `partial/artist.html`:
 +
 +```
 +<ul>
 +{{ range .discography }}
 +  <li>{{ . }}</li>
 +{{ end }}
 +</ul>
 +```
 +
 +Discover a new favorite bass player? Just add another `.toml` file in the same directory.
 +
 +## Example: Accessing Named Values in a Data File
 +
 +Assume you have the following YAML structure in your `User0123.yml` data file located directly in `data/`:
 +
 +```
 +Name: User0123
 +"Short Description": "He is a **jolly good** fellow."
 +Achievements:
 +  - "Can create a Key, Value list from Data File"
 +  - "Learns Hugo"
 +  - "Reads documentation"
 +```
 +
 +You can use the following code to render the `Short Description` in your layout::
 +
 +```
 +<div>Short Description of {{.Site.Data.User0123.Name}}: <p>{{ index .Site.Data.User0123 "Short Description" | markdownify }}</p></div>
 +```
 +
 +Note the use of the [`markdownify` template function][markdownify]. This will send the description through the Blackfriday Markdown rendering engine.
 +
 +<!-- begin "Data-drive Content" page -->
 +
 +## Data-Driven Content
 +
 +In addition to the [data files](/extras/datafiles/) feature, Hugo also a "data-driven content" feature, which lets you load any [JSON](http://www.json.org/) or [CSV](http://en.wikipedia.org/wiki/Comma-separated_values) file from nearly any resource.
 +
 +Data-driven content currently consists of two functions, `getJSON` and `getCSV`, which are available in all template files.
 +
 +## Implementation details
 +
 +### Call the Functions with a URL
 +
 +In your template, call the functions like this:
 +
- ```html
++```
 +{{ $dataJ := getJSON "url" }}
 +{{ $dataC := getCSV "separator" "url" }}
 +```
 +
 +If you use a prefix or postfix for the URL, the functions accept [variadic arguments][variadic]:
 +
 +```
 +{{ $dataJ := getJSON "url prefix" "arg1" "arg2" "arg n" }}
 +{{ $dataC := getCSV  "separator" "url prefix" "arg1" "arg2" "arg n" }}
 +```
 +
 +The separator for `getCSV` must be put in the first position and can only be one character long.
 +
 +All passed arguments will be joined to the final URL:
 +
- ```html
++```
 +{{ $urlPre := "https://api.github.com" }}
 +{{ $gistJ := getJSON $urlPre "/users/GITHUB_USERNAME/gists" }}
 +```
 +
 +This will resolve internally to the following:
 +
- ```html
++```
 +{{ $gistJ := getJSON "https://api.github.com/users/GITHUB_USERNAME/gists" }}
 +```
 +
 +Finally, you can range over an array. This example will output the
 +first 5 gists for a GitHub user:
 +
- {{% code file="layouts/partials/get-csv.html" %}}
- ```html
++```
 +<ul>
 +  {{ $urlPre := "https://api.github.com" }}
 +  {{ $gistJ := getJSON $urlPre "/users/GITHUB_USERNAME/gists" }}
 +  {{ range first 5 $gistJ }}
 +    {{ if .public }}
 +      <li><a href="{{ .html_url }}" target="_blank">{{ .description }}</a></li>
 +    {{ end }}
 +  {{ end }}
 +</ul>
 +```
 +
 +### Example for CSV files
 +
 +For `getCSV`, the one-character-long separator must be placed in the first position followed by the URL. The following is an example of creating an HTML table in a [partial template][partials] from a published CSV:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/get-csv.html" >}}
 +  <table>
 +    <thead>
 +      <tr>
 +      <th>Name</th>
 +      <th>Position</th>
 +      <th>Salary</th>
 +      </tr>
 +    </thead>
 +    <tbody>
 +    {{ $url := "http://a-big-corp.com/finance/employee-salaries.csv" }}
 +    {{ $sep := "," }}
 +    {{ range $i, $r := getCSV $sep $url }}
 +      <tr>
 +        <td>{{ index $r 0 }}</td>
 +        <td>{{ index $r 1 }}</td>
 +        <td>{{ index $r 2 }}</td>
 +      </tr>
 +    {{ end }}
 +    </tbody>
 +  </table>
++{{< /code >}}
 +
 +The expression `{{index $r number}}` must be used to output the nth-column from the current row.
 +
 +### Cache URLs
 +
 +Each downloaded URL will be cached in the default folder `$TMPDIR/hugo_cache/`. The variable `$TMPDIR` will be resolved to your system-dependent temporary directory.
 +
 +With the command-line flag `--cacheDir`, you can specify any folder on your system as a caching directory.
 +
 +You can also set `cacheDir` in the [main configuration file][config].
 +
 +If you don't like caching at all, you can fully disable caching with the command line flag `--ignoreCache`.
 +
 +### Authentication When Using REST URLs
 +
 +Currently, you can only use those authentication methods that can be put into an URL. [OAuth][] and other authentication methods are not implemented.
 +
 +### Load Local files
 +
 +To load local files with `getJSON` and `getCSV`, the source files must reside within Hugo's working directory. The file extension does not matter, but the content does.
 +
 +It applies the same output logic as above in [Calling the Functions with a URL](#calling-the-functions-with-a-url).
 +
 +## LiveReload with Data Files
 +
 +There is no chance to trigger a [LiveReload][] when the content of a URL changes. However, when a *local* file changes (i.e., `data/*` and `themes/<THEME>/data/*`), a LiveReload will be triggered. Symlinks are not supported. Note too that because downloading of data takes a while, Hugo stops processing your Markdown files until the data download has completed.
 +
 +{{% warning "URL Data and LiveReload" %}}
 +If you change any local file and the LiveReload is triggered, Hugo will read the data-driven (URL) content from the cache. If you have disabled the cache (i.e., by running the server with `hugo server --ignoreCache`), Hugo will re-download the content every time LiveReload triggers. This can create *huge* traffic. You may reach API limits quickly.
 +{{% /warning %}}
 +
 +## Examples of Data-driven Content
 +
 +- Photo gallery JSON powered: [https://github.com/pcdummy/hugo-lightslider-example](https://github.com/pcdummy/hugo-lightslider-example)
 +- GitHub Starred Repositories [in a post](https://github.com/SchumacherFM/blog-cs/blob/master/content%2Fposts%2Fgithub-starred.md) using data-driven content in a [custom short code](https://github.com/SchumacherFM/blog-cs/blob/master/layouts%2Fshortcodes%2FghStarred.html).
 +
 +## Specs for Data Formats
 +
 +* [TOML Spec][toml]
 +* [YAML Spec][yaml]
 +* [JSON Spec][json]
 +* [CSV Spec][csv]
 +
 +[config]: /getting-started/configuration/
 +[csv]: https://tools.ietf.org/html/rfc4180
 +[customize]: /themes/customizing/
 +[json]: /documents/ecma-404-json-spec.pdf
 +[LiveReload]: /getting-started/usage/#livereload
 +[lookup]: /templates/lookup-order/
 +[markdownify]: /functions/markdownify/
 +[OAuth]: http://en.wikipedia.org/wiki/OAuth
 +[partials]: /templates/partials/
 +[themes]: /themes/
 +[toml]: https://github.com/toml-lang/toml
 +[variadic]: http://en.wikipedia.org/wiki/Variadic_function
 +[vars]: /variables/
 +[yaml]: http://yaml.org/spec/
index 4efb23176eb9dcb991c7a493107a0fe82ba931e1,0000000000000000000000000000000000000000..ffe577233002b8fe2250b1a34d07a421e3f61339
mode 100644,000000..100644
--- /dev/null
@@@ -1,118 -1,0 +1,114 @@@
- {{% code file="layouts/shortcodes/directoryindex.html" download="directoryindex.html" %}}
- ```html
 +---
 +title: Local File Templates
 +linktitle: Local File Templates
 +description: Hugo's `readerDir` and `readFile` functions make it easy to traverse your project's directory structure and write file contents to your templates.
 +godocref: https://golang.org/pkg/os/#FileInfo
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [files,directories]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 110
 +weight: 110
 +sections_weight: 110
 +draft: false
 +aliases: [/extras/localfiles/,/templates/local-files/]
 +toc: true
 +---
 +
 +## Traverse Local Files
 +
 +With Hugo's [`readDir` and `readFile` template functions][reads], you can traverse your website's files on your server.
 +
 +## Use `readDir`
 +
 +The [`readDir` function][reads] returns an array of [`os.FileInfo`][osfileinfo]. It takes the file's `path` as a single string argument. This path can be to any directory of your website (i.e., as found on your server's file system).
 +
 +Whether the path is absolute or relative does not matter because---at least for `readDir`---the root of your website (typically `./public/`) in effect becomes both:
 +
 +1. The file system root
 +2. The current working directory
 +
 +### `readDir` Example: List Directory Files
 +
 +This shortcode creates a link to each of the files in a directory---display as the file's basename---along with the file's size in bytes.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/shortcodes/directoryindex.html" download="directoryindex.html" >}}
 +{{< readfile file="/themes/gohugoioTheme/layouts/shortcodes/directoryindex.html" >}}
- ```html
++{{< /code >}}
 +
 +You can then call the shortcode as follows inside of your content's markup:
 +
- ```html
++```
 +{{</* directoryindex path="/static/css" pathURL="/css" */>}}
 +```
 +
 +The above shortcode [is part of the code for the Hugo docs][dirindex]. Here it lists this site's CSS files:
 +
 +{{< directoryindex path="/themes/gohugoioTheme/static/dist" pathURL="/css" >}}
 +
 +{{% note "Slashes are Important" %}}
 +The initial slash `/` in `pathURL` is important in the `directoryindex` shortcode. Otherwise, `pathURL` becomes relative to the current web page.
 +{{% /note %}}
 +
 +## Use `readFile`
 +
 +The [`readfile` function][reads] reads a file from disk and converts it into a string to be manipulated by other Hugo functions or added as-is. `readFile` takes the file, including path, as an argument passed to the function.
 +
 +To use the `readFile` function in your templates, make sure the path is relative to your *Hugo project's root directory*:
 +
- {{% code file="layouts/shortcodes/readfile.html" download="readfile.html" %}}
- ```
++```
 +{{ readFile "/content/templates/local-file-templates" }}
 +```
 +
 +### `readFile` Example: Add a Project File to Content
 +
 +As `readFile` is a function, it is only available to you in your templates and not your content. However, we can create a simple [shortcode template][sct] that calls `readFile`, passes the first argument through the function, and then allows an optional second argument to send the file through the Blackfriday markdown processor. The pattern for adding this shortcode to your content will be as follows:
 +
 +```
 +{{</* readfile file="/path/to/local/file.txt" markdown="true" */>}}
 +```
 +
 +{{% warning %}}
 +If you are going to create [custom shortcodes](/templates/shortcode-templates/) with `readFile` for a theme, note that usage of the shortcode will refer to the project root and *not* your `themes` directory.
 +{{% /warning %}}
 +
 +Here is the templating for our new `readfile` shortcode:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/shortcodes/readfile.html" download="readfile.html" >}}
 +{{< readfile file="/themes/gohugoioTheme/layouts/shortcodes/readfile.html">}}
- ```markdown
++{{< /code >}}
 +
 +This `readfile` shortcode is [also part of the Hugo docs][readfilesource]. So is [`testing.txt`][testfile], which we will call in this example by passing it into our new `readfile` shortcode as follows:
 +
 +```
 +{{</* readfile file="/content/readfiles/testing.txt" */>}}
 +```
 +
 +The output "string" for this shortcode declaration will be the following:
 +
- ```html
++```
 +{{< readfile file="/content/readfiles/testing.txt" >}}
 +```
 +
 +However, if we want Hugo to pass this string through Blackfriday, we should add the `markdown="true"` optional parameter:
 +
++```
 +{{</* readfile file="/content/readfiles/testing.txt" markdown="true" */>}}
 +```
 +
 +And here is the result as [called directly in the Hugo docs][] and rendered for display:
 +
 +{{< readfile file="/content/readfiles/testing.txt" markdown="true">}}
 +
 +[called directly in the Hugo docs]: https://github.com/gohugoio/hugo/blob/master/docs/content/templates/files.md
 +[dirindex]: https://github.com/gohugoio/hugo/blob/master/docs/layouts/shortcodes/directoryindex.html
 +[osfileinfo]: https://golang.org/pkg/os/#FileInfo
 +[reads]: /functions/readfile/
 +[sc]: /content-management/shortcodes/
 +[sct]: /templates/shortcode-templates/
 +[readfilesource]: https://github.com/gohugoio/hugo/blob/master/
 +[testfile]: https://github.com/gohugoio/hugo/blob/master/docs/testfile
index 48f0d7781d442ef867d6eb43e86f47ecd0301665,0000000000000000000000000000000000000000..c3ff08eb3e813dd523771708186f0d5c560b428d
mode 100644,000000..100644
--- /dev/null
@@@ -1,81 -1,0 +1,79 @@@
- {{% code file="layouts/index.html" download="index.html" %}}
- ```html
 +---
 +title: Homepage Template
 +linktitle: Homepage Template
 +description: The homepage of a website is often formatted differently than the other pages. For this reason, Hugo makes it easy for you to define your new site's homepage as a unique template.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [homepage]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +aliases: [/layout/homepage/,/templates/homepage-template/]
 +toc: true
 +---
 +
 +Homepage is a `Page` and therefore has all the [page variables][pagevars] and [site variables][sitevars] available for use.
 +
 +{{% 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 %}}
 +
 +## Homepage Template Lookup Order
 +
 +The [lookup order][lookup] for the homepage template is as follows:
 +
 +1. `/layouts/index.html`
 +2. `/layouts/_default/list.html`
 +3. `/themes/<THEME>/layouts/index.html`
 +4. `/themes/<THEME>/layouts/_default/list.html`
 +
 +## Add Content and Front Matter to the Homepage
 +
 +The homepage, similar to other [list pages in Hugo][lists], accepts content and front matter from an `_index.md` file. This file should live at the root of your `content` folder (i.e., `content/_index.md`). You can then add body copy and metadata to your homepage the way you would any other content file.
 +
 +See the homepage template below or [Content Organization][contentorg] for more information on the role of `_index.md` in adding content and front matter to list pages.
 +
 +## `.Data.Pages` on the Homepage
 +
 +In addition to the standard [page variables][pagevars], the homepage template has access to *all* site content via `.Data.Pages`.
 +
 +## Example Homepage Template
 +
 +The following is an example of a homepage template that uses [partial][partials], [base][] templates, and a content file at `content/_index.md` to populate the `{{.Title}}` and `{{Content}}` [page variables][pagevars].
 +
- ```
- {{% /code %}}
++{{< code file="layouts/index.html" download="index.html" >}}
 +{{ define "main" }}
 +    <main aria-role="main">
 +      <header class="homepage-header">
 +        <h1>{{.Title}}</h1>
 +        {{ with .Params.subtitle }}
 +        <span class="subtitle">{{.}}</span>
 +        {{ end }}
 +      </header>
 +      <div class="homepage-content">
 +        <!-- Note that the content for index.html, as a sort of list page, will pull from content/_index.md -->
 +        {{.Content}}
 +      </div>
 +      <div>
 +        <!-- Note that .Data.Pages is the equivalent of .Site.Pages on the homepage template. -->
 +        {{ range first 10 .Data.Pages }}
 +            {{ .Render "summary"}}
 +        {{ end }}
 +      </div>
 +    </main>
 +{{ end }}
++{{< /code >}}
 +
 +[base]: /templates/base/
 +[contentorg]: /content-management/organization/
 +[lists]: /templates/lists/
 +[lookup]: /templates/lookup-order/
 +[pagevars]: /variables/page/
 +[partials]: /templates/partials/
 +[sitevars]: /variables/site/
index ad26e3a6622316178a60da24887ef6fe62b79d1a,0000000000000000000000000000000000000000..022e95c3c5fb71e4073aa57c898cca08587f466a
mode 100644,000000..100644
--- /dev/null
@@@ -1,137 -1,0 +1,135 @@@
- ```toml
 +---
 +title: Internal Templates
 +linktitle: Internal Templates
 +description: Hugo ships with a group of boilerplate templates that cover the most common use cases for static websites.
 +date: 2017-03-06
 +publishdate: 2017-03-06
 +lastmod: 2017-03-06
 +categories: [templates]
 +#tags: [internal, analytics,]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 168
 +weight: 168
 +sections_weight: 168
 +draft: false
 +aliases: []
 +toc: true
 +wip: true
 +---
 +<!-- reference: https://discourse.gohugo.io/t/lookup-order-for-partials/5705/6
 +code: https://github.com/gohugoio/hugo/blob/e445c35d6a0c7f5fc2f90f31226cd1d46e048bbc/tpl/template_embedded.go#L147 -->
 +
 +{{% warning %}}
 +While the following internal templates are called similar to partials, they do *not* observe the partial template lookup order.
 +{{% /warning %}}
 +
 +## Google Analytics
 +
 +Hugo ships with internal templates for Google Analytics tracking, including both synchronous and asynchronous tracking codes.
 +
 +### Configure Google Analytics
 +
 +Provide your tracking id in your configuration file:
 +
- ```yml
++```
 +googleAnalytics = "UA-123-45"
 +```
 +
- ```golang
++```
 +googleAnalytics: "UA-123-45"
 +```
 +
 +### Use the Google Analytics Template
 +
 +You can then include the Google Analytics internal template:
 +
- ```golang
++```
 +{{ template "_internal/google_analytics.html" . }}
 +```
 +
 +
- ```toml
++```
 +{{ template "_internal/google_analytics_async.html" . }}
 +```
 +
 +## Disqus
 +
 +Hugo also ships with an internal template for [Disqus comments][disqus], a popular commenting system for both static and dynamic websites. In order to effectively use Disqus, you will need to secure a Disqus "shortname" by [signing up for the free service][disqussignup].
 +
 +### Configure Disqus
 +
 +To use Hugo's Disqus template, you first need to set a single value in your site's `config.toml` or `config.yml`:
 +
- ```yaml
++```
 +disqusShortname = "yourdiscussshortname"
 +```
 +
- ```golang
++```
 +disqusShortname: "yourdiscussshortname"
 +```
 +
 +You also have the option to set the following in the front matter for a given piece of content:
 +
 +* `disqus_identifier`
 +* `disqus_title`
 +* `disqus_url`
 +
 +### Use the Disqus Template
 +
 +To add Disqus, include the following line in templates where you want your comments to appear:
 +
- {{% code file="layouts/partials/disqus.html" download="disqus.html" %}}
- ```html
++```
 +{{ template "_internal/disqus.html" . }}
 +```
 +
 +### Conditional Loading of Disqus Comments
 +
 +Users have noticed that enabling Disqus comments when running the Hugo web server on `localhost` (i.e. via `hugo server`) causes the creation of unwanted discussions on the associated Disqus account.
 +
 +You can create the following `layouts/partials/disqus.html`:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/disqus.html" download="disqus.html" >}}
 +<div id="disqus_thread"></div>
 +<script type="text/javascript">
 +
 +(function() {
 +    // Don't ever inject Disqus on localhost--it creates unwanted
 +    // discussions from 'localhost:1313' on your Disqus account...
 +    if (window.location.hostname == "localhost")
 +        return;
 +
 +    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
 +    var disqus_shortname = '{{ .Site.DisqusShortname }}';
 +    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
 +    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
 +})();
 +</script>
 +<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
 +<a href="http://disqus.com/" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
- ```golang
++{{< /code >}}
 +
 +The `if` statement skips the initialization of the Disqus comment injection when you are running on `localhost`.
 +
 +You can then render your custom Disqus partial template as follows:
 +
++```
 +{{ partial "disqus.html" . }}
 +```
 +
 +```
 +_internal/_default/robots.txt
 +_internal/_default/rss.xml
 +_internal/_default/sitemap.xml
 +_internal/_default/sitemapindex.xml
 +
 +_internal/disqus.html
 +_internal/google_news.html
 +_internal/google_analytics.html
 +_internal/google_analytics_async.html
 +_internal/opengraph.html
 +_internal/pagination.html
 +_internal/schema.html
 +_internal/twitter_cards.html
 +```
index b3f36ded6f33392cf6a0c096455c6ccb047262ce,0000000000000000000000000000000000000000..647d580c4b656618a6a0b065ccc40aa06668c6a5
mode 100644,000000..100644
--- /dev/null
@@@ -1,498 -1,0 +1,486 @@@
- ```golang
 +---
 +title: Introduction to Hugo Templating
 +linktitle: Introduction
 +description: Hugo uses Go's `html/template` and `text/template` libraries as the basis for the templating.
 +godocref: https://golang.org/pkg/html/template/
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-25
 +categories: [templates,fundamentals]
 +#tags: [go]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/templates/introduction/,/layouts/introduction/,/layout/introduction/, /templates/go-templates/]
 +toc: true
 +---
 +
 +{{% note %}}
 +The following is only a primer on Go templates. For an in-depth look into Go templates, check the official [Go docs](http://golang.org/pkg/html/template/).
 +{{% /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.
 +
 +## Basic Syntax
 +
 +Golang templates are HTML files with the addition of [variables][variables] and [functions][functions]. Golang template variables and functions are accessible within `{{ }}`.
 +
 +### Access a Predefined Variable
 +
- ```golang
++```
 +{{ foo }}
 +```
 +
 +Parameters for functions are separated using spaces. The following example calls the `add` function with inputs of `1` and `2`:
 +
- ```golang
++```
 +{{ add 1 2 }}
 +```
 +
 +#### Methods and Fields are Accessed via dot Notation
 +
 +Accessing the Page Parameter `bar` defined in a piece of content's [front matter][].
 +
- ```golang
++```
 +{{ .Params.bar }}
 +```
 +
 +#### Parentheses Can be Used to Group Items Together
 +
- ```golang
++```
 +{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
 +```
 +
 +## Variables
 +
 +Each Go template gets a data object. In Hugo, each template is passed a `Page`. See [variables][] for more information.
 +
 +This is how you access a `Page` variable from a template:
 +
- ```golang
++```
 +<title>{{ .Title }}</title>
 +```
 +
 +Values can also be stored in custom variables and referenced later:
 +
- ```golang
++```
 +{{ $address := "123 Main St."}}
 +{{ $address }}
 +```
 +
 +{{% warning %}}
 +Variables defined inside `if` conditionals and similar are not visible on the outside. See [https://github.com/golang/go/issues/10608](https://github.com/golang/go/issues/10608).
 +
 +Hugo has created a workaround for this issue in [Scratch](/functions/scratch).
 +
 +{{% /warning %}}
 +
 +## Functions
 +
 +Go templates only ship with a few basic functions but also provide a mechanism for applications to extend the original set.
 +
 +[Hugo template functions][functions] provide additional functionality specific to building websites. Functions are called by using their name followed by the required parameters separated by spaces. Template functions cannot be added without recompiling Hugo.
 +
 +### Example 1: Adding Numbers
 +
- ```golang
++```
 +{{ add 1 2 }}
 +=> 3
 +```
 +
 +### Example 2: Comparing Numbers
 +
- ```golang
++```
 +{{ lt 1 2 }}
 +=> true (i.e., since 1 is less than 2)
 +```
 +
 +Note that both examples make us of Go template's [math functions][].
 +
 +{{% note "Additional Boolean Operators" %}}
 +There are more boolean operators than those listed in the Hugo docs in the [Golang template documentation](http://golang.org/pkg/text/template/#hdr-Functions).
 +{{% /note %}}
 +
 +## Includes
 +
 +When including another template, you will pass to it the data it will be
 +able to access. To pass along the current context, please remember to
 +include a trailing dot. The templates location will always be starting at
 +the `/layout/` directory within Hugo.
 +
 +### Template and Partial Examples
 +
- ```golang
++```
 +{{ template "partials/header.html" . }}
 +```
 +
 +Starting with Hugo v0.12, you may also use the `partial` call
 +for [partial templates][partials]:
 +
- ```golang
++```
 +{{ partial "header.html" . }}
 +```
 +
 +## Logic
 +
 +Go templates provide the most basic iteration and conditional logic.
 +
 +### Iteration
 +
 +Just like in Go, the Go templates make heavy use of `range` to iterate over
 +a map, array, or slice. The following are different examples of how to use
 +range.
 +
 +#### Example 1: Using Context
 +
- ```golang
++```
 +{{ range array }}
 +    {{ . }}
 +{{ end }}
 +```
 +
 +#### Example 2: Declaring Value => Variable name
 +
- ```golang
++```
 +{{range $element := array}}
 +    {{ $element }}
 +{{ end }}
 +```
 +
 +#### Example 3: Declaring Key-Value Variable Name
 +
- ```golang
++```
 +{{range $index, $element := array}}
 +   {{ $index }}
 +   {{ $element }}
 +{{ end }}
 +```
 +
 +### Conditionals
 +
 +`if`, `else`, `with`, `or`, and `and` provide the framework for handling conditional logic in Go Templates. Like `range`, each statement is closed with an `{{end}}`.
 +
 +Go Templates treat the following values as false:
 +
 +* false
 +* 0
 +* any zero-length array, slice, map, or string
 +
 +#### Example 1: `if`
 +
- ```golang
++```
 +{{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
 +```
 +
 +#### Example 2: `if` … `else`
 +
- ```golang
++```
 +{{ if isset .Params "alt" }}
 +    {{ index .Params "alt" }}
 +{{else}}
 +    {{ index .Params "caption" }}
 +{{ end }}
 +```
 +
 +#### Example 3: `and` & `or`
 +
- ```golang
++```
 +{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
 +```
 +
 +#### Example 4: `with`
 +
 +An alternative way of writing "`if`" and then referencing the same value
 +is to use "`with`" instead. `with` rebinds the context `.` within its scope
 +and skips the block if the variable is absent.
 +
 +The first example above could be simplified as:
 +
- ```golang
++```
 +{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
 +```
 +
 +#### Example 5: `if` … `else if`
 +
- ```golang
++```
 +{{ if isset .Params "alt" }}
 +    {{ index .Params "alt" }}
 +{{ else if isset .Params "caption" }}
 +    {{ index .Params "caption" }}
 +{{ end }}
 +```
 +
 +## Pipes
 +
 +One of the most powerful components of Go templates is the ability to stack actions one after another. This is done by using pipes. Borrowed from Unix pipes, the concept is simple: each pipeline's output becomes the input of the following pipe.
 +
 +Because of the very simple syntax of Go templates, the pipe is essential to being able to chain together function calls. One limitation of the pipes is that they can only work with a single value and that value becomes the last parameter of the next pipeline.
 +
 +A few simple examples should help convey how to use the pipe.
 +
 +### Example 1: `shuffle`
 +
 +The following two examples are functionally the same:
 +
- ```golang
++```
 +{{ shuffle (seq 1 5) }}
 +```
 +
 +
- ```golang
++```
 +{{ (seq 1 5) | shuffle }}
 +```
 +
 +### Example 2: `index`
 +
 +The following accesses the page parameter called "disqus_url" and escapes the HTML. This example also uses the [`index` function][index], which is built into Go templates:
 +
- ```golang
++```
 +{{ index .Params "disqus_url" | html }}
 +```
 +
 +### Example 3: `or` with `isset`
 +
- ```golang
++```
 +{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr") }}
 +Stuff Here
 +{{ end }}
 +```
 +
 +Could be rewritten as
 +
- ```golang
++```
 +{{ if isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" }}
 +Stuff Here
 +{{ end }}
 +```
 +
 +### Example 4: Internet Explorer Conditional Comments
 +
 +By default, Go Templates remove HTML comments from output. This has the unfortunate side effect of removing Internet Explorer conditional comments. As a workaround, use something like this:
 +
- {{% code file="tags-range-with-page-variable.html" %}}
- ```html
++```
 +{{ "<!--[if lt IE 9]>" | safeHTML }}
 +  <script src="html5shiv.js"></script>
 +{{ "<![endif]-->" | safeHTML }}
 +```
 +
 +Alternatively, you can use the backtick (`` ` ``) to quote the IE conditional comments, avoiding the tedious task of escaping every double quotes (`"`) inside, as demonstrated in the [examples](http://golang.org/pkg/text/template/#hdr-Examples) in the Go text/template documentation:
 +
 +```
 +{{ `<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->` | safeHTML }}
 +```
 +
 +## Context (aka "the dot")
 +
 +The most easily overlooked concept to understand about Go templates is that `{{ . }}` always refers to the current context. In the top level of your template, this will be the data set made available to it. Inside of an iteration, however, it will have the value of the current item in the loop; i.e., `{{ . }}` will no longer refer to the data available to the entire page. If you need to access page-level data (e.g., page params set in front matter) from within the loop, you will likely want to do one of the following:
 +
 +### 1. Define a Variable Independent of Context
 +
 +The following shows how to define a variable independent of the context.
 +
- ```
- {{% /code %}}
++{{< code file="tags-range-with-page-variable.html" >}}
 +{{ $title := .Site.Title }}
 +<ul>
 +{{ range .Params.tags }}
 +    <li>
 +        <a href="/tags/{{ . | urlize }}">{{ . }}</a>
 +        - {{ $title }}
 +    </li>
 +{{ end }}
 +</ul>
- {{% code file="range-through-tags-w-global.html" %}}
- ```hbs
++{{< /code >}}
 +
 +{{% note %}}
 +Notice how once we have entered the loop (i.e. `range`), the value of `{{ . }}` has changed. We have defined a variable outside of the loop (`{{$title}}`) that we've assigned a value so that we have access to the value from within the loop as well.
 +{{% /note %}}
 +
 +### 2. Use `$.` to Access the Global Context
 +
 +`$` has special significance in your templates. `$` is set to the starting value of `.` ("the dot") by default. This is a [documented feature of Go text/template][dotdoc]. This means you have access to the global context from anywhere. Here is an equivalent example of the preceding code block but now using `$` to grab `.Site.Title` from the global context:
 +
- ```
- {{% /code %}}
++{{< code file="range-through-tags-w-global.html" >}}
 +<ul>
 +{{ range .Params.tags }}
 +  <li>
 +    <a href="/tags/{{ . | urlize }}">{{ . }}</a>
 +            - {{ $.Site.Title }}
 +  </li>
 +{{ end }}
 +</ul>
- ```html
++{{< /code >}}
 +
 +{{% warning "Don't Redefine the Dot" %}}
 +The built-in magic of `$` would cease to work if someone were to mischievously redefine the special character; e.g. `{{ $ := .Site }}`. *Don't do it.* You may, of course, recover from this mischief by using `{{ $ := . }}` in a global context to reset `$` to its default value.
 +{{% /warning %}}
 +
 +## 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 will include the newlines and horizontal tab in its HTML output:
 +
- ```html
++```
 +<div>
 +  {{ .Title }}
 +</div>
 +```
 +
 +Which will output:
 +
- ```html
++```
 +<div>
 +  Hello, World!
 +</div>
 +```
 +
 +Leveraging the `-` in the following example will remove the extra white space surrounding the `.Title` variable and remove the newline:
 +
- ```html
++```
 +<div>
 +  {{- .Title -}}
 +</div>
 +```
 +
 +Which then outputs:
 +
- ```yaml
++```
 +<div>Hello, World!</div>
 +```
 +
 +Go considers the following characters whitespace:
 +
 +* <kbd>space</kbd>
 +* horizontal <kbd>tab</kbd>
 +* carriage <kbd>return</kbd>
 +* newline
 +
 +## Hugo Parameters
 +
 +Hugo provides the option of passing values to your template layer through your [site configuration][config] (i.e. for site-wide values) or through the metadata of each specific piece of content (i.e. the [front matter][]). You can define any values of any type and use them however you want in your templates, as long as the values are supported by the front matter format specified via `metaDataFormat` in your configuration file.
 +
 +## Use Content (`Page`) Parameters
 +
 +You can provide variables to be used by templates in individual content's [front matter][].
 +
 +An example of this is used in the Hugo docs. Most of the pages benefit from having the table of contents provided, but sometimes the table of contents doesn't make a lot of sense. We've defined a `notoc` variable in our front matter that will prevent a table of contents from rendering when specifically set to `true`.
 +
 +Here is the example front matter:
 +
- {{% code file="layouts/partials/toc.html" download="toc.html" %}}
- ```html
++```
 +---
 +title: Roadmap
 +lastmod: 2017-03-05
 +date: 2013-11-18
 +notoc: true
 +---
 +```
 +
 +Here is an example of corresponding code that could be used inside a `toc.html` [partial template][partials]:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/toc.html" download="toc.html" >}}
 +{{ if not .Params.notoc }}
 +<aside>
 +  <header>
 +    <a href="#{{.Title | urlize}}">
 +    <h3>{{.Title}}</h3>
 +    </a>
 +  </header>
 +  {{.TableOfContents}}
 +</aside>
 +<a href="#" id="toc-toggle"></a>
 +{{end}}
- {{% code file="config.yaml" %}}
- ```yaml
++{{< /code >}}
 +
 +We want the *default* behavior to be for pages to include a TOC unless otherwise specified. This template checks to make sure that the `notoc:` field in this page's front matter is not `true`.
 +
 +## Use Site Configuration Parameters
 +
 +You can arbitrarily define as many site-level parameters as you want in your [site's configuration file][config]. These parameters are globally available in your templates.
 +
 +For instance, you might declare the following:
 +
- ```
- {{% /code %}}
++{{< code file="config.yaml" >}}
 +params:
 +  copyrighthtml: "Copyright &#xA9; 2017 John Doe. All Rights Reserved."
 +  twitteruser: "spf13"
 +  sidebarrecentlimit: 5
- ```html
++{{< /code >}}
 +
 +Within a footer layout, you might then declare a `<footer>` that is only rendered if the `copyrighthtml` parameter is provided. If it *is* provided, you will then need to declare the string is safe to use via the [`safeHTML` function][safehtml] so that the HTML entity is not escaped again. This would let you easily update just your top-level config file each January 1st, instead of hunting through your templates.
 +
- {{% code file="layouts/partials/twitter.html" %}}
- ```html
++```
 +{{if .Site.Params.copyrighthtml}}<footer>
 +<div class="text-center">{{.Site.Params.CopyrightHTML | safeHTML}}</div>
 +</footer>{{end}}
 +```
 +
 +An alternative way of writing the "`if`" and then referencing the same value is to use [`with`][with] instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/twitter.html" >}}
 +{{with .Site.Params.twitteruser}}
 +<div>
 +  <a href="https://twitter.com/{{.}}" rel="author">
 +  <img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}" alt="Twitter"></a>
 +</div>
 +{{end}}
- ```html
++{{< /code >}}
 +
 +Finally, you can pull "magic constants" out of your layouts as well. The following uses the [`first`][first] function, as well as the [`.RelPermalink`][relpermalink] page variable and the [`.Site.Pages`][sitevars] site variable.
 +
- {{% code file="layouts/partials/upcoming-events.html" download="upcoming-events.html" %}}
- ```html
++```
 +<nav>
 +  <h1>Recent Posts</h1>
 +  <ul>
 +  {{- range first .Site.Params.SidebarRecentLimit .Site.Pages -}}
 +    <li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
 +  {{- end -}}
 +  </ul>
 +</nav>
 +```
 +
 +## Example: Show Only Upcoming Events
 +
 +Go allows you to do more than what's shown here. Using Hugo's [`where` function][where] and Go built-ins, we can list only the items from `content/events/` whose date (set in a content file's [front matter][]) is in the future. The following is an example [partial template][partials]:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/upcoming-events.html" download="upcoming-events.html" >}}
 +<h4>Upcoming Events</h4>
 +<ul class="upcoming-events">
 +{{ range where .Data.Pages.ByDate "Section" "events" }}
 +  {{ if ge .Date.Unix .Now.Unix }}
 +    <li>
 +    <!-- add span for event type -->
 +      <span>{{ .Type | title }} —</span>
 +      {{ .Title }} on
 +    <!-- add span for event date -->
 +      <span>{{ .Date.Format "2 January at 3:04pm" }}</span>
 +      at {{ .Params.place }}
 +    </li>
 +  {{ end }}
 +{{ end }}
 +</ul>
++{{< /code >}}
 +
 +
 +[`where` function]: /functions/where/
 +[config]: /getting-started/configuration/
 +[dotdoc]: http://golang.org/pkg/text/template/#hdr-Variables
 +[first]: /functions/first/
 +[front matter]: /content-management/front-matter/
 +[functions]: /functions/ "See the full list of Hugo's templating functions with a quick start reference guide and basic and advanced examples."
 +[Go html/template]: http://golang.org/pkg/html/template/ "Godocs references for Golang's html templating"
 +[gohtmltemplate]: http://golang.org/pkg/html/template/ "Godocs references for Golang's html templating"
 +[index]: /functions/index/
 +[math functions]: /functions/math/
 +[partials]: /templates/partials/ "Link to the partial templates page inside of the templating section of the Hugo docs"
 +[relpermalink]: /variables/page/
 +[safehtml]: /functions/safehtml/
 +[sitevars]: /variables/site/
 +[variables]: /variables/ "See the full extent of page-, site-, and other variables that Hugo make available to you in your templates."
 +[where]: /functions/where/
 +[with]: /functions/with/
 +[godocsindex]: http://golang.org/pkg/text/template/ "Godocs page for index function"
index def088ebe9f9d85e6d80e94dd5acfe16fa6d27ac,0000000000000000000000000000000000000000..8eeb2d271b5da22c29dd70c067c0ce514138b785
mode 100644,000000..100644
--- /dev/null
@@@ -1,651 -1,0 +1,595 @@@
- ```bash
 +---
 +title: Lists of Content in Hugo
 +linktitle: List Page Templates
 +description: Lists have a specific meaning and usage in Hugo when it comes to rendering your site homepage, section page, taxonomy list, or taxonomy terms list.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [lists,sections,rss,taxonomies,terms]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 22
 +weight: 22
 +sections_weight: 22
 +draft: false
 +aliases: [/templates/list/,/layout/indexes/]
 +toc: true
 +---
 +
 +## What is a List Page Template?
 +
 +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].
 +
 +Hugo uses the term *list* in its truest sense; i.e. a sequential arrangement of material, especially in alphabetical or numerical order. Hugo uses list templates on any output HTML page where content is traditionally listed:
 +
 +* [Taxonomy terms pages][taxterms]
 +* [Taxonomy list pages][taxlists]
 +* [Section list pages][sectiontemps]
 +* [RSS][rss]
 +
 +The idea of a list page comes from the [hierarchical mental model of the web][mentalmodel] and is best demonstrated visually:
 +
 +![Image demonstrating a hierarchical website sitemap.](/images/site-hierarchy.svg)
 +
 +## List Defaults
 +
 +### Default Templates
 +
 +Since section lists and taxonomy lists (N.B., *not* [taxonomy terms lists][taxterms]) are both *lists* with regards to their templates, both have the same terminating default of `_default/list.html` or `themes/<THEME>/layouts/_default/list.html` in their lookup order. In addition, both [section lists][sectiontemps] and [taxonomy lists][taxlists] have their own default list templates in `_default`:
 +
 +#### Default Section Templates
 +
 +1. `layouts/_default/section.html`
 +2. `layouts/_default/list.html`
 +
 +#### Default Taxonomy List Templates
 +
 +1. `layouts/_default/taxonomy.html`
 +2. `themes/<THEME>/layouts/_default/taxonomy.html`
 +
 +## Add Content and Front Matter to List Pages
 +
 +Since v0.18, [everything in Hugo is a `Page`][bepsays]. This means list pages and the homepage can have associated content files (i.e. `_index.md`) that contain page metadata (i.e., front matter) and content.
 +
 +This new model allows you to include list-specific front matter via `.Params` and also means that list templates (e.g., `layouts/_default/list.html`) have access to all [page variables][pagevars].
 +
 +{{% note %}}
 +It is important to note that all `_index.md` content files will render according to a *list* template and not according to a [single page template](/templates/single-page-templates/).
 +{{% /note %}}
 +
 +### Example Project Directory
 +
 +The following is an example of a typical Hugo project directory's content:
 +
- {{% code file="content/post/_index.md" %}}
- ```yaml
++```
 +.
 +...
 +├── content
 +|   ├── post
 +|   |   ├── _index.md
 +|   |   ├── post-01.md
 +|   |   └── post-02.md
 +|   └── quote
 +|   |   ├── quote-01.md
 +|   |   └── quote-02.md
 +...
 +```
 +
 +Using the above example, let's assume you have the following in `content/post/_index.md`:
 +
- ```
- {{% /code %}}
++{{< code file="content/post/_index.md" >}}
 +---
 +title: My Golang Journey
 +date: 2017-03-23
 +publishdate: 2017-03-24
 +---
 +
 +I decided to start learning Golang in March 2017.
 +
 +Follow my journey through this new blog.
- {{% code file="layouts/_default/list.html" download="list.html" %}}
- ```html
++{{< /code >}}
 +
 +You can now access this `_index.md`'s' content in your list template:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/list.html" download="list.html" >}}
 +{{ define "main" }}
 +<main>
 +    <article>
 +        <header>
 +            <h1>{{.Title}}</h1>
 +        </header>
 +        <!-- "{{.Content}}" pulls from the markdown content of the corresponding _inde.xmd -->
 +        {{.Content}}
 +    </article>
 +    <ul>
 +    <!-- Ranges through content/post/*.md -->
 +    {{ range .Data.Pages }}
 +        <li>
 +            <a href="{{.Permalink}}">{{.Date.Format "2006-01-02"}} | {{.Title}}</a
 +        </li>
 +    {{ end }}
 +    </ul>
 +</main>
 +{{ end }}
- {{% code file="yoursite.com/post/index.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
 +This above will output the following HTML:
 +
- ```
- {{% /code %}}
++{{< code file="example.com/post/index.html" copy="false" >}}
 +<!--top of your baseof code-->
 +<main>
 +    <article>
 +        <header>
 +            <h1>My Golang Journey</h1>
 +        </header>
 +        <p>I decided to start learning Golang in March 2017.</p>
 +        <p>Follow my journey through this new blog.</p>
 +    </article>
 +    <ul>
 +        <li><a href="/post/post-01/">Post 1</a></li>
 +        <li><a href="/post/post-02/">Post 2</a></li>
 +    </ul>
 +</main>
 +<!--bottom of your baseof-->
- {{% code file="yoursite.com/quote/index.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
 +### List Pages Without `_index.md`
 +
 +You do *not* have to create an `_index.md` file for every list page (i.e. section, taxonomy, taxonomy terms, etc) or the homepage. If Hugo does not find an `_index.md` within the respective content section when rendering a list template, the page will be created but with no `{{.Content}}` and only the default values for `.Title` etc.
 +
 +Using this same `layouts/_default/list.html` template and applying it to the the `quotes` section above will render the following output. Note that `quotes` does not have an `_index.md` file to pull from:
 +
-         <li><a href="https://yoursite.com/quote/quotes-01/">Quote 1</a></li>
-         <li><a href="https://yoursite.com/quote/quotes-02/">Quote 2</a></li>
++{{< code file="example.com/quote/index.html" copy="false" >}}
 +<!--baseof-->
 +<main>
 +    <article>
 +        <header>
 +        <!-- Hugo assumes that .Title is the name of the section since there is no _index.md content file from which to pull a "title:" field -->
 +            <h1>Quotes</h1>
 +        </header>
 +    </article>
 +    <ul>
- ```
- {{% /code %}}
++        <li><a href="https://example.com/quote/quotes-01/">Quote 1</a></li>
++        <li><a href="https://example.com/quote/quotes-02/">Quote 2</a></li>
 +    </ul>
 +</main>
 +<!--baseof-->
- {{% code file="layouts/section/post.html" %}}
- ```html
++{{< /code >}}
 +
 +{{% note %}}
 +The default behavior of Hugo is to pluralize list titles; hence the inflection of the `quote` section to "Quotes" when called with the `.Title` [page variable](/variables/page/). You can change this via the `pluralizeListTitles` directive in your [site configuration](/getting-started/configuration/).
 +{{% /note %}}
 +
 +## Example List Templates
 +
 +### Section Template
 +
 +This list template has been modified slightly from a template originally used in [spf13.com](http://spf13.com/). It makes use of [partial templates][partials] for the chrome of the rendered page rather than using a [base template][base] The examples that follow also use the [content view templates][views] `li.html` or `summary.html`.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/section/post.html" >}}
 +{{ partial "header.html" . }}
 +{{ partial "subheader.html" . }}
 +<main>
 +  <div>
 +   <h1>{{ .Title }}</h1>
 +        <ul>
 +        <!-- Renders the li.html content view for each content/post/*.md -->
 +            {{ range .Data.Pages }}
 +                {{ .Render "li"}}
 +            {{ end }}
 +        </ul>
 +  </div>
 +</main>
 +{{ partial "footer.html" . }}
- {{% code file="layouts/_default/taxonomies.html" download="taxonomies.html" %}}
- ```html
++{{< /code >}}
 +
 +### Taxonomy Template
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/taxonomies.html" download="taxonomies.html" >}}
 +{{ define "main" }}
 +<main>
 +  <div>
 +   <h1>{{ .Title }}</h1>
 +   <!-- ranges through each of the content files associated with a particular taxonomy term and renders the summary.html content view -->
 +    {{ range .Data.Pages }}
 +        {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</main>
 +{{ end }}
- ### Default List Ordering: Weight > Date
++{{< /code >}}
 +
 +## Order Content
 +
 +Hugo lists render the content based on metadata you provide in [front matter][]. In addition to sane defaults, Hugo also ships with multiple methods to make quick work of ordering content inside list templates:
 +
- {{% code file="layouts/partials/default-order.html" %}}
- ```html
++### Default: Weight > Date > LinkTitle > FilePath
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/default-order.html" >}}
 +<ul>
 +    {{ range .Data.Pages }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-weight.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Weight
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-weight.html" >}}
 +<ul>
 +    {{ range .Data.Pages.ByWeight }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-date.html" >}}
 +<ul>
 +    <!-- orders content according to the "date" field in front matter -->
 +    {{ range .Data.Pages.ByDate }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-publish-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Publish Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-publish-date.html" >}}
 +<ul>
 +    <!-- orders content according to the "publishdate" field in front matter -->
 +    {{ range .Data.Pages.ByPublishDate }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-expiry-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Expiration Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-expiry-date.html" >}}
 +<ul>
 +    {{ range .Data.Pages.ByExpiryDate }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-last-mod.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Last Modified Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-last-mod.html" >}}
 +<ul>
 +    <!-- orders content according to the "lastmod" field in front matter -->
 +    {{ range .Data.Pages.ByLastmod }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-length.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Length
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-length.html" >}}
 +<ul>
 +    <!-- orders content according to content length in ascending order (i.e., the shortest content will be listed first) -->
 +    {{ range .Data.Pages.ByLength }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-title.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Title
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-title.html" >}}
 +<ul>
 +    <!-- ranges through content in ascending order according to the "title" field set in front matter -->
 +    {{ range .Data.Pages.ByTitle }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-link-title.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Link Title
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-link-title.html" >}}
 +<ul>
 +    <!-- ranges through content in ascending order according to the "linktitle" field in front matter. If a "linktitle" field is not set, the range will start with content that only has a "title" field and use that value for .LinkTitle -->
 +    {{ range .Data.Pages.ByLinkTitle }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-rating.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Parameter
 +
 +Order based on the specified front matter parameter. Content that does not have the specified front matter field  will use the site's `.Site.Params` default. If the parameter is not found at all in some entries, those entries will appear together at the end of the ordering.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-rating.html" >}}
 +<!-- Ranges through content according to the "rating" field set in front matter -->
 +{{ range (.Data.Pages.ByParam "rating") }}
 +  <!-- ... -->
 +{{ end }}
- {{% code file="layouts/partials/by-nested-param.html" %}}
- ```html
++{{< /code >}}
 +
 +If the targeted front matter field is nested beneath another field, you can access the field using dot notation.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-nested-param.html" >}}
 +{{ range (.Data.Pages.ByParam "author.last_name") }}
 +  <!-- ... -->
 +{{ end }}
- {{% code file="layouts/partials/by-date-reverse.html" %}}
- ```html
++{{< /code >}}
 +
 +### Reverse Order
 +
 +Reversing order can be applied to any of the above methods. The following uses `ByDate` as an example:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-date-reverse.html" >}}
 +<ul>
 +    {{ range .Data.Pages.ByDate.Reverse }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-page-field.html" %}}
- ```html
++{{< /code >}}
 +
 +## Group Content
 +
 +Hugo provides some functions for grouping pages by Section, Type, Date, etc.
 +
 +### By Page Field
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-field.html" >}}
 +<!-- Groups content according to content section. The ".Key" in this instance will be the section's title. -->
 +{{ range .Data.Pages.GroupBy "Section" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-field.html" %}}
- ```html
++{{< /code >}}
 +
 +In the above example, you may want `{{.Title}}` to point the `title` field you have added to your `_index.md` file instead. You can access this value using the [`.GetPage` function][getpage]:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-field.html" >}}
 +<!-- Groups content according to content section.-->
 +{{ range .Data.Pages.GroupBy "Section" }}
 +<!-- Checks for existence of _index.md for a section; if available, pulls from "title" in front matter -->
 +{{ with $.Site.GetPage "section" .Key }}
 +<h3>{{.Title}}</h3>
 +{{ else }}
 +<!-- If no _index.md is available, ".Key" defaults to the section title and filters to title casing -->
 +<h3>{{ .Key | title }}</h3>
 +{{ end }}
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-date.html" >}}
 +<!-- Groups content by month according to the "date" field in front matter -->
 +{{ range .Data.Pages.GroupByDate "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-publish-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Publish Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-publish-date.html" >}}
 +<!-- Groups content by month according to the "publishdate" field in front matter -->
 +{{ range .Data.Pages.GroupByPublishDate "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .PublishDate.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-param.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Page Parameter
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-param.html" >}}
 +<!-- Groups content according to the "param_key" field in front matter -->
 +{{ range .Data.Pages.GroupByParam "param_key" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-param-as-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Page Parameter in Date Format
 +
 +The following template takes grouping by `date` a step further and uses Golang's layout string. See the [`Format` function][] for more examples of how to use Golang's layout string to format dates in Hugo.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-param-as-date.html" >}}
 +<!-- Groups content by month according to the "param_key" field in front matter -->
 +{{ range .Data.Pages.GroupByParamDate "param_key" "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- ```html
++{{< /code >}}
 +
 +### Reverse Key Order
 +
 +Ordering of groups is performed by keys in alphanumeric order (A–Z, 1–100) and in reverse chronological order (i.e., with the newest first) for dates.
 +
 +While these are logical defaults, they are not always the desired order. There are two different syntaxes to change Hugo's default ordering for groups, both of which work the same way.
 +
 +#### 1. Adding the Reverse Method
 +
- ```html
++```
 +{{ range (.Data.Pages.GroupBy "Section").Reverse }}
 +```
 +
- ```html
++```
 +{{ range (.Data.Pages.GroupByDate "2006-01").Reverse }}
 +```
 +
 +#### 2. Providing the Alternate Direction
 +
- ```html
++```
 +{{ range .Data.Pages.GroupByDate "2006-01" "asc" }}
 +```
 +
- {{% code file="layouts/partials/by-group-by-page.html" %}}
- ```html
++```
 +{{ range .Data.Pages.GroupBy "Section" "desc" }}
 +```
 +
 +### Order Within Groups
 +
 +Because Grouping returns a `{{.Key}}` and a slice of pages, all of the ordering methods listed above are available.
 +
 +Here is the ordering for the example that follows:
 +
 +1. Content is grouped by month according to the `date` field in front matter.
 +2. Groups are listed in ascending order (i.e., the oldest groups first)
 +3. Pages within each respective group are ordered alphabetically according to the `title`.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-group-by-page.html" >}}
 +{{ range .Data.Pages.GroupByDate "2006-01" "asc" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages.ByTitle }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/_default/.html" %}}
- ```html
++{{< /code >}}
 +
 +## Filter and Limiting Lists
 +
 +Sometimes you only want to list a subset of the available content. A common is to only display “Posts” on blog's homepage. You can accomplish this with the `where` function.
 +
 +### `where`
 +
 +`where` works in a similar manner to the [`where` keyword in SQL][wherekeyword]. It selects all elements of the array or slice that match the provided field and value. `where` takes three arguments:
 +
 +1. `array` *or* `slice of maps or structs`
 +2. `key` *or* `field name`
 +3. `match value`
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/.html" >}}
 +{{ range where .Data.Pages "Section" "post" }}
 +   {{ .Content }}
 +{{ end }}
- {{% code file="layout/_default/section.html" %}}
- ```html
++{{< /code >}}
 +
 +You can see more examples in the [functions documentation for `where`][wherefunction].
 +
 +### `first`
 +
 +`first` works in a similar manner to the [`limit` keyword in SQL][limitkeyword]. It reduces the array to only the `first N` elements. It takes the array and number of elements as input. `first` takes two arguments:
 +
 +1. `array` *or* `slice of maps or structs`
 +2. `number of elements`
 +
- ```
- {{% /code %}}
++{{< code file="layout/_default/section.html" >}}
 +{{ range first 10 .Data.Pages }}
 +  {{ .Render "summary" }}
 +{{ end }}
- {{% code file="first-and-where-together.html" %}}
- ```html
++{{< /code >}}
 +
 +### `first` and `where` Together
 +
 +Using `first` and `where` together can be very powerful:
 +
- ```
- {{% /code %}}
++{{< code file="first-and-where-together.html" >}}
 +<!-- Orders the content inside the "posts" section by the "title" field and then ranges through only the first 5 posts -->
 +{{ range first 5 (where .Data.Pages "Section" "post").ByTitle }}
 +   {{ .Content }}
 +{{ end }}
- [wherekeyword]: https://www.techonthenet.com/sql/where.php
++{{< /code >}}
 +
 +[base]: /templates/base/
 +[bepsays]: http://bepsays.com/en/2016/12/19/hugo-018/
 +[directorystructure]: /getting-started/directory-structure/
 +[`Format` function]: /functions/format/
 +[front matter]: /content-management/front-matter/
 +[getpage]: /functions/getpage/
 +[homepage]: /templates/homepage/
 +[homepage]: /templates/homepage/
 +[limitkeyword]: https://www.techonthenet.com/sql/select_limit.php
 +[mentalmodel]: http://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
 +[pagevars]: /variables/page/
 +[partials]: /templates/partials/
 +[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification"
 +[rss]: /templates/rss/
 +[sections]: /content-management/sections/
 +[sectiontemps]: /templates/section-templates/
 +[sitevars]: /variables/site/
 +[taxlists]: /templates/taxonomy-templates/#taxonomy-list-templates/
 +[taxterms]: /templates/taxonomy-templates/#taxonomy-terms-templates/
 +[taxvars]: /variables/taxonomy/
 +[views]: /templates/views/
 +[wherefunction]: /functions/where/
++[wherekeyword]: https://www.techonthenet.com/sql/where.php
index 37d994eed7e6518b1b35922fcbf2d3026a6c3bb1,0000000000000000000000000000000000000000..3f4ff79a0c99f3074941fb2cccf2aa5f160a2c36
mode 100644,000000..100644
--- /dev/null
@@@ -1,197 -1,0 +1,191 @@@
- ```bash
 +---
 +title: Hugo's Lookup Order
 +linktitle: Template Lookup Order
 +description: The lookup order is a prioritized list used by Hugo as it traverses your files looking for the appropriate corresponding file to render your content.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-05-25
 +categories: [templates,fundamentals]
 +#tags: [lookup]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 15
 +  quicklinks:
 +weight: 15
 +sections_weight: 15
 +draft: false
 +aliases: [/templates/lookup/]
 +toc: true
 +---
 +
 +Before creating your templates, it's important to know how Hugo looks for files within your project's [directory structure][].
 +
 +Hugo uses a prioritized list called the **lookup order** as it traverses your `layouts` folder in your Hugo project *looking* for the appropriate template to render your content.
 +
 +The template lookup order is an inverted cascade: if template A isn’t present or specified, Hugo will look to template B. If template B isn't present or specified, Hugo will look for template C...and so on until it reaches the `_default/` directory for your project or theme. In many ways, the lookup order is similar to the programming concept of a [switch statement without fallthrough][switch].
 +
 +The power of the lookup order is that it enables you to craft specific layouts and keep your templating [DRY][].
 +
 +{{% note %}}
 +Most Hugo websites will only need the default template files at the end of the lookup order (i.e. `_default/*.html`).
 +{{% /note %}}
 +
 +## Lookup Orders
 +
 +The respective lookup order for each of Hugo's templates has been defined throughout the Hugo docs:
 +
 +* [Homepage Template][home]
 +* [Base Templates][base]
 +* [Section Page Templates][sectionlookup]
 +* [Taxonomy List Templates][taxonomylookup]
 +* [Taxonomy Terms Templates][termslookup]
 +* [Single Page Templates][singlelookup]
 +* [RSS Templates][rsslookup]
 +* [Shortcode Templates][sclookup]
 +
 +## Template Lookup Examples
 +
 +The lookup order is best illustrated through examples. The following shows you the process Hugo uses for finding the appropriate template to render your [single page templates][], but the concept holds true for all templates in Hugo.
 +
 +1. The project is using the theme `mytheme` (specified in the project's [configuration][config]).
 +2. The layouts and content directories for the project are as follows:
 +
- {{% code file="content/posts/my-first-post.md" copy="false" %}}
- ```yaml
++```
 +.
 +├── content
 +│   ├── events
 +│   │   ├── _index.md
 +│   │   └── my-first-event.md
 +│   └── posts
 +│       ├── my-first-post.md
 +│       └── my-second-post.md
 +├── layouts
 +│   ├── _default
 +│   │   └── single.html
 +│   ├── posts
 +│   │   └── single.html
 +│   └── reviews
 +│       └── reviewarticle.html
 +└── themes
 +    └── mytheme
 +        └── layouts
 +            ├── _default
 +            │   ├── list.html
 +            │   └── single.html
 +            └── posts
 +                ├── list.html
 +                └── single.html
 +```
 +
 +
 +Now we can look at the front matter for the three content (i.e.`.md`) files.
 +
 +{{% note  %}}
 +Only three of the four markdown files in the above project are subject to the *single* page lookup order. `_index.md` is a specific `kind` in Hugo. Whereas `my-first-post.md`, `my-second-post.md`, and `my-first-event.md` are all of kind `page`, all `_index.md` files in a Hugo project are used to add content and front matter to [list pages](/templates/lists/). In this example, `events/_index.md` will render according to its [section template](/templates/section-templates/) and respective lookup order.
 +{{% /note %}}
 +
 +### Example: `my-first-post.md`
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/my-first-post.md" copy="false" >}}
 +---
 +title: My First Post
 +date: 2017-02-19
 +description: This is my first post.
 +---
- {{% code file="content/posts/my-second-post.md" copy="false" %}}
- ```yaml
++{{< /code >}}
 +
 +When building your site, Hugo will go through the lookup order until it finds what it needs for `my-first-post.md`:
 +
 +1. ~~`/layouts/UNSPECIFIED/UNSPECIFIED.html`~~
 +2. ~~`/layouts/posts/UNSPECIFIED.html`~~
 +3. ~~`/layouts/UNSPECIFIED/single.html`~~
 +4. <span class="yes">`/layouts/posts/single.html`</span>
 +  <br><span class="break">BREAK</span>
 +5. <span class="na">`/layouts/_default/single.html`</span>
 +6. <span class="na">`/themes/<THEME>/layouts/UNSPECIFIED/UNSPECIFIED.html`</span>
 +7. <span class="na">`/themes/<THEME>/layouts/posts/UNSPECIFIED.html`</span>
 +8. <span class="na">`/themes/<THEME>/layouts/UNSPECIFIED/single.html`</span>
 +9. <span class="na">`/themes/<THEME>/layouts/posts/single.html`</span>
 +10. <span class="na">`/themes/<THEME>/layouts/_default/single.html`</span>
 +
 +Notice the term `UNSPECIFIED` rather than `UNDEFINED`. If you don't tell Hugo the specific type and layout, it makes assumptions based on sane defaults. `my-first-post.md` does not specify a content `type` in its front matter. Therefore, Hugo assumes the content `type` and `section` (i.e. `posts`, which is defined by file location) are one in the same. ([Read more on sections][sections].)
 +
 +`my-first-post.md` also does not specify a `layout` in its front matter. Therefore, Hugo assumes that `my-first-post.md`, which is of type `page` and a *single* piece of content, should default to the next occurrence of a `single.html` template in the lookup (#4).
 +
 +### Example: `my-second-post.md`
 +
- ```
- {{% /code %}}
++{{< code file="content/posts/my-second-post.md" copy="false" >}}
 +---
 +title: My Second Post
 +date: 2017-02-21
 +description: This is my second post.
 +type: review
 +layout: reviewarticle
 +---
- {{% code file="content/events/my-first-event.md" copy="false" %}}
- ```yaml
++{{< /code >}}
 +
 +Here is the way Hugo traverses the single-page lookup order for `my-second-post.md`:
 +
 +1. <span class="yes">`/layouts/review/reviewarticle.html`</span>
 +  <br><span class="break">BREAK</span>
 +2. <span class="na">`/layouts/posts/reviewarticle.html`</span>
 +3. <span class="na">`/layouts/review/single.html`</span>
 +4. <span class="na">`/layouts/posts/single.html`</span>
 +5. <span class="na">`/layouts/_default/single.html`</span>
 +6. <span class="na">`/themes/<THEME>/layouts/review/reviewarticle.html`</span>
 +7. <span class="na">`/themes/<THEME>/layouts/posts/reviewarticle.html`</span>
 +8. <span class="na">`/themes/<THEME>/layouts/review/single.html`</span>
 +9. <span class="na">`/themes/<THEME>/layouts/posts/single.html`</span>
 +10. <span class="na">`/themes/<THEME>/layouts/_default/single.html`</span>
 +
 +The front matter in `my-second-post.md` specifies the content `type` (i.e. `review`) as well as the `layout` (i.e. `reviewarticle`). Hugo finds the layout it needs at the top level of the lookup (#1) and does not continue to search through the other templates.
 +
 +{{% note "Type and not Types" %}}
 +Notice that the directory for the template for `my-second-post.md` is `review` and not `reviews`. This is because *type is always singular when defined in front matter*.
 +{{% /note%}}
 +
 +### Example: `my-first-event.md`
 +
- ```
- {{% /code %}}
++{{< code file="content/events/my-first-event.md" copy="false" >}}
 +---
 +title: My First
 +date: 2017-02-21
 +description: This is an upcoming event..
 +---
++{{< /code >}}
 +
 +Here is the way Hugo traverses the single-page lookup order for `my-first-event.md`:
 +
 +1. ~~`/layouts/UNSPECIFIED/UNSPECIFIED.html`~~
 +2. ~~`/layouts/events/UNSPECIFIED.html`~~
 +3. ~~`/layouts/UNSPECIFIED/single.html`~~
 +4. ~~`/layouts/events/single.html`~~
 +5. <span class="yes">`/layouts/_default/single.html`</span>
 +<br><span class="break">BREAK</span>
 +6. <span class="na">`/themes/<THEME>/layouts/UNSPECIFIED/UNSPECIFIED.html`</span>
 +7. <span class="na">`/themes/<THEME>/layouts/events/UNSPECIFIED.html`</span>
 +8. <span class="na">`/themes/<THEME>/layouts/UNSPECIFIED/single.html`</span>
 +9. <span class="na">`/themes/<THEME>/layouts/events/single.html`</span>
 +10. <span class="na">`/themes/<THEME>/layouts/_default/single.html`</span>
 +
 +
 +{{% note %}}
 +`my-first-event.md` is significant because it demonstrates the role of the lookup order in Hugo themes. Both the root project directory *and* the `mytheme` themes directory have a file at `_default/single.html`. Understanding this order allows you to [customize Hugo themes](/themes/customizing/) by creating template files with identical names in your project directory that step in front of theme template files in the lookup. This allows you to customize the look and feel of your website while maintaining compatibility with the theme's upstream.
 +{{% /note %}}
 +
 +[base]: /templates/base/#base-template-lookup-order
 +[config]: /getting-started/configuration/
 +[directory structure]: /getting-started/directory-structure/
 +[DRY]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
 +[home]: /templates/homepage/#homepage-template-lookup-order
 +[rsslookup]: /templates/rss/#rss-template-lookup-order
 +[sclookup]: /templates/shortcode-templates/#shortcode-template-lookup-order
 +[sections]: /content-management/sections/
 +[sectionlookup]: /templates/section-templates/#section-template-lookup-order
 +[single page templates]: /templates/single-page-templates/
 +[singlelookup]: /templates/single-page-templates/#single-page-template-lookup-order
 +[switch]: https://en.wikipedia.org/wiki/Switch_statement#Fallthrough
 +[taxonomylookup]: /templates/taxonomy-templates/#taxonomy-list-template-lookup-order
 +[termslookup]: /templates/taxonomy-templates/#taxonomy-terms-template-lookup-order
index 791825d16c0f5c1ac8ae72f33e344fbae0c551d6,0000000000000000000000000000000000000000..eb300afe7d70e83cc9b1ca6e7cf1a8a92d18fced
mode 100644,000000..100644
--- /dev/null
@@@ -1,107 -1,0 +1,105 @@@
- {{% code file="layouts/partials/sidebar.html" download="sidebar.html" %}}
- ```html
 +---
 +title: Menu Templates
 +linktitle: Menu Templates
 +description: Menus are a powerful but simple feature for content management but can be easily manipulated in your templates to meet your design needs.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [lists,sections,menus]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 130
 +weight: 130
 +sections_weight: 130
 +draft: false
 +aliases: [/templates/menus/]
 +toc: false
 +---
 +
 +Hugo makes no assumptions about how your rendered HTML will be
 +structured. Instead, it provides all of the functions you will need to be
 +able to build your menu however you want.
 +
 +The following is an example:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/sidebar.html" download="sidebar.html" >}}
 +<!-- sidebar start -->
 +<aside>
 +    <div id="sidebar" class="nav-collapse">
 +        <!-- sidebar menu start-->
 +        <ul class="sidebar-menu">
 +          {{ $currentPage := . }}
 +          {{ range .Site.Menus.main }}
 +              {{ if .HasChildren }}
 +
 +            <li class="sub-menu{{if $currentPage.HasMenuCurrent "main" . }} active{{end}}">
 +            <a href="javascript:;" class="">
 +                {{ .Pre }}
 +                <span>{{ .Name }}</span>
 +                <span class="menu-arrow arrow_carrot-right"></span>
 +            </a>
 +            <ul class="sub">
 +                {{ range .Children }}
 +                <li{{if $currentPage.IsMenuCurrent "main" . }} class="active"{{end}}><a href="{{.URL}}"> {{ .Name }} </a> </li>
 +                {{ end }}
 +            </ul>
 +          {{else}}
 +            <li>
 +            <a href="{{.URL}}">
 +                {{ .Pre }}
 +                <span>{{ .Name }}</span>
 +            </a>
 +          {{end}}
 +          </li>
 +          {{end}}
 +            <li> <a href="https://github.com/gohugoio/hugo/issues" target="blank">Questions and Issues</a> </li>
 +            <li> <a href="#" target="blank">Edit this Page</a> </li>
 +        </ul>
 +        <!-- sidebar menu end-->
 +    </div>
 +</aside>
 +<!--sidebar end-->
- ```toml
++{{< /code >}}
 +
 +{{% note "`absLangURL` and `relLangURL`" %}}
 +Use the [`absLangUrl`](/functions/abslangurl) or [`relLangUrl`](/functions/rellangurl) functions if your theme makes use of the [multilingual feature](/content-management/multilingual/). In contrast to `absURL` and `relURL`, these two functions add the correct language prefix to the url.
 +{{% /note %}}
 +
 +## Section Menu for Lazy Bloggers
 +
 +To enable this menu, add the following to your site `config`:
 +
- ```html
++```
 +SectionPagesMenu = "main"
 +```
 +
 +The menu name can be anything, but take a note of what it is.
 +
 +This will create a menu with all the sections as menu items and all the sections' pages as "shadow-members". The _shadow_ implies that the pages isn't represented by a menu-item themselves, but this enables you to create a top-level menu like this:
 +
- ```toml
++```
 +<nav class="sidebar-nav">
 +    {{ $currentPage := . }}
 +    {{ range .Site.Menus.main }}
 +    <a class="sidebar-nav-item{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} active{{end}}" href="{{.URL}}">{{ .Name }}</a>
 +    {{ end }}
 +</nav>
 +```
 +
 +In the above, the menu item is marked as active if on the current section's list page or on a page in that section.
 +
 +The above is all that's needed. But if you want custom menu items, e.g. changing weight or name, you can define them manually in the site config, i.e. `config.toml`:
 +
++```
 +[[menu.main]]
 +    name = "This is the blog section"
 +    weight = -110
 +    identifier = "blog"
 +    url = "/blog/"
 +```
 +
 +{{% note %}}
 +The `identifier` *must* match the section name.
 +{{% /note %}}
index 492392d8e4b089a147fe1dd714916721ad0608f9,0000000000000000000000000000000000000000..c63e83b7ee16305a36a84974faad61b7f6fc8dcc
mode 100644,000000..100644
--- /dev/null
@@@ -1,425 -1,0 +1,379 @@@
- title: Ordering and Grouping Hugo Lists
 +---
- {{% code file="layouts/section/post.html" %}}
- ```html
++title: Ordere and Grouping Hugo Lists
 +linktitle: List Ordering and Grouping
 +description: You can group or order your content in both your templating and content front matter.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: []
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 27
 +weight: 27
 +sections_weight: 27
 +draft: true
 +aliases: [/templates/ordering/,/templates/grouping/]
 +toc: true
 +notes: This was originally going to be a separate page on the new docs site but it now makes more sense to keep everything within the templates/lists page. - rdwatters, 2017-03-12.
 +---
 +
 +In Hugo, A list template is any template that will be used to render multiple pieces of content in a single HTML page.
 +
 +## Example List Templates
 +
 +### Section Template
 +
 +This list template is used for [spf13.com](http://spf13.com/). It makes use of [partial templates][partials]. All examples use a [view](/templates/views/) called either "li" or "summary."
 +
- ```
- {{% /code %}}
++{{< code file="layouts/section/post.html" >}}
 +{{ partial "header.html" . }}
 +{{ partial "subheader.html" . }}
 +
 +<section id="main">
 +  <div>
 +   <h1 id="title">{{ .Title }}</h1>
 +        <ul id="list">
 +            {{ range .Data.Pages }}
 +                {{ .Render "li"}}
 +            {{ end }}
 +        </ul>
 +  </div>
 +</section>
 +{{ partial "footer.html" . }}
- {{% code file="layouts/_default/taxonomies.html" download="taxonomies.html" %}}
- ```html
++{{< /code >}}
 +
 +### Taxonomy Template
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/taxonomies.html" download="taxonomies.html" >}}
 +{{ define "main" }}
 +<section id="main">
 +  <div>
 +   <h1 id="title">{{ .Title }}</h1>
 +    {{ range .Data.Pages }}
 +        {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</section>
 +{{ end }}
- {{% code file="layouts/partials/order-default.html" %}}
- ```html
++{{< /code >}}
 +
 +## Order Content
 +
 +Hugo lists render the content based on metadata provided in the [front matter](/content-management/front-matter/)..
 +
 +Here are a variety of different ways you can order the content items in
 +your list templates:
 +
 +### Default: Weight > Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/order-default.html" >}}
 +<ul class="pages">
 +    {{ range .Data.Pages }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
- {{% code file="layouts/partials/by-weight.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Weight
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-weight.html" >}}
 +{{ range .Data.Pages.ByWeight }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-date.html" >}}
 +{{ range .Data.Pages.ByDate }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-publish-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Publish Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-publish-date.html" >}}
 +{{ range .Data.Pages.ByPublishDate }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .PublishDate.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-expiry-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Expiration Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-expiry-date.html" >}}
 +{{ range .Data.Pages.ByExpiryDate }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .ExpiryDate.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-last-mod.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Last Modified Date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-last-mod.html" >}}
 +{{ range .Data.Pages.ByLastmod }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-length.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Length
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-length.html" >}}
 +{{ range .Data.Pages.ByLength }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-title.html" %}}
- ```html
++{{< /code >}}
 +
 +
 +### By Title
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-title.html" >}}
 +{{ range .Data.Pages.ByTitle }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-link-title.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Link Title
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-link-title.html" >}}
 +{{ range .Data.Pages.ByLinkTitle }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +{{ end }}
- {{% code file="layouts/partials/by-rating.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Parameter
 +
 +Order based on the specified front matter parameter. Content that does not have the specified front matter field  will use the site's `.Site.Params` default. If the parameter is not found at all in some entries, those entries will appear together at the end of the ordering.
 +
 +The below example sorts a list of posts by their rating.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-rating.html" >}}
 +{{ range (.Data.Pages.ByParam "rating") }}
 +  <!-- ... -->
 +{{ end }}
- {{% code file="layouts/partials/by-nested-param.html" %}}
- ```html
++{{< /code >}}
 +
 +If the front matter field of interest is nested beneath another field, you can
 +also get it:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-nested-param.html" >}}
 +{{ range (.Data.Pages.ByParam "author.last_name") }}
 +  <!-- ... -->
 +{{ end }}
- {{% code file="layouts/partials/by-date-reverse.html" %}}
- ```html
++{{< /code >}}
 +
 +### Reverse Order
 +
 +Reversing order can be applied to any of the above methods. The following uses `ByDate` as an example:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-date-reverse.html" >}}
 +{{ range .Data.Pages.ByDate.Reverse }}
 +<li>
 +<a href="{{ .Permalink }}">{{ .Title }}</a>
 +<div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +</li>
 +{{ end }}
- {{% code file="layouts/partials/by-page-field.html" %}}
- ```html
++{{< /code >}}
 +
 +## Group Content
 +
 +Hugo provides some functions for grouping pages by Section, Type, Date, etc.
 +
 +### By Page Field
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-field.html" >}}
 +{{ range .Data.Pages.GroupBy "Section" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Page date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-date.html" >}}
 +{{ range .Data.Pages.GroupByDate "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-publish-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Page publish date
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-publish-date.html" >}}
 +{{ range .Data.Pages.GroupByPublishDate "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .PublishDate.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-param.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Page Param
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-param.html" >}}
 +{{ range .Data.Pages.GroupByParam "param_key" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/partials/by-page-param-as-date.html" %}}
- ```html
++{{< /code >}}
 +
 +### By Page Param in Date Format
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-page-param-as-date.html" >}}
 +{{ range .Data.Pages.GroupByParamDate "param_key" "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- ```html
++{{< /code >}}
 +
 +### Reverse Key Order
 +
 +The ordering of the groups is performed by keys in alphanumeric order (A–Z, 1–100) and in reverse chronological order (newest first) for dates.
 +
 +While these are logical defaults, they are not always the desired order. There are two different syntaxes to change the order, both of which work the same way. You can use your preferred syntax.
 +
 +#### Reverse Method
 +
- ```html
++```
 +{{ range (.Data.Pages.GroupBy "Section").Reverse }}
 +```
 +
- ```html
++```
 +{{ range (.Data.Pages.GroupByDate "2006-01").Reverse }}
 +```
 +
 +
 +#### Provide the Alternate Direction
 +
- ```html
++```
 +{{ range .Data.Pages.GroupByDate "2006-01" "asc" }}
 +```
 +
- {{% code file="layouts/partials/by-group-by-page.html" %}}
- ```html
++```
 +{{ range .Data.Pages.GroupBy "Section" "desc" }}
 +```
 +
 +### Order Within Groups
 +
 +Because Grouping returns a `{{.Key}}` and a slice of pages, all of the ordering methods listed above are available.
 +
 +In the following example, groups are ordered chronologically and then content
 +within each group is ordered alphabetically by title.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/by-group-by-page.html" >}}
 +{{ range .Data.Pages.GroupByDate "2006-01" "asc" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages.ByTitle }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
- {{% code file="layouts/_default/.html" %}}
- ```html
++{{< /code >}}
 +
 +## Filter and Limiting Lists
 +
 +Sometimes you only want to list a subset of the available content. A common request is to only display “Posts” on the homepage. You can accomplish this with the `where` function.
 +
 +### `where`
 +
 +`where` works in a similar manner to the `where` keyword in SQL. It selects all elements of the array or slice that match the provided field and value. `where` takes three arguments:
 +
 +1. `array` or a `slice of maps or structs`
 +2. `key` or `field name`
 +3. `match value`
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/.html" >}}
 +{{ range where .Data.Pages "Section" "post" }}
 +   {{ .Content }}
 +{{ end }}
- {{% code file="layout/_default/section.html" %}}
- ```html
++{{< /code >}}
 +
 +### `first`
 +
 +`first` works in a similar manner to the [`limit` keyword in SQL][limitkeyword]. It reduces the array to only the `first N` elements. It takes the array and number of elements as input. `first` takes two arguments:
 +
 +1. `array` or `slice of maps or structs`
 +2. `number of elements`
 +
- ```
- {{% /code %}}
++{{< code file="layout/_default/section.html" >}}
 +{{ range first 10 .Data.Pages }}
 +  {{ .Render "summary" }}
 +{{ end }}
- {{% code file="first-and-where-together.html" %}}
- ```html
++{{< /code >}}
 +
 +### `first` and `where` Together
 +
 +Using `first` and `where` together can be very powerful:
 +
- ```
- {{% /code %}}
++{{< code file="first-and-where-together.html" >}}
 +{{ range first 5 (where .Data.Pages "Section" "post") }}
 +   {{ .Content }}
 +{{ end }}
++{{< /code >}}
 +
 +
 +[views]: /templates/views/
index a9d98465eb82d7a12556d9a024b20f5c7973c256,0000000000000000000000000000000000000000..cf0a6b9724a6bb7e1d6be752a040cfa298a243e3
mode 100644,000000..100644
--- /dev/null
@@@ -1,211 -1,0 +1,211 @@@
- ```toml
 +---
 +title: Custom Output Formats
 +linktitle: Custom Output Formats
 +description: Hugo can output content in multiple formats, including calendar events, e-book formats, Google AMP, and JSON search indexes, or any custom text format. 
 +date: 2017-03-22
 +publishdate: 2017-03-22
 +lastmod: 2017-03-22
 +categories: [templates]
 +#tags: ["amp","outputs","rss"]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 18
 +weight: 18
 +sections_weight: 18
 +draft: false
 +aliases: [/templates/outputs/,/extras/output-formats/,/content-management/custom-outputs/]
 +toc: true
 +---
 +
 +This page describes how to properly configure your site with the media types and output formats, as well as where to create your templates for your custom outputs.
 +
 +## Media Types
 +
 +A [media type][] (also known as *MIME type* and *content type*) is a two-part identifier for file formats and format contents transmitted on the Internet.
 +
 +This is the full set of built-in media types in Hugo:
 +
 +{{< datatable "media" "types" "Type" "Suffix" >}}
 +
 +**Note:**
 +
 +* It is possible to add custom media types or change the defaults; e.g., if you want to change the suffix for `text/html` to `asp`.
 +* The `Suffix` is the value that will be used for URLs and filenames for that media type in Hugo.
 +* The `Type` is the identifier that must be used when defining new/custom `Output Formats` (see below).
 +* The full set of media types will be registered in Hugo's built-in development server to make sure they are recognized by the browser.
 +
 +To add or modify a media type, define it in a `mediaTypes` section in your [site configuration][config], either for all sites or for a given language.
 +
 +Example in `config.toml`:
 +
- ```toml
++```
 +[mediaTypes]
 +  [mediaTypes."text/enriched"]
 +  suffix = "enr"
 +  [mediaTypes."text/html"]
 +  suffix = "asp"
 +```
 +
 +The above example adds one new media type, `text/enriched`, and changes the suffix for the built-in `text/html` media type.
 +
 +## Output Formats
 +
 +Given a media type and some additional configuration, you get an `Output Format`:
 +
 +This is the full set of Hugo's built-in output formats:
 +
 +{{< datatable "output" "formats" "Name" "MediaType" "Path" "BaseName" "Rel" "Protocol" "IsPlainText" "IsHTML" "NoUgly">}}
 +
 +* A page can be output in as many output formats as you want, and you can have an infinite amount of output formats defined **as long as they resolve to a unique path on the file system**. In the above table, the best example of this is `AMP` vs. `HTML`. `AMP` has the value `amp` for `Path` so it doesn't overwrite the `HTML` version; e.g. we can now have both `/index.html` and `/amp/index.html`.
 +* The `MediaType` must match the `Type` of an already defined media type.
 +* You can define new output formats or redefine built-in output formats; e.g., if you want to put `AMP` pages in a different path.
 +
 +To add or modify an output format, define it in an `outputFormats` section in your site's [configuration file](/templates/configuration/), either for all sites or for a given language.
 +
- ```toml
++```
 +[outputFormats.MyEnrichedFormat]
 +mediaType = "text/enriched"
 +baseName = "myindex"
 +isPlainText = true
 +protocol = "bep://"
 +```
 +
 +The above example is fictional, but if used for the homepage on a site with `baseURL` `http://example.org`, it will produce a plain text homepage with the URL `bep://example.org/myindex.enr`.
 +
 +### Configure Output Formats
 +
 +The following is the full list of configuration options for output formats and their default values:
 +
 +`Name`
 +: the output format identifier. This is used to define what output format(s) you want for your pages.
 +
 +`MediaType`
 +: this must match the `Type` of a defined media type.
 +
 +`Path`
 +: sub path to save the output files.
 +
 +`BaseName`
 +: the base filename for the list filenames (homepage, etc.). **Default:** `index`.
 +
 +`Rel`
 +: can be used to create `rel` values in `link` tags. **Default:** `alternate`.
 +
 +`Protocol`
 +: will replace the "http://" or "https://" in your `baseURL` for this output format.
 +
 +`IsPlainText`
 +: use Go's plain text templates parser for the templates. **Default:** `false`.
 +
 +`IsHTML`
 +: used in situations only relevant for `HTML`-type formats; e.g., page aliases.
 +
 +`NoUgly`
 +: used to turn off ugly URLs If `uglyURLs` is set to `true` in your site. **Default:** `false`.
 +
 +`NotAlternative`
 +: enable if it doesn't make sense to include this format in an `AlternativeOutputFormats` format listing on `Page` (e.g., with `CSS`). Note that we use the term *alternative* and not *alternate* here, as it does not necessarily replace the other format. **Default:** `false`.
 +
 +## Output Formats for Pages
 +
 +A `Page` in Hugo can be rendered to multiple representations on the file system. By default, all pages will render as `HTML` with some of them also as `RSS` (homepage, sections, etc.).
 +
 +This can be changed by defining an `outputs` list of output formats in either the `Page` front matter or in the site configuration (either for all sites or per language).
 +
 +Example from site `config.toml`:
 +
- ```yml
++```
 +[outputs]
 +  home = ["HTML", "AMP", "RSS"]
 +  page = ["HTML"]
 +```
 +
 +Example from site `config.yml`:
 +
- ```yaml
++```
 +outputs:
 +  home: ["HTML", "AMP", "RSS"]
 +  page: ["HTML"]
 +```
 +
 +
 +* The output definition is per `Page` `Kind` (i.e, `page`, `home`, `section`, `taxonomy`, or `taxonomyTerm`).
 +* The names used must match the `Name` of a defined `Output Format`.
 +* Any `Kind` without a definition will default to `HTML`.
 +* These can be overridden per `Page` in the front matter of content files.
 +* Output formats are case insensitive.
 +
 +The following is an example of `YAML` front matter in a content file that defines output formats for the rendered `Page`:
 +
++```
 +---
 +date: "2016-03-19"
 +outputs:
 +- html
 +- amp
 +- json
 +---
 +```
 +
 +## Link to Output Formats
 +
 +Each `Page` has both an `.OutputFormats` (all formats, including the current) and an `.AlternativeOutputFormats` variable, the latter of which is useful for creating a `link rel` list in your site's `<head>`:
 +
 +```
 +{{ range .AlternativeOutputFormats -}}
 +<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
 +{{ end -}}
 +```
 +
 +Note that `.Permalink` and `.RelPermalink` on `Page` will return the first output format defined for that page (usually `HTML` if nothing else is defined).
 +
 +This is how you link to a given output format:
 +
 +```
 +{{ with  .OutputFormats.Get "json" -}}
 +<a href="{{ .Permalink }}">{{ .Name }}</a>
 +{{- end }}
 +```
 +
 +From content files, you can use the [`ref` or `relref` shortcodes](/content-management/shortcodes/#ref-and-relref):
 +
 +```
 +[Neat]({{</* ref "blog/neat.md" "amp" */>}})
 +[Who]({{</* relref "about.md#who" "amp" */>}})
 +```
 +
 +## Templates for Your Output Formats
 +
 +A new output format needs a corresponding template in order to render anything useful.
 +
 +{{% note %}}
 +The key distinction for Hugo versions 0.20 and newer is that Hugo looks at an output format's `Name` and MediaType's `Suffix` when choosing the template used to render a given `Page`.
 +{{% /note %}}
 +
 +The following table shows examples of different output formats, the suffix used, and Hugo's respective template [lookup order][]. All of the examples in the table can:
 +
 +* Use a [base template][base].
 +* Include [partial templates][partials]
 +
 +{{< datatable "output" "layouts" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
 +
 +Hugo will now also detect the media type and output format of partials, if possible, and use that information to decide if the partial should be parsed as a plain text template or not.
 +
 +Hugo will look for the name given, so you can name it whatever you want. But if you want it treated as plain text, you should use the file suffix and, if needed, the name of the Output Format. The pattern is as follows:
 +
 +```
 +[partial name].[OutputFormat].[suffix]
 +```
 +
 +The partial below is a plain text template (Outpuf Format is `CSV`, and since this is the only output format with the suffix `csv`, we don't need to include the Output Format's `Name`):
 +
 +```
 +{{ partial "mytextpartial.csv" . }}
 +```
 +
 +[base]: /templates/base/
 +[config]: /getting-started/configuration/
 +[lookup order]: /templates/lookup/
 +[media type]: https://en.wikipedia.org/wiki/Media_type
 +[partials]: /templates/partials/
index c1dc94b87ecc8457d441b52c4fd8b0a2d5a15a20,0000000000000000000000000000000000000000..71205ff96f338e8fed997b5ab980e1ff4ac5bcc8
mode 100644,000000..100644
--- /dev/null
@@@ -1,155 -1,0 +1,155 @@@
- ```html
 +---
 +title: Pagination
 +linktitle: Pagination
 +description: Hugo supports pagination for your homepage, section pages, and taxonomies.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [lists,sections,pagination]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 140
 +weight: 140
 +sections_weight: 140
 +draft: false
 +aliases: [/extras/pagination,/doc/pagination/]
 +toc: true
 +---
 +
 +The real power of Hugo pagination shines when combined with the [`where` function][where] and its SQL-like operators: [`first`][], [`last`][], and [`after`][]. You can even [order the content][lists] the way you've become used to with Hugo.
 +
 +## Configure Pagination
 +
 +Pagination can be configured in your [site configuration][configuration]:
 +
 +`Paginate`
 +: default = `10`. This setting can be overridden within the template.
 +
 +`PaginatePath`
 +: default = `page`. Allows you to set a different path for your pagination pages.
 +
 +Setting `Paginate` to a positive value will split the list pages for the homepage, sections and taxonomies into chunks of that size. But note that the generation of the pagination pages for sections, taxonomies and homepage is *lazy* --- the pages will not be created if not referenced by a `.Paginator` (see below).
 +
 +`PaginatePath` is used to adapt the `URL` to the pages in the paginator (the default setting will produce URLs on the form `/page/1/`.
 +
 +## List Paginator Pages
 +
 +{{% warning %}}
 +`.Paginator` is provided to help you build a pager menu. This feature is currently only supported on homepage and list pages (i.e., taxonomies and section lists).
 +{{% /warning %}}
 +
 +There are two ways to configure and use a `.Paginator`:
 +
 +1. The simplest way is just to call `.Paginator.Pages` from a template. It will contain the pages for *that page*.
 +2. Select a subset of the pages with the available template functions and ordering options, and pass the slice to `.Paginate`, e.g. `{{ range (.Paginate ( first 50 .Data.Pages.ByTitle )).Pages }}`.
 +
 +For a given **Page**, it's one of the options above. The `.Paginator` is static and cannot change once created.
 +
 +The global page size setting (`Paginate`) can be overridden by providing a positive integer as the last argument. The examples below will give five items per page:
 +
 +* `{{ range (.Paginator 5).Pages }}`
 +* `{{ $paginator := .Paginate (where .Data.Pages "Type" "post") 5 }}`
 +
 +It is also possible to use the `GroupBy` functions in combination with pagination:
 +
 +```
 +{{ range (.Paginate (.Data.Pages.GroupByDate "2006")).PageGroups  }}
 +```
 +
 +## Build the navigation
 +
 +The `.Paginator` contains enough information to build a paginator interface.
 +
 +The easiest way to add this to your pages is to include the built-in template (with `Bootstrap`-compatible styles):
 +
- ```html
++```
 +{{ template "_internal/pagination.html" . }}
 +```
 +
 +{{% note "When to Create `.Paginator`" %}}
 +If you use any filters or ordering functions to create your `.Paginator` *and* you want the navigation buttons to be shown before the page listing, you must create the `.Paginator` before it's used.
 +{{% /note %}}
 +
 +The following example shows how to create `.Paginator` before its used:
 +
- ```html
++```
 +{{ $paginator := .Paginate (where .Data.Pages "Type" "post") }}
 +{{ template "_internal/pagination.html" . }}
 +{{ range $paginator.Pages }}
 +   {{ .Title }}
 +{{ end }}
 +```
 +
 +Without the `where` filter, the above example is even simpler:
 +
++```
 +{{ template "_internal/pagination.html" . }}
 +{{ range .Paginator.Pages }}
 +   {{ .Title }}
 +{{ end }}
 +```
 +
 +If you want to build custom navigation, you can do so using the `.Paginator` object, which includes the following properties:
 +
 +`PageNumber`
 +: The current page's number in the pager sequence
 +
 +`URL`:
 +The relative URL to the current pager
 +
 +`Pages`:
 +The pages in the current pager
 +
 +`NumberOfElements`
 +: The number of elements on this page
 +
 +`HasPrev`
 +: Whether there are page(s) before the current
 +
 +`Prev`
 +: The pager for the previous page
 +
 +`HasNext`
 +: Whether there are page(s) after the current
 +
 +`Next`
 +: The pager for the next page
 +
 +`First`
 +: The pager for the first page
 +
 +`Last`
 +: The pager for the last page
 +
 +`Pagers`
 +: A list of pagers that can be used to build a pagination menu
 +
 +`PageSize`
 +: Size of each pager
 +
 +`TotalPages`
 +: The number of pages in the paginator
 +
 +`TotalNumberOfElements`
 +: The number of elements on all pages in this paginator
 +
 +## Additional information
 +
 +The pages are built on the following form (`BLANK` means no value):
 +
 +```
 +[SECTION/TAXONOMY/BLANK]/index.html
 +[SECTION/TAXONOMY/BLANK]/page/1/index.html => redirect to  [SECTION/TAXONOMY/BLANK]/index.html
 +[SECTION/TAXONOMY/BLANK]/page/2/index.html
 +....
 +```
 +
 +
 +[`first`]: /functions/first/
 +[`last`]: /functions/last/
 +[`after`]: /functions/after/
 +[configuration]: /getting-started/configuration/
 +[lists]: /templates/lists/
 +[where]: /functions/where/
index 9c9429b048d1055931c1071eab69f620dabe7af9,0000000000000000000000000000000000000000..6f8f0d84150dd0c0cf53dde561781712389ff5b4
mode 100644,000000..100644
--- /dev/null
@@@ -1,171 -1,0 +1,167 @@@
- ```golang
 +---
 +title: Partial Templates
 +linktitle: Partial Templates
 +description: Partials are smaller, context-aware components in your list and page templates that can be used economically to keep your templating DRY.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [lists,sections,partials]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 90
 +weight: 90
 +sections_weight: 90
 +draft: false
 +aliases: [/templates/partial/,/layout/chrome/,/extras/analytics/]
 +toc: true
 +---
 +
 +## Partial Template Lookup Order
 +
 +Partial templates---like [single page templates][singletemps] and [list page templates][listtemps]---have a specific [lookup order][]. However, partials are simpler in that Hugo will only check in two places:
 +
 +1. `layouts/partials/*<PARTIALNAME>.html`
 +2. `themes/<THEME>/layouts/partials/*<PARTIALNAME>.html`
 +
 +This allows a theme's end user to copy a partial's contents into a file of the same name for [further customization][customize].
 +
 +## Use Partials in your Templates
 +
 +All partials for your Hugo project are located in a single `layouts/partials` directory. For better organization, you can create multiple subdirectories within `partials` as well:
 +
 +```
 +.
 +└── layouts
 +    └── partials
 +        ├── footer
 +        │   ├── scripts.html
 +        │   └── site-footer.html
 +        ├── head
 +        │   ├── favicons.html
 +        │   ├── metadata.html
 +        │   ├── prerender.html
 +        │   └── twitter.html
 +        └── header
 +            ├── site-header.html
 +            └── site-nav.html
 +```
 +
 +All partials are called within your templates using the following pattern:
 +
 +```
 +{{ partial "<PATH>/<PARTIAL>.html" . }}
 +```
 +
 +{{% note %}}
 +One of the most common mistakes with new Hugo users is failing to pass a context to the partial call. In the pattern above, note how "the dot" (`.`) is required as the second argument to give the partial context. You can read more about "the dot" in the [Hugo templating introduction](/templates/introduction/).
 +{{% /note %}}
 +
 +As shown in the above example directory structure, you can nest your directories within `partials` for better source organization. You only need to call the nested partial's path relative to the `partials` directory:
 +
- {{% code file="layouts/partials/header.html" download="header.html" %}}
- ```html
++```
 +{{ partial "header/site-header.html" . }}
 +{{ partial "footer/scripts.html" . }}
 +```
 +
 +{{% note %}}
 +Before v0.12, Hugo used the `template` call to include partial templates. When using Hugo v0.12 and newer, be sure to use the `{{ partial "<PATH>/<PARTIAL>.html" . }}` syntax. The old approach will still work but has fewer benefits.
 +{{% /note %}}
 +
 +### Variable Scoping
 +
 +The second argument in a partial call is the variable being passed down. The above examples are passing the `.`, which tells the template receiving the partial to apply the current [context][context].
 +
 +This means the partial will *only* be able to access those variables. The partial is isolated and *has no access to the outer scope*. From within the partial, `$.Var` is equivalent to `.Var`.
 +
 +### Cached Partials
 +
 +The [`partialCached` template function][partialcached] can offer significant performance gains for complex templates that don't need to be re-rendered on every invocation. The simplest usage is as follows:
 +
 +```
 +{{ partialCached "footer.html" . }}
 +```
 +
 +You can also pass additional parameters to `partialCached` to create *variants* of the cached partial.
 +
 +For example, you can tell Hugo to only render the partial `footer.html` once per section:
 +
 +```
 +{{ partialCached "footer.html" . .Section }}
 +```
 +
 +If you need to pass additional parameters to create unique variants, you can pass as many variant parameters as you need:
 +
 +```
 +{{ partialCached "footer.html" . .Params.country .Params.province }}
 +```
 +
 +Note that the variant parameters are not made available to the underlying partial template. They are only use to create a unique cache key.
 +
 +### Example `header.html`
 +
 +The following `header.html` partial template is used for [spf13.com](http://spf13.com/):
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/header.html" download="header.html" >}}
 +<!DOCTYPE html>
 +<html class="no-js" lang="en-US" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
 +<head>
 +    <meta charset="utf-8">
 +
 +    {{ partial "meta.html" . }}
 +
 +    <base href="{{ .Site.BaseURL }}">
 +    <title> {{ .Title }} : spf13.com </title>
 +    <link rel="canonical" href="{{ .Permalink }}">
 +    {{ if .RSSLink }}<link href="{{ .RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Title }}" />{{ end }}
 +
 +    {{ partial "head_includes.html" . }}
 +</head>
 +<body lang="en">
- {{% code file="layouts/partials/footer.html" download="footer.html" %}}
- ```html
++{{< /code >}}
 +
 +{{% note %}}
 +The `header.html` example partial was built before the introduction of block templates to Hugo. Read more on [base templates and blocks](/templates/base/) for defining the outer chrome or shell of your master templates (i.e., your site's head, header, and footer). You can even combine blocks and partials for added flexibility.
 +{{% /note %}}
 +
 +### Example `footer.html`
 +
 +The following `footer.html` partial template is used for [spf13.com](http://spf13.com/):
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/footer.html" download="footer.html" >}}
 +<footer>
 +  <div>
 +    <p>
 +    &copy; 2013-14 Steve Francia.
 +    <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons Attribution">Some rights reserved</a>;
 +    please attribute properly and link back. Hosted by <a href="http://servergrove.com">ServerGrove</a>.
 +    </p>
 +  </div>
 +</footer>
 +<script type="text/javascript">
 +
 +  var _gaq = _gaq || [];
 +  _gaq.push(['_setAccount', 'UA-XYSYXYSY-X']);
 +  _gaq.push(['_trackPageview']);
 +
 +  (function() {
 +    var ga = document.createElement('script');
 +    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
 +        'http://www') + '.google-analytics.com/ga.js';
 +    ga.setAttribute('async', 'true');
 +    document.documentElement.firstChild.appendChild(ga);
 +  })();
 +
 +</script>
 +</body>
 +</html>
++{{< /code >}}
 +
 +[context]: /templates/introduction/ "The most easily overlooked concept to understand about Go templating is how the dot always refers to the current context."
 +[customize]: /themes/customizing/ "Hugo provides easy means to customize themes as long as users are familiar with Hugo's template lookup order."
 +[listtemps]: /templates/lists/ "To effectively leverage Hugo's system, see how Hugo handles list pages, where content for sections, taxonomies, and the homepage are listed and ordered."
 +[lookup order]: /templates/lookup-order/ "To keep your templating dry, read the documentation on Hugo's lookup order."
 +[partialcached]: /functions/partialcached/ "Use the partial cached function to improve build times in cases where Hugo can cache partials that don't need to be rendered with every page."
 +[singletemps]: /templates/single-page-templates/ "The most common form of template in Hugo is the single content template. Read the docs on how to create templates for individual pages."
 +[themes]: /themes/
index b3c82e1d204287e92d611bb426c31c5b5a6fcd3d,0000000000000000000000000000000000000000..2dad140f5540bd928e145e20c4128d099ebf0351
mode 100644,000000..100644
--- /dev/null
@@@ -1,56 -1,0 +1,54 @@@
- ```http
 +---
 +title: Robots.txt File
 +linktitle: Robots.txt
 +description: Hugo can generate a customized robots.txt in the same way as any other template.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [robots,search engines]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 165
 +weight: 165
 +sections_weight: 165
 +draft: false
 +aliases: [/extras/robots-txt/]
 +toc: false
 +---
 +
 +To create your robots.txt as a template, first set the `enableRobotsTXT` value to `true` in your [configuration file][config]. By default, this option generates a robots.txt with the following content, which tells search engines that they are allowed to crawl everything:
 +
- {{% code file="layouts/robots.txt" download="robots.txt" %}}
- ```http
++```
 +User-agent: *
 +```
 +
 +## Robots.txt Template Lookup Order
 +
 +The [lookup order][lookup] for the `robots.txt` template is as follows:
 +
 +* `/layouts/robots.txt`
 +* `/themes/<THEME>/layout/robots.txt`
 +
 +{{% note %}}
 +If you do not want Hugo to create a default `robots.txt` or leverage the `robots.txt` template, you can hand code your own and place the file in `static`. Remember that everything in the [static directory](/getting-started/directory-structure/) is copied over as-is when Hugo builds your site.
 +{{% /note %}}
 +
 +## Robots.txt Template Example
 +
 +The following is an example `robots.txt` layout:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/robots.txt" download="robots.txt" >}}
 +User-agent: *
 +
 +{{range .Data.Pages}}
 +Disallow: {{.RelPermalink}}
 +{{end}}
++{{< /code >}}
 +
 +This template disallows all the pages of the site by creating one `Disallow` entry for each page.
 +
 +[config]: /getting-started/configuration/
 +[lookup]: /templates/lookup-order/
 +[robots]: http://www.robotstxt.org/
index d3cc60878e8da7186fad118bb25ed97d34539f98,0000000000000000000000000000000000000000..21ba4bc9f49f26b493fd32fd22b987ac1bf40a50
mode 100644,000000..100644
--- /dev/null
@@@ -1,142 -1,0 +1,142 @@@
- ```toml
 +---
 +title: RSS Templates
 +linktitle: RSS Templates
 +description: Hugo ships with its own RSS 2.0 template that requires almost no configuration, or you can create your own RSS templates.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [rss, xml]
 +categories: [templates]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 150
 +weight: 150
 +sections_weight: 150
 +draft: false
 +aliases: [/templates/rss/]
 +toc: true
 +---
 +
 +## RSS Template Lookup Order
 +
 +You can use a single RSS template to generate all of your RSS feeds or create a specific template for each individual feed.
 +
 +1. `/layouts/section/<section>.rss.xml`
 +2. `/layouts/_default/rss.xml`
 +3. `/themes/<theme>/layouts/section/<section>.rss.xml`
 +4. `/themes/<theme>/layouts/_default/rss.xml`
 +
 +{{% note "Hugo Ships with an RSS Template" %}}
 +Hugo ships with its own [RSS 2.0 template](#the-embedded-rss-xml). The embedded template will be sufficient for most use cases.
 +{{% /note %}}
 +
 +RSS pages are of the type `Page` and have all the [page variables](/layout/variables/) available to use in the templates.
 +
 +### Section RSS
 +
 +A [section’s][section] RSS will be rendered at `/<SECTION>/index.xml` (e.g., http://spf13.com/project/index.xml).
 +
 +Hugo provides the ability for you to define any RSS type you wish and can have different RSS files for each section and taxonomy.
 +
 +## Lookup Order for RSS Templates
 +
 +### Main RSS
 +
 +1. `/layouts/rss.xml`
 +2. `/layouts/_default/rss.xml`
 +3.  Embedded rss.xml
 +
 +### Section RSS
 +
 +1. `/layouts/section/<SECTION>.rss.xml`
 +2. `/layouts/_default/rss.xml`
 +3. `/themes/<THEME>/layouts/section/<SECTION>.rss.xml`
 +4. `/themes/<THEME>/layouts/_default/rss.xml`
 +5. Embedded rss.xml
 +
 +### Taxonomy RSS
 +
 +1. `/layouts/taxonomy/<SINGULAR>.rss.xml`
 +2. `/layouts/_default/rss.xml`
 +3. `/themes/<THEME>/layouts/taxonomy/<SINGULAR>.rss.xml`
 +4. `/themes/<THEME>/layouts/_default/rss.xml`
 +5. Embedded rss.xml
 +
 +## Configure RSS
 +
 +By default, Hugo will create an unlimited number of RSS entries. You can limit the number of articles included in the built-in RSS templates by assigning a numeric value to `rssLimit:` field in your project's [`config` file][config].
 +
 +The following values will also be included in the RSS output if specified in your site’s configuration:
 +
- ```xml
++```
 +languageCode = "en-us"
 +copyright = "This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License."
 +
 +[author]
 +    name = "My Name Here"
 +```
 +
 +## The Embedded rss.xml
 +
 +This is the default RSS template that ships with Hugo. It adheres to the [RSS 2.0 Specification][RSS 2.0].
 +
- ```xml
++```
 +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
 +  <channel>
 +    <title>{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}</title>
 +    <link>{{ .Permalink }}</link>
 +    <description>Recent content {{ with .Title }}in {{.}} {{ end }}on {{ .Site.Title }}</description>
 +    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
 +    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
 +    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
 +    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
 +    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
 +    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
 +    <atom:link href="{{.URL}}" rel="self" type="application/rss+xml" />
 +    {{ range first 15 .Data.Pages }}
 +    <item>
 +      <title>{{ .Title }}</title>
 +      <link>{{ .Permalink }}</link>
 +      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
 +      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
 +      <guid>{{ .Permalink }}</guid>
 +      <description>{{ .Content | html }}</description>
 +    </item>
 +    {{ end }}
 +  </channel>
 +</rss>
 +```
 +
 +{{% warning "XML Header" %}}
 +Hugo will automatically add the following header line to this file on render. Please do *not* include this in the template as it's not valid HTML.
- ```html
++```
 +<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 +```
 +{{% /warning %}}
 +
 +## Reference your RSS Feed in `<head>`
 +
 +In your `header.html` template, you can specify your RSS feed in your `<head></head>` tag like this:
 +
- ```html
++```
 +{{ if .RSSLink }}
 +  <link href="{{ .RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Site.Title }}" />
 +  <link href="{{ .RSSLink }}" rel="feed" type="application/rss+xml" title="{{ .Site.Title }}" />
 +{{ end }}
 +```
 +
 +...with the auto-discovery link specified by the line with `rel="alternate"`.
 +
 +The `.RSSLink` will render the appropriate RSS feed URL for the section, whether it's everything, posts in a section, or a taxonomy.
 +
 +If you reference your RSS link, be sure to specify the MIME type with `type="application/rss+xml"`.
 +
++```
 +<a href="{{ .URL }}" type="application/rss+xml" target="_blank">{{ .SomeText }}</a>
 +```
 +
 +[config]: /getting-started/configuration/
 +[embedded]: #the-embedded-rss-xml
 +[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification"
 +[section]: /content-management/sections/
index 8c830f219dbf16fb026a9344b0e352a888b4ea18,0000000000000000000000000000000000000000..95b1b5ad5bb97f82dc0e3d5d7890cb8ceda9eade
mode 100644,000000..100644
--- /dev/null
@@@ -1,126 -1,0 +1,124 @@@
- {{% code file="layouts/_default/section.html" download="section.html" %}}
- ```html
 +---
 +title: Section Page Templates
 +linktitle: Section Templates
 +description: Templates used for section pages are **lists** and therefore have all the variables and methods available to list pages.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [lists,sections]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 40
 +weight: 40
 +sections_weight: 40
 +draft: false
 +aliases: [/templates/sections/]
 +toc: true
 +---
 +
 +## Add Content and Front Matter to Section Templates
 +
 +To effectively leverage section page templates, you should first understand Hugo's [content organization](/content-management/organization/) and, specifically, the purpose of `_index.md` for adding content and front matter to section and other list pages.
 +
 +## Section Template Lookup Order
 +
 +The [lookup order][lookup] for section templates is as follows:
 +
 +1. `/layouts/section/<SECTION>.html`
 +2. `/layouts/<SECTION>/list.html`
 +3. `/layouts/_default/section.html`
 +4. `/layouts/_default/list.html`
 +5. `/themes/<THEME>/layouts/section/<SECTION>.html`
 +6. `/themes/<THEME>/layouts/<SECTION>/list.html`
 +7. `/themes/<THEME>/layouts/_default/section.html`
 +8. `/themes/<THEME>/layouts/_default/list.html`
 +
 +## `.Site.GetPage` with Sections
 +
 +Every `Page` in Hugo has a `.Kind` attribute. `Kind` can easily be combined with the [`where` function][where] in your templates to create kind-specific lists of content. This method is ideal for creating lists, but there are times where you may want to fetch just the index page of a single section via the section's path.
 +
 +The [`.GetPage` function][getpage] looks up an index page of a given `Kind` and `path`.
 +
 +{{% note %}}
 +`.GetPage` is not currently supported to grab single content files but *may* be supported in the future.
 +{{% /note %}}
 +
 +You can call `.Site.GetPage` with two arguments: `kind` and `kind value`.
 +
 +These are the valid values for 'kind':
 +
 +1. `home`
 +2. `section`
 +3. `taxonomy`
 +4. `taxonomyTerm`
 +
 +
 +## Example: Creating a Default Section Template
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/section.html" download="section.html" >}}
 +{{ define "main" }}
 +  <main>
 +      {{ .Content }}
 +          <ul class="contents">
 +          {{ range .Paginator.Pages }}
 +              <li>{{.Title}}
 +                  <div>
 +                    {{ partial "summary.html" . }}
 +                  </div>
 +              </li>
 +          {{ end }}
 +          </ul>
 +      {{ partial "pagination.html" . }}
 +  </main>
 +{{ end }}
- ```bash
++{{< /code >}}
 +
 +### Example: Using `.Site.GetPage`
 +
 +The `.Site.GetPage` example that follows assumes the following project directory structure:
 +
- ```html
++```
 +.
 +└── content
 +    ├── blog
 +    │   ├── _index.md # "title: My Hugo Blog" in the front matter
 +    │   ├── post-1.md
 +    │   ├── post-2.md
 +    │   └── post-3.md
 +    └── events #Note there is no _index.md file in "events"
 +        ├── event-1.md
 +        └── event-2.md
 +```
 +
 +`.Site.GetPage` will return `nil` if no `_index.md` page is found. Therefore, if `content/blog/_index.md` does not exist, the template will output the section name:
 +
- ```html
++```
 +<h1>{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}</h1>
 +```
 +
 +Since `blog` has a section index page with front matter at `content/blog/_index.md`, the above code will return the following result:
 +
- ```html
++```
 +<h1>My Hugo Blog</h1>
 +```
 +
 +If we try the same code with the `events` section, however, Hugo will default to the section title because there is no `content/events/_index.md` from which to pull content and front matter:
 +
- ```html
++```
 +<h1>{{ with .Site.GetPage "section" "events" }}{{ .Title }}{{ end }}</h1>
 +```
 +
 +Which then returns the following:
 +
++```
 +<h1>Events</h1>
 +```
 +
 +
 +[contentorg]: /content-management/organization/
 +[getpage]: /functions/getpage/
 +[lists]: /templates/lists/
 +[lookup]: /templates/lookup-order/
 +[where]: /functions/where/
index 9e56100220bddebf4359bed063a1ac2f84110c09,0000000000000000000000000000000000000000..585d538d844907a8aa6e13accf0310b2e48f6a52
mode 100644,000000..100644
--- /dev/null
@@@ -1,372 -1,0 +1,348 @@@
- title: Creating Your Own Shortcodes
 +---
- ```golang
++title: Create Your Own Shortcodes
 +linktitle: Shortcode Templates
 +description: You can extend Hugo's built-in shortcodes by creating your own using the same templating syntax as that for single and list pages.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [shortcodes]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 100
 +weight: 100
 +sections_weight: 100
 +draft: false
 +aliases: []
 +toc: true
 +---
 +
 +Shortcodes are a means to consolidate templating into small, reusable snippets that you can embed directly inside of your content. In this sense, you can think of shortcodes as the intermediary between [page and list templates][templates] and [basic content files][].
 +
 +{{% note %}}
 +Hugo also ships with built-in shortcodes for common use cases. (See [Content Management: Shortcodes](/content-management/shortcodes/).)
 +{{% /note %}}
 +
 +## Create Custom Shortcodes
 +
 +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.
 +
 +### 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.
 +
 +### Shortcode Template Lookup Order
 +
 +Shortcode templates have a simple [lookup order][]:
 +
 +1. `/layouts/shortcodes/<SHORTCODE>.html`
 +2. `/themes/<THEME>/layouts/shortcodes/<SHORTCODE>.html`
 +
 +### Positional vs Named Parameters
 +
 +You can create shortcodes using the following types of parameters:
 +
 +* Positional parameters
 +* Named parameters
 +* Positional *or* named parameters (i.e, "flexible")
 +
 +In shortcodes with positional parameters, the order of the parameters is important. If a shortcode has a single required value (e.g., the `youtube` shortcode below), positional parameters work very well and require less typing from content authors.
 +
 +For more complex layouts with multiple or optional parameters, named parameters work best. While less terse, named parameters require less memorization from a content author and can be added in a shortcode declaration in any order.
 +
 +Allowing both types of parameters (i.e., a "flexible" shortcode) is useful for complex layouts where you want to set default values that can be easily overridden by users.
 +
 +### Access Parameters
 +
 +All shortcode parameters can be accessed via the `.Get` method. Whether you pass a key (i.e., string) or a number to the `.Get` method depends on whether you are accessing a named or positional parameter, respectively.
 +
 +To access a parameter by name, use the `.Get` method followed by the named parameter as a quoted string:
 +
- ```golang
++```
 +{{ .Get "class" }}
 +```
 +
 +To access a parameter by position, use the `.Get` followed by a numeric position, keeping in mind that positional parameters are zero-indexed:
 +
- ```golang
++```
 +{{ .Get 0 }}
 +```
 +
 +`with` is great when the output depends on a parameter being set:
 +
- ```golang
++```
 +{{ with .Get "class"}} class="{{.}}"{{ end }}
 +```
 +
 +`.Get` can also be used to check if a parameter has been provided. This is
 +most helpful when the condition depends on either of the values, or both:
 +
- ```golang
++```
 +{{ or .Get "title" | .Get "alt" | if }} alt="{{ with .Get "alt"}}{{.}}{{else}}{{.Get "title"}}{{end}}"{{ end }}
 +```
 +
 +#### `.Inner`
 +
 +If a closing shortcode is used, the `.Inner` variable will be populated with all of the content between the opening and closing shortcodes. If a closing shortcode is required, you can check the length of `.Inner` as an indicator of its existence.
 +
 +A shortcode with content declared via the `.Inner` variable can also be declared without the inline content and without the closing shortcode by using the self-closing syntax:
 +
- ```md
++```
 +{{</* innershortcode /*/>}}
 +```
 +
 +#### `.Params`
 +
 +The `.Params` variable in shortcodes contains the list parameters passed to shortcode for more complicated use cases. You can also access higher-scoped parameters with the following logic:
 +
 +`$.Params`
 +: these are the parameters passed directly into the shortcode declaration (e.g., a YouTube video ID)
 +
 +`$.Page.Params`
 +: refers to the page's params; the "page" in this case refers to the content file in which the shortcode is declared (e.g., a `shortcode_color` field in a content's front matter could be accessed via `$.Page.Params.shortcode_color`).
 +
 +`$.Page.Site.Params`
 +: refers to global variables as defined in your [site's configuration file][config].
 +
 +#### `.IsNameParams`
 +
 +The `.IsNamedParams` variable checks whether the shortcode declaration uses named parameters and returns a boolean value.
 +
 +For example, you could create an `image` shortcode that can take either a `src` named parameter or the first positional parameter, depending on the preference of the content's author. Let's assume the `image` shortcode is called as follows:
 +
- ```html
++```
 +{{</* image src="images/my-image.jpg"*/>}}
 +```
 +
 +You could then include the following as part of your shortcode templating:
 +
- ```markdown
++```
 +{{ if .IsNamedParams }}
 +<img src="{{.Get "src" alt="">
 +{{ else }}
 +<img src="{{.Get 0}}" alt="">
 +{{ end }}.
 +```
 +
 +See the [example Vimeo shortcode][vimeoexample] below for `.IsNamedParams` in action.
 +
 +{{% warning %}}
 +While you can create shortcode templates that accept both positional and named parameters, you *cannot* declare shortcodes in content with a mix of parameter types. Therefore, a shortcode declared like `{{</* image src="images/my-image.jpg" "This is my alt text" */>}}` will return an error.
 +{{% /warning %}}
 +
 +You can also use the variable `.Page` to access all the normal [page variables][pagevars].
 +
 +A shortcodes can also be nested. In a nested shortcode, you can access the parent shortcode context with [`.Parent` variable][shortcodesvars]. This can be very useful for inheritance of common shortcode parameters from the root.
 +
 +## Custom Shortcode Examples
 +
 +The following are examples of the different types of shortcodes you can create via shortcode template files in `/layouts/shortcodes`.
 +
 +### Single-word Example: `year`
 +
 +Let's assume you would like to keep mentions of your copyright year current in your content files without having to continually review your markdown. Your goal is to be able to call the shortcode as follows:
 +
- {{% code file="/layouts/shortcodes/year.html" %}}
- ```golang
++```
 +{{</* year */>}}
 +```
 +
- ```
- {{% /code %}}
++{{< code file="/layouts/shortcodes/year.html" >}}
 +{{ .Page.Now.Year }}
- ```golang
++{{< /code >}}
 +
 +### Single Positional Example: `youtube`
 +
 +Embedded videos are a common addition to markdown content that can quickly become unsightly. The following is the code used by [Hugo's built-in YouTube shortcode][youtubeshortcode]:
 +
- {{% code file="/layouts/shortcodes/youtube.html" %}}
- ```html
++```
 +{{</* youtube 09jf3ow9jfw */>}}
 +```
 +
 +Would load the template at `/layouts/shortcodes/youtube.html`:
 +
- ```
- {{% /code %}}
++{{< code file="/layouts/shortcodes/youtube.html" >}}
 +<div class="embed video-player">
 +<iframe class="youtube-player" type="text/html" width="640" height="385" src="http://www.youtube.com/embed/{{ index .Params 0 }}" allowfullscreen frameborder="0">
 +</iframe>
 +</div>
- {{% code file="youtube-embed.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
- ```
- {{% /code %}}
++{{< code file="youtube-embed.html" copy="false" >}}
 +<div class="embed video-player">
 +    <iframe class="youtube-player" type="text/html"
 +        width="640" height="385"
 +        src="http://www.youtube.com/embed/09jf3ow9jfw"
 +        allowfullscreen frameborder="0">
 +    </iframe>
 +</div>
- {{% code file="content-image.md" %}}
- ```golang
++{{< /code >}}
 +
 +### Single Named Example: `image`
 +
 +Let's say you want to create your own `img` shortcode rather than use Hugo's built-in [`figure` shortcode][figure]. Your goal is to be able to call the shortcode as follows in your content files:
 +
- ```
- {{% /code %}}
++{{< code file="content-image.md" >}}
 +{{</* img src="/media/spf13.jpg" title="Steve Francia" */>}}
- {{% code file="/layouts/shortcodes/img.html" %}}
- ```html
++{{< /code >}}
 +
 +You have created the shortcode at `/layouts/shortcodes/img.html`, which loads the following shortcode template:
 +
- ```
- {{% /code %}}
++{{< code file="/layouts/shortcodes/img.html" >}}
 +<!-- image -->
 +<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
 +    {{ with .Get "link"}}<a href="{{.}}">{{ end }}
 +        <img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
 +    {{ if .Get "link"}}</a>{{ end }}
 +    {{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
 +    <figcaption>{{ if isset .Params "title" }}
 +        <h4>{{ .Get "title" }}</h4>{{ end }}
 +        {{ if or (.Get "caption") (.Get "attr")}}<p>
 +        {{ .Get "caption" }}
 +        {{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
 +            {{ .Get "attr" }}
 +        {{ if .Get "attrlink"}}</a> {{ end }}
 +        </p> {{ end }}
 +    </figcaption>
 +    {{ end }}
 +</figure>
 +<!-- image -->
- {{% code file="img-output.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
 +Would be rendered as:
 +
- ```
- {{% /code %}}
++{{< code file="img-output.html" copy="false" >}}
 +<figure >
 +    <img src="/media/spf13.jpg"  />
 +    <figcaption>
 +        <h4>Steve Francia</h4>
 +    </figcaption>
 +</figure>
- ```golang
++{{< /code >}}
 +
 +### Single Flexible Example: `vimeo`
 +
- {{% code file="/layouts/shortcodes/vimeo.html" %}}
- ```html
++```
 +{{</* vimeo 49718712 */>}}
 +{{</* vimeo id="49718712" class="flex-video" */>}}
 +```
 +
 +Would load the template found at `/layouts/shortcodes/vimeo.html`:
 +
- ```
- {{% /code %}}
++{{< code file="/layouts/shortcodes/vimeo.html" >}}
 +{{ if .IsNamedParams }}
 +  <div class="{{ if .Get "class" }}{{ .Get "class" }}{{ else }}vimeo-container{{ end }}">
 +    <iframe src="//player.vimeo.com/video/{{ .Get "id" }}" allowfullscreen></iframe>
 +  </div>
 +{{ else }}
 +  <div class="{{ if len .Params | eq 2 }}{{ .Get 1 }}{{ else }}vimeo-container{{ end }}">
 +    <iframe src="//player.vimeo.com/video/{{ .Get 0 }}" allowfullscreen></iframe>
 +  </div>
 +{{ end }}
- {{% code file="vimeo-iframes.html" copy="false" %}}
- ```html
++{{< /code >}}
 +
 +Would be rendered as:
 +
- ```
- {{% /code %}}
++{{< code file="vimeo-iframes.html" copy="false" >}}
 +<div class="vimeo-container">
 +  <iframe src="//player.vimeo.com/video/49718712" allowfullscreen></iframe>
 +</div>
 +<div class="flex-video">
 +  <iframe src="//player.vimeo.com/video/49718712" allowfullscreen></iframe>
 +</div>
- {{% code file="highlight-example.md" %}}
- ```markdown
++{{< /code >}}
 +
 +### Paired Example: `highlight`
 +
 +The following is taken from `highlight`, which is a [built-in shortcode][] that ships with Hugo.
 +
- ```
- {{% /code %}}
++{{< code file="highlight-example.md" >}}
 +{{</* highlight html */>}}
 +  <html>
 +    <body> This HTML </body>
 +  </html>
 +{{</* /highlight */>}}
- ```golang
++{{< /code >}}
 +
 +The template for the `highlight` shortcode uses the following code, which is already included in Hugo:
 +
- {{% code file="syntax-highlighted.html" copy="false" %}}
- ```html
++```
 +{{ .Get 0 | highlight .Inner  }}
 +```
 +
 +The rendered output of the HTML example code block will be as follows:
 +
- ```
- {{% /code %}}
++{{< code file="syntax-highlighted.html" copy="false" >}}
 +<div class="highlight" style="background: #272822"><pre style="line-height: 125%"><span style="color: #f92672">&lt;html&gt;</span>
 +    <span style="color: #f92672">&lt;body&gt;</span> This HTML <span style="color: #f92672">&lt;/body&gt;</span>
 +<span style="color: #f92672">&lt;/html&gt;</span>
 +</pre></div>
- {{% code file="layouts/shortcodes/gallery.html" %}}
- ```html
++{{< /code >}}
 +
 +{{% note %}}
 +The preceding shortcode makes use of a Hugo-specific template function called `highlight`, which uses [Pygments](http://pygments.org) to add syntax highlighting to the example HTML code block. See the [developer tools page on syntax highlighting](/tools/syntax-highlighting/) for more information.
 +{{% /note %}}
 +
 +### Nested Shortcode: Image Gallery
 +
 +Hugo's [`.Parent` shortcode variable][parent] returns a boolean value depending on whether the shortcode in question is called within the context of a *parent* shortcode. This provides an inheritance model for common shortcode parameters.
 +
 +The following example is contrived but demonstrates the concept. Assume you have a `gallery` shortcode that expects one named `class` parameter:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/shortcodes/gallery.html" >}}
 +<div class="{{.Get "class"}}">
 +  {{.Inner}}
 +</div>
- {{% code file="layouts/shortcodes/image.html" %}}
- ```html
++{{< /code >}}
 +
 +You also have an `image` shortcode with a single named `src` parameter that you want to call inside of `gallery` and other shortcodes so that the parent defines the context of each `image`:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/shortcodes/image.html" >}}
 +{{- $src := .Get "src" -}}
 +{{- with .Parent -}}
 +  <img src="{{$src}}" class="{{.Get "class"}}-image">
 +{{- else -}}
 +  <img src="{{$src}}">
 +{{- end }}
- ```markdown
++{{< /code >}}
 +
 +You can then call your shortcode in your content as follows:
 +
- ```html
++```
 +{{</* gallery class="content-gallery" */>}}
 +  {{</* img src="/images/one.jpg" */>}}
 +  {{</* img src="/images/two.jpg" */>}}
 +{{</* /gallery */>}}
 +{{</* img src="/images/three.jpg" */>}}
 +```
 +
 +This will output the following HTML. Note how the first two `image` shortcodes inherit the `class` value of `content-gallery` set with the call to the parent `gallery`, whereas the third `image` only uses `src`:
 +
++```
 +<div class="content-gallery">
 +    <img src="/images/one.jpg" class="content-gallery-image">
 +    <img src="/images/two.jpg" class="content-gallery-image">
 +</div>
 +<img src="/images/three.jpg">
 +```
 +
 +## More Shortcode Examples
 +
 +More shortcode examples can be found in the [shortcodes directory for spf13.com][spfscs] and the [shortcodes directory for the Hugo docs][docsshortcodes].
 +
 +[basic content files]: /content-management/formats/ "See how Hugo leverages markdown--and other supported formats--to create content for your website."
 +[built-in shortcode]: /content-management/shortcodes/
 +[config]: /getting-started/configuration/ "Learn more about Hugo's built-in configuration variables as well as how to us your site's configuration file to include global key-values that can be used throughout your rendered website."
 +[Content Management: Shortcodes]: /content-management/shortcodes/#using-hugo-s-built-in-shortcodes "Check this section if you are not familiar with the definition of what a shortcode is or if you are unfamiliar with how to use Hugo's built-in shortcodes in your content files."
 +[source organization]: /getting-started/directory-structure/#directory-structure-explained "Learn how Hugo scaffolds new sites and what it expects to find in each of your directories."
 +[docsshortcodes]: https://github.com/gohugoio/hugo/tree/master/docs/layouts/shortcodes "See the shortcode source directory for the documentation site you're currently reading."
 +[figure]: /content-management/shortcodes/#figure
 +[hugosc]: /content-management/shortcodes/#using-hugo-s-built-in-shortcodes
 +[lookup order]: /templates/lookup-order/ "See the order in which Hugo traverses your template files to decide where and how to render your content at build time"
 +[pagevars]: /variables/page/ "See which variables you can leverage in your templating for page vs list templates."
 +[parent]: /variables/shortcodes/
 +[shortcodesvars]: /variables/shortcodes/ "Certain variables are specific to shortcodes, although most .Page variables can be accessed within your shortcode template."
 +[spfscs]: https://github.com/spf13/spf13.com/tree/master/layouts/shortcodes "See more examples of shortcodes by visiting the shortcode directory of the source for spf13.com, the blog of Hugo's creator, Steve Francia."
 +[templates]: /templates/ "The templates section of the Hugo docs."
 +[vimeoexample]: #single-flexible-example-vimeo
 +[youtubeshortcode]: /content-management/shortcodes/#youtube "See how to use Hugo's built-in YouTube shortcode."
index c1293924e595b080f0f85994b1d6d2c140f38a48,0000000000000000000000000000000000000000..20942e5d520a939b58a5e258769b0b3b43526e48
mode 100644,000000..100644
--- /dev/null
@@@ -1,107 -1,0 +1,105 @@@
- {{% code file="layouts/post/single.html" download="single.html" %}}
- ```html
 +---
 +title: Single Page Templates
 +linktitle:
 +description: The primary view of content in Hugo is the single view. Hugo will render every Markdown file provided with a corresponding single template.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-06
 +categories: [templates]
 +#tags: [page]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +aliases: [/layout/content/]
 +toc: true
 +---
 +
 +## Single Page Template Lookup Order
 +
 +You can specify a [content's `type`][content type] and `layout` in a single content file's [front matter][]. However, you cannot specify `section` because this is determined based on file location (see [content section][section]).
 +
 +Hugo assumes your content section and content type are the same unless you tell Hugo otherwise by providing a `type` directly in the front matter of a content file. This is why #1 and #3 come before #2 and #4, respectively, in the following lookup order. Values in angle brackets (`<>`) are variable.
 +
 +1. `/layouts/<TYPE>/<LAYOUT>.html`
 +2. `/layouts/<SECTION>>/<LAYOUT>.html`
 +3. `/layouts/<TYPE>/single.html`
 +4. `/layouts/<SECTION>/single.html`
 +5. `/layouts/_default/single.html`
 +6. `/themes/<THEME>/layouts/<TYPE>/<LAYOUT>.html`
 +7. `/themes/<THEME>/layouts/<SECTION>/<LAYOUT>.html`
 +8. `/themes/<THEME>/layouts/<TYPE>/single.html`
 +9. `/themes/<THEME>/layouts/<SECTION>/single.html`
 +10. `/themes/<THEME>/layouts/_default/single.html`
 +
 +## Example Single Page Templates
 +
 +Content pages are of the type `page` and will therefore have all the [page variables][pagevars] and [site variables][] available to use in their templates.
 +
 +### `post/single.html`
 +
 +This single page template makes use of Hugo [base templates][], the [`.Format` function][] for dates, the [`.WordCount` page variable][pagevars], and ranges through the single content's specific [taxonomies][pagetaxonomy]. [`with`][] is also used to check whether the taxonomies are set in the front matter.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/post/single.html" download="single.html" >}}
 +{{ define "main" }}
 +<section id="main">
 +  <h1 id="title">{{ .Title }}</h1>
 +  <div>
 +        <article id="content">
 +           {{ .Content }}
 +        </article>
 +  </div>
 +</section>
 +<aside id="meta">
 +    <div>
 +    <section>
 +      <h4 id="date"> {{ .Date.Format "Mon Jan 2, 2006" }} </h4>
 +      <h5 id="wordcount"> {{ .WordCount }} Words </h5>
 +    </section>
 +    {{ with .Params.topics }}
 +    <ul id="topics">
 +      {{ range . }}
 +        <li><a href="{{ "topics" | absURL}}{{ . | urlize }}">{{ . }}</a> </li>
 +      {{ end }}
 +    </ul>
 +    {{ end }}
 +    {{ with .Params.tags }}
 +    <ul id="tags">
 +      {{ range . }}
 +        <li> <a href="{{ "tags" | absURL }}{{ . | urlize }}">{{ . }}</a> </li>
 +      {{ end }}
 +    </ul>
 +    {{ end }}
 +    </div>
 +    <div>
 +        {{ with .PrevInSection }}
 +          <a class="previous" href="{{.Permalink}}"> {{.Title}}</a>
 +        {{ end }}
 +        {{ with .NextInSection }}
 +          <a class="next" href="{{.Permalink}}"> {{.Title}}</a>
 +        {{ end }}
 +    </div>
 +</aside>
 +{{ end }}
++{{< /code >}}
 +
 +To easily generate new instances of a content type (e.g., new `.md` files in a section like `project/`) with preconfigured front matter, use [content archetypes][archetypes].
 +
 +[archetypes]: /content-management/archetypes/
 +[base templates]: /templates/base/
 +[config]: /getting-started/configuration/
 +[content type]: /content-management/types/
 +[directory structure]: /getting-started/directory-structure/
 +[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
 +[`.Format` function]: /functions/format/
 +[front matter]: /content-management/front-matter/
 +[pagetaxonomy]: /templates/taxonomy-templates/#displaying-a-single-piece-of-content-s-taxonomies
 +[pagevars]: /variables/page/
 +[partials]: /templates/partials/
 +[section]: /content-management/sections/
 +[site variables]: /variables/site/
 +[spf13]: http://spf13.com/
 +[`with`]: /functions/with/
index 740fdbf213c5d5212d6f74b645e3dab506ca77b5,0000000000000000000000000000000000000000..43bd7ff395c5692e54ca0bad53bf944d7a3bfc36
mode 100644,000000..100644
--- /dev/null
@@@ -1,75 -1,0 +1,75 @@@
- ```xml
 +---
 +title: Sitemap Template
 +# linktitle: Sitemap
 +description: Hugo ships with a built-in template file observing the v0.9 of the Sitemap Protocol, but you can override this template if needed.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [sitemap, xml]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 160
 +weight: 160
 +sections_weight: 160
 +draft: false
 +aliases: [/layout/sitemap/,/templates/sitemap/]
 +toc: false
 +---
 +
 +A single Sitemap template is used to generate the `sitemap.xml` file.
 +Hugo automatically comes with this template file. *No work is needed on
 +the users' part unless they want to customize `sitemap.xml`.*
 +
 +A sitemap is a `Page` and therefore has all the [page variables][pagevars] available to use in this template along with Sitemap-specific ones:
 +
 +`.Sitemap.ChangeFreq`
 +: The page change frequency
 +
 +`.Sitemap.Priority`
 +: The priority of the page
 +
 +`.Sitemap.Filename`
 +: The sitemap filename
 +
 +If provided, Hugo will use `/layouts/sitemap.xml` instead of the internal `sitemap.xml` template that ships with Hugo.
 +
 +## Hugo’s sitemap.xml
 +
 +This template respects the version 0.9 of the [Sitemap Protocol](http://www.sitemaps.org/protocol.html).
 +
- ```toml
++```
 +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 +  {{ range .Data.Pages }}
 +  <url>
 +    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
 +    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
 +    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
 +    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}
 +  </url>
 +  {{ end }}
 +</urlset>
 +```
 +
 +{{% note %}}
 +Hugo will automatically add the following header line to this file
 +on render. Please don't include this in the template as it's not valid HTML.
 +
 +`<?xml version="1.0" encoding="utf-8" standalone="yes" ?>`
 +{{% /note %}}
 +
 +## Configure `sitemap.xml`
 +
 +Defaults for `<changefreq>`, `<priority>` and `filename` values can be set in the site's config file, e.g.:
 +
++```
 +[sitemap]
 +  changefreq = "monthly"
 +  priority = 0.5
 +  filename = "sitemap.xml"
 +```
 +
 +The same fields can be specified in an individual content file's front matter in order to override the value assigned to that piece of content at render time.
 +
 +[pagevars]: /variables/page/
index e2a40c3b72254084da08575ee7002325aa9e2da1,0000000000000000000000000000000000000000..a13e2f2ecb59cc095811cda95e096a4c186bef01
mode 100644,000000..100644
--- /dev/null
@@@ -1,341 -1,0 +1,337 @@@
- A taxonomy terms page will be rendered at `yoursite.com/<PLURALTAXONOMYNAME>`/ (e.g., http://spf13.com/topics/) according to the following lookup order:
 +---
 +title: Taxonomy Templates
 +# linktitle:
 +description: Taxonomy templating includes taxonomy list pages, taxonomy terms pages, and using taxonomies in your single page templates.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [taxonomies,metadata,front matter,terms]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 50
 +weight: 50
 +sections_weight: 50
 +draft: false
 +aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/, /templates/taxonomies/, /templates/taxonomy/]
 +toc: true
 +---
 +
 +<!-- NOTE! Check on https://github.com/gohugoio/hugo/issues/2826 for shifting of terms' pages to .Data.Pages AND
 +https://discourse.gohugo.io/t/how-to-specify-category-slug/4856/15 for original discussion.-->
 +
 +Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications that demonstrate logical relationships between content. See [Taxonomies under Content Management](/content-management/taxonomies) if you are unfamiliar with how Hugo leverages this powerful feature.
 +
 +Hugo provides multiple ways to use taxonomies throughout your project templates:
 +
 +* Order the way the terms for a taxonomy are displayed in a [taxonomy terms template](#taxonomy-terms-template)
 +* Order the way content associated with a taxonomy term is displayed in a [taxonomy list template](#taxonomy-list-template)
 +* List a single content's taxonomy terms within a [single page template][]
 +
 +## Taxonomy List Templates
 +
 +Taxonomy list page templates are lists and therefore have all the variables and methods available to [list pages][lists].
 +
 +### Taxonomy List Template Lookup Order
 +
 +A taxonomy will be rendered at /`PLURAL`/`TERM`/ (e.g., http://spf13.com/topics/golang/) according to the following lookup order:
 +
 +1. `/layouts/taxonomy/<SINGULAR>.html`
 +2. `/layouts/_default/taxonomy.html`
 +3. `/layouts/_default/list.html`
 +4. `/themes/<THEME>/layouts/taxonomy/<SINGULAR>.html`
 +5. `/themes/<THEME>/layouts/_default/taxonomy.html`
 +6. `/themes/<THEME>/layouts/_default/list.html`
 +
 +## Taxonomy Terms Template
 +
 +### Taxonomy Terms Templates Lookup Order
 +
- ```go
++A taxonomy terms page will be rendered at `example.com/<PLURALTAXONOMYNAME>`/ (e.g., http://spf13.com/topics/) according to the following lookup order:
 +
 +1. `/layouts/taxonomy/<SINGULAR>.terms.html`
 +2. `/layouts/_default/terms.html`
 +3. `/themes/<THEME>/layouts/taxonomy/<SINGULAR>.terms.html`
 +4. `/themes/<THEME>/layouts/_default/terms.html`
 +
 +{{% warning "The Taxonomy Terms Template has a Unique Lookup Order" %}}
 +If Hugo does not find a terms template in `layout/` or `/themes/<THEME>/layouts/`, Hugo will *not* render a taxonomy terms page.
 +{{% /warning %}}
 +
 +<!-- Begin /taxonomies/methods/ -->
 +Hugo makes a set of values and methods available on the various Taxonomy structures.
 +
 +### Taxonomy Methods
 +
 +A Taxonomy is a `map[string]WeightedPages`.
 +
 +.Get(term)
 +: Returns the WeightedPages for a term.
 +
 +.Count(term)
 +: The number of pieces of content assigned to this term.
 +
 +.Alphabetical
 +: Returns an OrderedTaxonomy (slice) ordered by Term.
 +
 +.ByCount
 +: Returns an OrderedTaxonomy (slice) ordered by number of entries.
 +
 +### OrderedTaxonomy
 +
 +Since Maps are unordered, an OrderedTaxonomy is a special structure that has a defined order.
 +
- ```go
++```
 +[]struct {
 +    Name          string
 +    WeightedPages WeightedPages
 +}
 +```
 +
 +Each element of the slice has:
 +
 +.Term
 +: The Term used.
 +
 +.WeightedPages
 +: A slice of Weighted Pages.
 +
 +.Count
 +: The number of pieces of content assigned to this term.
 +
 +.Pages
 +: All Pages assigned to this term. All [list methods][renderlists] are available to this.
 +
 +## WeightedPages
 +
 +WeightedPages is simply a slice of WeightedPage.
 +
- ```html
++```
 +type WeightedPages []WeightedPage
 +```
 +
 +.Count(term)
 +: The number of pieces of content assigned to this term.
 +
 +.Pages
 +: Returns a slice of pages, which then can be ordered using any of the [list methods][renderlists].
 +
 +<!-- Begin /taxonomies/ordering/ -->
 +
 +## Order Taxonomies
 +
 +Taxonomies can be ordered by either alphabetical key or by the number of content pieces assigned to that key.
 +
 +### Order Alphabetically Example
 +
- ```html
++```
 +<ul>
 +  {{ $data := .Data }}
 +  {{ range $key, $value := .Data.Taxonomy.Alphabetical }}
 +  <li><a href="{{ $.Site.LanguagePrefix }}/{{ $data.Plural }}/{{ $value.Name | urlize }}"> {{ $value.Name }} </a> {{ $value.Count }} </li>
 +  {{ end }}
 +</ul>
 +```
 +
 +### Order by Popularity Example
 +
- ```toml
++```
 +<ul>
 +  {{ $data := .Data }}
 +  {{ range $key, $value := .Data.Taxonomy.ByCount }}
 +  <li><a href="{{ $.Site.LanguagePrefix }}/{{ $data.Plural }}/{{ $value.Name | urlize }}"> {{ $value.Name }} </a> {{ $value.Count }} </li>
 +  {{ end }}
 +</ul>
 +```
 +
 +<!-- [See Also Taxonomy Lists](/templates/list/) -->
 +
 +## Order Content within Taxonomies
 +
 +Hugo uses both `date` and `weight` to order content within taxonomies.
 +
 +Each piece of content in Hugo can optionally be assigned a date. It can also be assigned a weight for each taxonomy it is assigned to.
 +
 +When iterating over content within taxonomies, the default sort is the same as that used for [section and list pages]() first by weight then by date. This means that if the weights for two pieces of content are the same, than the more recent content will be displayed first. The default weight for any piece of content is 0.
 +
 +### Assign Weight
 +
 +Content can be assigned weight for each taxonomy that it's assigned to.
 +
- ```html
++```
 ++++
 +tags = [ "a", "b", "c" ]
 +tags_weight = 22
 +categories = ["d"]
 +title = "foo"
 +categories_weight = 44
 ++++
 +Front Matter with weighted tags and categories
 +```
 +
 +The convention is `taxonomyname_weight`.
 +
 +In the above example, this piece of content has a weight of 22 which applies to the sorting when rendering the pages assigned to the "a", "b" and "c" values of the 'tag' taxonomy.
 +
 +It has also been assigned the weight of 44 when rendering the 'd' category.
 +
 +With this the same piece of content can appear in different positions in different taxonomies.
 +
 +Currently taxonomies only support the default ordering of content which is weight -> date.
 +
 +<!-- Begin /taxonomies/templates/ -->
 +
 +There are two different templates that the use of taxonomies will require you to provide.
 +
 +Both templates are covered in detail in the templates section.
 +
 +A [list template](/templates/list/) is any template that will be used to render multiple pieces of content in a single html page. This template will be used to generate all the automatically created taxonomy pages.
 +
 +A [taxonomy terms template](/templates/terms/) is a template used to
 +generate the list of terms for a given template.
 +
 +<!-- Begin /taxonomies/displaying/ -->
 +
 +There are four common ways you can display the data in your
 +taxonomies in addition to the automatic taxonomy pages created by hugo
 +using the [list templates](/templates/list/):
 +
 +1. For a given piece of content, you can list the terms attached
 +2. For a given piece of content, you can list other content with the same
 +   term
 +3. You can list all terms for a taxonomy
 +4. You can list all taxonomies (with their terms)
 +
 +## Display a Single Piece of Content's Taxonomies
 +
 +Within your content templates, you may wish to display the taxonomies that piece of content is assigned to.
 +
 +Because we are leveraging the front matter system to define taxonomies for content, the taxonomies assigned to each content piece are located in the usual place (i.e., `.Params.<TAXONOMYPLURAL>`).
 +
 +### Example: List Tags in a Single Page Template
 +
- ```html
++```
 +<ul id="tags">
 +  {{ range .Params.tags }}
 +    <li><a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a> </li>
 +  {{ end }}
 +</ul>
 +```
 +
 +If you want to list taxonomies inline, you will have to take care of optional plural endings in the title (if multiple taxonomies), as well as commas. Let's say we have a taxonomy "directors" such as `directors: [ "Joel Coen", "Ethan Coen" ]` in the TOML-format front matter.
 +
 +To list such taxonomies, use the following:
 +
 +### Example: Comma-delimit Tags in a Single Page Template
 +
- ```html
++```
 +{{ if .Params.directors }}
 +  <strong>Director{{ if gt (len .Params.directors) 1 }}s{{ end }}:</strong>
 +  {{ range $index, $director := .Params.directors }}{{ if gt $index 0 }}, {{ end }}<a href="{{ "directors/" | relURL }}{{ . | urlize }}">{{ . }}</a>{{ end }}
 +{{ end }}
 +```
 +
 +Alternatively, you may use the [delimit template function][delimit] as a shortcut if the taxonomies should just be listed with a separator. See {{< gh 2143 >}} on GitHub for discussion.
 +
 +## List Content with the Same Taxonomy Term
 +
 +If you are using a taxonomy for something like a series of posts, you can list individual pages associated with the same taxonomy. This is also a quick and dirty method for showing related content:
 +
 +### Example: Showing Content in Same Series
 +
- ```html
++```
 +<ul>
 +  {{ range .Site.Taxonomies.series.golang }}
 +    <li><a href="{{ .Page.RelPermalink }}">{{ .Page.Title }}</a></li>
 +  {{ end }}
 +</ul>
 +```
 +
 +## List All content in a Given taxonomy
 +
 +This would be very useful in a sidebar as “featured content”. You could even have different sections of “featured content” by assigning different terms to the content.
 +
 +### Example: Grouping "Featured" Content
 +
- ```html
++```
 +<section id="menu">
 +    <ul>
 +        {{ range $key, $taxonomy := .Site.Taxonomies.featured }}
 +        <li> {{ $key }} </li>
 +        <ul>
 +            {{ range $taxonomy.Pages }}
 +            <li hugo-nav="{{ .RelPermalink}}"><a href="{{ .Permalink}}"> {{ .LinkTitle }} </a> </li>
 +            {{ end }}
 +        </ul>
 +        {{ end }}
 +    </ul>
 +</section>
 +```
 +
 +## Render a Site's Taxonomies
 +
 +If you wish to display the list of all keys for your site's taxonomy, you can retrieve them from the [`.Site` variable][sitevars] available on every page.
 +
 +This may take the form of a tag cloud, a menu, or simply a list.
 +
 +The following example displays all terms in a site's tags taxonomy:
 +
 +### Example: List All Site Tags
 +
- {{% code file="layouts/partials/all-taxonomies.html" download="all-taxonomies.html" download="all-taxonomies.html" %}}
- ```html
++```
 +<ul id="all-tags">
 +  {{ range $name, $taxonomy := .Site.Taxonomies.tags }}
 +    <li><a href="{{ "/tags/" | relLangURL }}{{ $name | urlize }}">{{ $name }}</a></li>
 +  {{ end }}
 +</ul>
 +```
 +
 +### Example: List All Taxonomies, Terms, and Assigned Content
 +
 +This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms.
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/all-taxonomies.html" download="all-taxonomies.html" download="all-taxonomies.html" >}}
 +<section>
 +  <ul id="all-taxonomies">
 +    {{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
 +      <li><a href="{{ "/" | relLangURL}}{{ $taxonomyname | urlize }}">{{ $taxonomyname }}</a>
 +        <ul>
 +          {{ range $key, $value := $taxonomy }}
 +          <li> {{ $key }} </li>
 +                <ul>
 +                {{ range $value.Pages }}
 +                    <li hugo-nav="{{ .RelPermalink}}"><a href="{{ .Permalink}}"> {{ .LinkTitle }} </a> </li>
 +                {{ end }}
 +                </ul>
 +          {{ end }}
 +        </ul>
 +      </li>
 +    {{ end }}
 +  </ul>
 +</section>
- {{% code file="links-to-all-tags" %}}
- ```html
++{{< /code >}}
 +
 +## `.Site.GetPage` for Taxonomies
 +
 +Because taxonomies are lists, the [`.GetPage` function][getpage] can be used to get all the pages associated with a particular taxonomy term using a terse syntax. The following ranges over the full list of tags on your site and links to each of the individual taxonomy pages for each term without having to use the more fragile URL construction of the "List All Site Tags" example above:
 +
- ```
- {{% /code %}}
++{{< code file="links-to-all-tags" >}}
 +<ul class="tags">
 +  {{ range ($.Site.GetPage "taxonomyTerm" "tags").Pages }}
 +   <li><a href="{{ .Permalink }}">{{ .Title}}</a></li>
 +  {{ end }}
 +</ul>
++{{< /code >}}
 +
 +<!--### `.Site.GetPage` Taxonomy List Example
 +
 +### `.Site.GetPage` Taxonomy Terms Example -->
 +
 +
 +[delimit]: /functions/delimit/
 +[getpage]: /functions/getpage/
 +[lists]: /templates/lists/
 +[renderlists]: /templates/lists/
 +[single page template]: /templates/single-page-templates/
 +[sitevars]: /variables/site/
index 208259f7f1238e02e140cf8add78c80bcb8d33b1,0000000000000000000000000000000000000000..1905f6db6441a25382f07e6ec419eace2b2579e3
mode 100644,000000..100644
--- /dev/null
@@@ -1,81 -1,0 +1,81 @@@
- ```html
 +---
 +title: Template Debugging
 +# linktitle: Template Debugging
 +description: You can use Go templates' `printf` function to debug your Hugo  templates. These snippets provide a quick and easy visualization of the variables available to you in different contexts.
 +godocref: http://golang.org/pkg/fmt/
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [debugging,troubleshooting]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 180
 +weight: 180
 +sections_weight: 180
 +draft: false
 +aliases: []
 +toc: false
 +---
 +
 +Here are some snippets you can add to your template to answer some common questions.
 +
 +These snippets use the `printf` function available in all Go templates.  This function is an alias to the Go function, [fmt.Printf](http://golang.org/pkg/fmt/).
 +
 +## What Variables are Available in this Context?
 +
 +You can use the template syntax, `$.`, to get the top-level template context from anywhere in your template. This will print out all the values under, `.Site`.
 +
- ```html
++```
 +{{ printf "%#v" $.Site }}
 +```
 +
 +This will print out the value of `.Permalink`:
 +
 +
- ```html
++```
 +{{ printf "%#v" .Permalink }}
 +```
 +
 +
 +This will print out a list of all the variables scoped to the current context
 +(`.`, aka ["the dot"][tempintro]).
 +
 +
- ```html
++```
 +{{ printf "%#v" . }}
 +```
 +
 +
 +When developing a [homepage][], what does one of the pages you're looping through look like?
 +
- ```html
++```
 +{{ range .Data.Pages }}
 +    {{/* The context, ".", is now each one of the pages as it goes through the loop */}}
 +    {{ printf "%#v" . }}
 +{{ end }}
 +```
 +
 +{{% note "`.Data.Pages` on the Homepage" %}}
 +`.Data.Pages` on the homepage is equivalent to `.Site.Pages`.
 +{{% /note %}}
 +
 +## Why Am I Showing No Defined Variables?
 +
 +Check that you are passing variables in the `partial` function:
 +
- ```html
++```
 +{{ partial "header" }}
 +```
 +
 +This example will render the header partial, but the header partial will not have access to any contextual variables. You need to pass variables explicitly. For example, note the addition of ["the dot"][tempintro].
 +
++```
 +{{ partial "header" . }}
 +```
 +
 +The dot (`.`) is considered fundamental to understanding Hugo templating. For more information, see [Introduction to Hugo Templating][tempintro].
 +
 +[homepage]: /templates/homepage/
 +[tempintro]: /templates/introduction/
index 2fba25cb72462ddf7d82d32aa3ebc9da02d32865,0000000000000000000000000000000000000000..0383636a197783b29d1073c8b2b59ceb4cf6e6cf
mode 100644,000000..100644
--- /dev/null
@@@ -1,127 -1,0 +1,121 @@@
- ```bash
 +---
 +title: Content View Templates
 +# linktitle: Content Views
 +description: Hugo can render alternative views of your content, which is especially useful in list and summary views.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +#tags: [views]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 70
 +weight: 70
 +sections_weight: 70
 +draft: false
 +aliases: []
 +toc: true
 +---
 +
 +These alternative **content views** are especially useful in [list templates][lists].
 +
 +The following are common use cases for content views:
 +
 +* You want content of every type to be shown on the homepage but only with limited [summary views][summaries].
 +* You only want a bulleted list of your content on a [taxonomy list page][taxonomylists]. Views make this very straightforward by delegating the rendering of each different type of content to the content itself.
 +
 +## Create a Content View
 +
 +To create a new view, create a template in each of your different content type directories with the view name. The following example contains an "li" view and a "summary" view for the `post` and `project` content types. As you can see, these sit next to the [single content view][single] template, `single.html. You can even provide a specific view for a given type and continue to use the `_default/single.html` for the primary view.
 +
- ```bash
++```
 +  ▾ layouts/
 +    ▾ post/
 +        li.html
 +        single.html
 +        summary.html
 +    ▾ project/
 +        li.html
 +        single.html
 +        summary.html
 +```
 +
 +Hugo also has support for a default content template to be used in the event that a specific content view template has not been provided for that type. Content views can also be defined in the `_default` directory and will work the same as list and single templates who eventually trickle down to the `_default` directory as a matter of the lookup order.
 +
 +
- {{% code file="layouts/_default/list.html" download="list.html" %}}
- ```
++```
 +▾ layouts/
 +  ▾ _default/
 +      li.html
 +      single.html
 +      summary.html
 +```
 +
 +## Which Template Will be Rendered?
 +
 +The following is the [lookup order][lookup] for content views:
 +
 +1. `/layouts/<TYPE>/<VIEW>.html`
 +2. `/layouts/_default/<VIEW>.html`
 +3. `/themes/<THEME>/layouts/<TYPE>/<VIEW>.html`
 +4. `/themes/<THEME>/layouts/_default/<VIEW>.html`
 +
 +## Example: Content View Inside a List
 +
 +The following example demonstrates how to use content views inside of your [list templates][lists].
 +
 +### `list.html`
 +
 +In this example, `.Render` is passed into the template to call the [render function][render]. `.Render` is a special function that instructs content to render itself with the view template provided as the first argument. In this case, the template is going to render the `summary.html` view that follows:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/list.html" download="list.html" >}}
 +<main id="main">
 +  <div>
 +  <h1 id="title">{{ .Title }}</h1>
 +  {{ range .Data.Pages }}
 +    {{ .Render "summary"}}
 +  {{ end }}
 +  </div>
 +</main>
- {{% code file="layouts/_default/summary.html" download="summary.html" %}}
- ```html
++{{< /code >}}
 +
 +### `summary.html`
 +
 +Hugo will pass the entire page object to the following `summary.html` view template. (See [Page Variables][pagevars] for a complete list.)
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/summary.html" download="summary.html" >}}
 +<article class="post">
 +  <header>
 +    <h2><a href='{{ .Permalink }}'> {{ .Title }}</a> </h2>
 +    <div class="post-meta">{{ .Date.Format "Mon, Jan 2, 2006" }} - {{ .FuzzyWordCount }} Words </div>
 +  </header>
 +  {{ .Summary }}
 +  <footer>
 +  <a href='{{ .Permalink }}'><nobr>Read more →</nobr></a>
 +  </footer>
 +</article>
- {{% code file="layouts/_default/li.html" download="li.html" %}}
- ```html
++{{< /code >}}
 +
 +### `li.html`
 +
 +Continuing on the previous example, we can change our render function to use a smaller `li.html` view by changing the argument in the call to the `.Render` function (i.e., `{{ .Render "li" }}`).
 +
- ```
- {{% /code %}}
++{{< code file="layouts/_default/li.html" download="li.html" >}}
 +<li>
 +  <a href="{{ .Permalink }}">{{ .Title }}</a>
 +  <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +</li>
++{{< /code >}}
 +
 +[lists]: /templates/lists/
 +[lookup]: /templates/lookup-order/
 +[pagevars]: /variables/page/
 +[render]: /functions/render/
 +[single]: /templates/single-page-templates/
 +[spf]: http://spf13.com
 +[spfsourceli]: https://github.com/spf13/spf13.com/blob/master/layouts/_default/li.html
 +[spfsourcesection]: https://github.com/spf13/spf13.com/blob/master/layouts/_default/section.html
 +[spfsourcesummary]: https://github.com/spf13/spf13.com/blob/master/layouts/_default/summary.html
 +[summaries]: /content-management/summaries/
 +[taxonomylists]: /templates/taxonomy-templates/
index 5f921d30334e0d9e9d488a4a816d15b5ad78b879,0000000000000000000000000000000000000000..52edaeae92e30739dcc73dbc5f4f7010d41ab2c1
mode 100644,000000..100644
--- /dev/null
@@@ -1,87 -1,0 +1,87 @@@
- title: Creating a Theme
- linktitle: Creating a Theme
 +---
- ```bash
++title: Create a Theme
++linktitle: Create a Theme
 +description: The `hugo new theme` command will scaffold the beginnings of a new theme for you to get you on your way.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [themes]
 +#tags: [themes, source, organization, directories]
 +menu:
 +  docs:
 +    parent: "themes"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +aliases: [/themes/creation/,/tutorials/creating-a-new-theme/]
 +toc: true
 +wip: true
 +---
 +
 +{{% warning "Use Relative Links" %}}
 +If you're creating a theme with plans to share it with the community, use relative URLs since users of your theme may not publish from the root of their website. See [relURL](/functions/relurl) and [absURL](/functions/absurl).
 +{{% /warning %}}
 +
 +Hugo can initialize a new blank theme directory within your existing `themes` using the `hugo new` command:
 +
++```
 +hugo new theme [name]
 +```
 +
 +## Theme Components
 +
 +A theme consists of templates and static assets such as javascript and css files. Themes can also provide [archetypes][], which are archetypal content types used by the `hugo new` command to scaffold new conte files with preconfigured front matter.
 +
 +
 +{{% note "Use the Hugo Generator Tag" %}}
 +The [`.Hugo.Generator`](/variables/hugo/) tag is included in all themes featured in the [Hugo Themes Showcase](http://themes.gohugo.io). We ask that you include the generator tag in all sites and themes you create with Hugo to help the core team track Hugo's usage and popularity.
 +{{% /note %}}
 +
 +## Layouts
 +
 +Hugo is built around the concept that things should be as simple as possible.
 +Fundamentally, website content is displayed in two different ways, a single
 +piece of content and a list of content items. With Hugo, a theme layout starts
 +with the defaults. As additional layouts are defined, they are used for the
 +content type or section they apply to. This keeps layouts simple, but permits
 +a large amount of flexibility.
 +
 +## Single Content
 +
 +The default single file layout is located at `layouts/_default/single.html`.
 +
 +## List of Contents
 +
 +The default list file layout is located at `layouts/_default/list.html`.
 +
 +## Partial Templates
 +
 +Theme creators should liberally use [partial templates](/templates/partials/)
 +throughout their theme files. Not only is a good DRY practice to include shared
 +code, but partials are a special template type that enables the themes end user
 +to be able to overwrite just a small piece of a file or inject code into the
 +theme from their local /layouts. These partial templates are perfect for easy
 +injection into the theme with minimal maintenance to ensure future
 +compatibility.
 +
 +## Static
 +
 +Everything in the static directory will be copied directly into the final site
 +when rendered. No structure is provided here to enable complete freedom. It is
 +common to organize the static content into:
 +
 +```
 +/css
 +/js
 +/img
 +```
 +
 +The actual structure is entirely up to you, the theme creator, on how you would like to organize your files.
 +
 +## Archetypes
 +
 +If your theme makes use of specific keys in the front matter, it is a good idea
 +to provide an archetype for each content type you have. [Read more about archetypes][archetypes].
 +
 +[archetypes]: /content-management/archetypes/
index b0fbdd0644c4e4150586a5ac06b46ac67871ce4f,0000000000000000000000000000000000000000..1c82b2b71c9b8e97c20d4658efba08e6b8bb11ad
mode 100644,000000..100644
--- /dev/null
@@@ -1,80 -1,0 +1,80 @@@
- title: Customizing a Theme
- linktitle: Customizing a Theme
 +---
- ```bash
++title: Customize a Theme
++linktitle: Customize a Theme
 +description: Customize a theme by overriding theme layouts and static assets in your top-level project directories.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [themes]
 +#tags: [themes, source, organization, directories]
 +menu:
 +  docs:
 +    parent: "themes"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +aliases: [/themes/customize/]
 +toc: true
 +wip: true
 +---
 +
 +The following are key concepts for Hugo site customization with themes. Hugo permits you to supplement *or* override any theme template or static file with files in your working directory.
 +
 +{{% note %}}
 +When you use a theme cloned from its git repository, do not edit the theme's files directly. Instead, theme customization in Hugo is a matter of *overriding* the templates made available to you in a theme. This provides the added flexibility of tweaking a theme to meet your needs while staying current with a theme's upstream.
 +{{% /note %}}
 +
 +## Override Static Files
 +
 +There are times where you want to include static assets that differ from versions of the same asset that ships with a theme.
 +
 +For example, a theme may use jQuery 1.8 in the following location:
 +
- ```bash
++```
 +/themes/<THEME>/static/js/jquery.min.js
 +```
 +
 +You want to replace the version of jQuery that ships with the theme with the newer `jquery-3.1.1.js`. The easiest way to do this is to replace the file *with a file of the same name* in the same relative path in your project's root. Therefore, change `jquery-3.1.1.js` to `jquery.min.js` so that it is *identical* to the theme's version and place the file here:
 +
- ```bash
++```
 +/static/js/jquery.min.js
 +```
 +
 +## Override Template Files
 +
 +Anytime Hugo looks for a matching template, it will first check the working directory before looking in the theme directory. If you would like to modify a template, simply create that template in your local `layouts` directory.
 +
 +The [template lookup order][lookup] explains the rules Hugo uses to determine which template to use for a given piece of content. Read and understand these rules carefully.
 +
 +This is especially helpful when the theme creator used [partial templates][partials]. These partial templates are perfect for easy injection into the theme with minimal maintenance to ensure future compatibility.
 +
 +For example:
 +
- ```bash
++```
 +/themes/<THEME>/layouts/_default/single.html
 +```
 +
 +Would be overwritten by
 +
++```
 +/layouts/_default/single.html
 +```
 +
 +{{% warning %}}
 +This only works for templates that Hugo "knows about" (i.e., that follow its convention for folder structure and naming). If a theme imports template files in a creatively named directory, Hugo won’t know to look for the local `/layouts` first.
 +{{% /warning %}}
 +
 +## Override Archetypes
 +
 +If the archetype that ships with the theme for a given content type (or all content types) doesn’t fit with how you are using the theme, feel free to copy it to your `/archetypes` directory and make modifications as you see fit.
 +
 +{{% warning "Beware of `layouts/_default`" %}}
 +The `_default` directory is a very powerful force in Hugo, especially as it pertains to overwriting theme files. If a default file is located in the local [archetypes](/content-management/archetypes/) or layout directory (i.e., `archetypes/default.md` or `/layouts/_default/*.html`, respectively), it will override the file of the same name in the corresponding theme directory (i.e., `themes/<THEME>/archetypes/default.md` or `themes/<THEME>/layout/_defaults/*.html`, respectively).
 +
 +It is usually better to override specific files; i.e. rather than using `layouts/_default/*.html` in your working directory.
 +{{% /warning %}}
 +
 +[archetypes]: /content-management/archetypes/
 +[lookup]: /templates/lookup-order/
 +[partials]: /templates/partials/
index f1e35477bc50a4a9a6e0d69163a992d1cc401e20,0000000000000000000000000000000000000000..474b7b036ff56e67df7b1dabb1996e938dabe216
mode 100644,000000..100644
--- /dev/null
@@@ -1,114 -1,0 +1,112 @@@
- title: Installing and Using Themes
- linktitle: Installing and Using Themes
 +---
- ```bash
++title: Install and Use Themes
++linktitle: Install and Use Themes
 +description: Install and use a theme from the Hugo theme showcase easily through the CLI.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [themes]
 +#tags: [install, themes, source, organization, directories,usage]
 +menu:
 +  docs:
 +    parent: "themes"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/themes/usage/,/themes/installing/]
 +toc: true
 +wip: true
 +---
 +
 +{{% note "No Default Theme" %}}
 +Hugo currently doesn’t ship with a “default” theme. This decision is intentional. We leave it up to you to decide which theme best suits your Hugo project.
 +{{% /note %}}
 +
 +## Assumptions
 +
 +1. You have already [installed Hugo on your development machine][install].
 +2. You have git installed on your machine and you are familiar with basic git usage.
 +
 +## Install Themes
 +
 +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.
 +
 +{{% warning "Get `git` First" %}}
 +Without [Git](https://git-scm.com/) installed on your computer, none of the following theme instructions will work. Git tutorials are beyond the scope of the Hugo docs, but [GitHub](https://try.github.io/) and [codecademy](https://www.codecademy.com/learn/learn-git) offer free, interactive courses for beginners.
 +{{% /warning %}}
 +
 +### Install All Themes
 +
 +You can install *all* available Hugo themes by cloning the entire [Hugo Theme repository on GitHub][themesrepo] from within your working directory. Depending on your internet connection the download of all themes might take a while.
 +
- ```bash
++```
 +git clone --depth 1 --recursive https://github.com/gohugoio/hugoThemes.git themes
 +```
 +
 +Before you use a theme, remove the .git folder in that theme's root folder. Otherwise, this will cause problem if you deploy using Git.
 +
 +### Install a Single Theme
 +
 +Change into the `themes` directory and download a theme by replacing `URL_TO_THEME` with the URL of the theme repository:
 +
- {{% code file="clone-theme.sh" %}}
- ```bash
++```
 +cd themes
 +git clone URL_TO_THEME
 +```
 +
 +The following example shows how to use the "Hyde" theme, which has its source hosted at <https://github.com/spf13/hyde>:
 +
- ```
- {{% /code %}}
++{{< code file="clone-theme.sh" >}}
 +cd themes
 +git clone https://github.com/spf13/hyde
- ```bash
++{{< /code >}}
 +
 +Alternatively, you can download the theme as a `.zip` file, unzip the theme contents, and then move the unzipped source into your `themes` directory.
 +
 +{{% note "Read the `README`" %}}
 +Always review the `README.md` file that is shipped with a theme. Often, these files contain further instructions required for theme setup; e.g., copying values from an example configuration file.
 +{{% /note %}}
 +
 +## Theme Placement
 +
 +Please make certain you have installed the themes you want to use in the
 +`/themes` directory. This is the default directory used by Hugo. Hugo comes with the ability to change the themes directory via the [`themesDir` variable in your site configuration][config], but this is not recommended.
 +
 +## Use Themes
 +
 +Hugo applies the decided theme first and then applies anything that is in the local directory. This allows for easier customization while retaining compatibility with the upstream version of the theme. To learn more, go to [customizing themes][customizethemes].
 +
 +### Command Line
 +
 +There are two different approaches to using a theme with your Hugo website: via the Hugo CLI or as part of your
 +
 +To change a theme via the Hugo CLI, you can pass the `-t` [flag][] when building your site:
 +
- ```bash
++```
 +hugo -t themename
 +```
 +
 +Likely, you will want to add the theme when running the Hugo local server, especially if you are going to [customize the theme][customizethemes]:
 +
- ```yaml
++```
 +hugo server -t themename
 +```
 +
 +### `config` File
 +
 +If you've already decided on the theme for your site and do not want to fiddle with the command line, you can add the theme directly to your [site configuration file][config]:
 +
++```
 +theme: themename
 +```
 +
 +{{% note "A Note on `themename`" %}}
 +The `themename` in the above examples must match the name of the specific theme directory inside `/themes`; i.e., the directory name (likely lowercase and urlized) rather than the name of the theme displayed in the [Themes Showcase site](http://themes.gohugo.io).
 +{{% /note %}}
 +
 +[customizethemes]: /themes/customizing/
 +[flag]: /getting-started/usage/ "See the full list of flags in Hugo's basic usage."
 +[install]: /getting-started/installing/
 +[config]: /getting-started/configuration/  "Learn how to customize your Hugo website configuration file in yaml, toml, or json."
 +[themesrepo]: https://github.com/gohugoio/hugoThemes
index ef32f7ee94dcf4a88f00d4ecbf83418aa09192b9,0000000000000000000000000000000000000000..1cb7ec6c0d706f499ff2273782258e24d5259c3d
mode 100644,000000..100644
--- /dev/null
@@@ -1,241 -1,0 +1,239 @@@
- {{% code file="example-highlight-shortcode-input.md" %}}
- ```html
 +---
 +title: Syntax Highlighting
 +linktitle:
 +description: Hugo provides server-side syntax highlighting via Pygments and, like most static site generators, works very well with client-side (JavaScript) syntax highlighting libraries as well.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [highlighting,pygments,code blocks,syntax]
 +categories: [developer tools]
 +menu:
 +  docs:
 +    parent: "tools"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +aliases: [/extras/highlighting/,/extras/highlight/]
 +toc: true
 +---
 +
 +Hugo can highlight source code in _two different ways_&mdash;either pre-processed server side from your content or to defer the processing to the client side, using a JavaScript library.
 +
 +## Server-side
 +
 +For the pre-processed approach, highlighting is performed by an external Python-based program called [Pygments](http://pygments.org/) and is triggered via an embedded Hugo shortcode (see [example](#example-highlight-shortcode-input) below). If Pygments is absent from the path, it will silently simply pass the content along without highlighting.
 +
 +### Server-side Advantages
 +
 +The advantages of server-side syntax highlighting are that it doesn’t depend on a JavaScript library and, consequently, works very well when read from an RSS feed.
 +
 +### Pygments
 +
 +If you have never worked with Pygments before, here is a brief primer:
 +
 ++ Install Python from [python.org](https://www.python.org/downloads/). Version 2.7.x is already sufficient.
 ++ Run `pip install Pygments` in order to install Pygments. Once installed, Pygments gives you a command `pygmentize`. Make sure it sits in your PATH; otherwise, Hugo will not be able to find and use it.
 +
 +On Debian and Ubuntu systems, you may also install Pygments by running `sudo apt-get install python3-pygments`.
 +
 +Hugo gives you two options that you can set with the variable `pygmentsuseclasses` (default `false`) in your [site configuration](/getting-started/configuration/).
 +
 +1. Color codes for highlighting keywords are directly inserted if `pygmentsuseclasses = false` (default). The color codes depend on your choice of the `pygmentsstyle` (default = `"monokai"`). You can explore the different color styles on [pygments.org](http://pygments.org/) after inserting some example code.
 +2. If you choose `pygmentsuseclasses = true`, Hugo includes class names in your code instead of color codes. For class-names to be meaningful, you need to include a `.css` file in your website representing your color scheme. You can either generate this `.css` files according to the [description from the Pygments documentation](http://pygments.org/docs/cmdline/) or download the one of the many pre-built color schemes from [Pygment's GitHub css repository](https://github.com/richleland/pygments-css).
 +
 +### Server-side Usage
 +
 +Highlighting is carried out via the [built-in shortcode](/content-management/shortcodes/) `highlight`. `highlight` takes exactly one required parameter for the programming language to be highlighted and requires a closing shortcode. Note that `highlight` is *not* used for client-side javascript highlighting.
 +
 +### Example `highlight` Shortcode Input
 +
- ```
- {{% /code %}}
++{{< code file="example-highlight-shortcode-input.md" >}}
 +{{</* highlight html */>}}
 +<section id="main">
 +  <div>
 +    <h1 id="title">{{ .Title }}</h1>
 +    {{ range .Data.Pages }}
 +      {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</section>
 +{{</* /highlight */>}}
- ````
- ```html
++{{< /code >}}
 +
 +### Example `highlight` Shortcode Output
 +
 +{{% output file="example-highlight-shortcode-output.html" %}}
 +```
 +<span style="color: #f92672">&lt;section</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;main&quot;</span><span style="color: #f92672">&gt;</span>
 +  <span style="color: #f92672">&lt;div&gt;</span>
 +    <span style="color: #f92672">&lt;h1</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">&quot;title&quot;</span><span style="color: #f92672">&gt;</span>{{ .Title }}<span style="color: #f92672">&lt;/h1&gt;</span>
 +    {{ range .Data.Pages }}
 +      {{ .Render &quot;summary&quot;}}
 +    {{ end }}
 +  <span style="color: #f92672">&lt;/div&gt;</span>
 +<span style="color: #f92672">&lt;/section&gt;</span>
 +```
 +{{% /output %}}
 +
 +### Options
 +
 +Options for controlling highlighting can be added in the second argument as a quoted, comma-separated key-value list. The example below will syntax highlight in `go` with inline line numbers and line numbers 2 and 3 highlighted.
 +
 +```
 +{{</* highlight go "linenos=inline,hl_lines=2 3" */>}}
 +var a string
 +var b string
 +var c string
 +var d string
 +{{</* / highlight */>}}
 +```
 +
 +The `highlight` shortcode includes the following supported keywords:
 +
 +* `style`
 +* `encoding`
 +* `noclasses`
 +* `hl_lines`
 +* `linenos`
 +
 +Note that `style` and `noclasses` will override the similar setting in the [global config](/getting-started/configuration/).
 +
 +The keywords in the `highlight` shortcode mirror those of Pygments from the command line. See the [Pygments documentation](http://pygments.org/docs/) for more information.
 +
 +### Code Fences
 +
 +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>
 +    {{ range .Data.Pages }}
 +      {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</section>
 +```
- ```html
++```
 +
 +{{% 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.
 +* The caching can be turned off by setting the `--ignoreCache` flag to `true`.
 +* The languages available for highlighting depend on your Pygments installation.
 +{{% /note %}}
 +
 +## Client-side
 +
 +Alternatively, code highlighting can be applied to your code blocks in client-side JavaScript.
 +
 +Client-side syntax highlighting is very simple to add. You'll need to pick
 +a library and a corresponding theme. Some popular libraries are:
 +
 +- [Highlight.js]
 +- [Prism]
 +- [Rainbow]
 +- [Syntax Highlighter]
 +- [Google Prettify]
 +
 +### Client-side Advantages
 +
 +The advantages of client-side syntax highlighting are that it doesn’t cost anything when building your site, and some of the highlighting scripts available cover more languages than Pygments does.
 +
 +### Highlight.js Example
 +
 +This example uses the popular [Highlight.js] library, hosted by [Yandex], a popular Russian search engine.
 +
 +In your `./layouts/partials/` (or `./layouts/chrome/`) folder, depending on your specific theme, there will be a snippet that will be included in every generated HTML page, such as `header.html` or `header.includes.html`. Simply add the css and js to initialize [Highlight.js]:
 +
 +```
 +<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.6.0/styles/default.min.css">
 +<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.6.0/highlight.min.js"></script>
 +<script>hljs.initHighlightingOnLoad();</script>
 +```
 +
 +### Prism example
 +
 +Prism is another popular highlighter library and is used on some major sites.
 +The [download section of the prism.js website][prismdownload] is simple to use and affords you a high degree of customization to pick only the languages you'll be using on your site.
 +
 +Similar to Highlight.js, you simply load `prism.css` in your `<head>` via whatever Hugo partial template is creating that part of your pages:
 +
- ```html
++```
 +...
 +<link href="/css/prism.css" rel="stylesheet" />
 +...
 +```
 +
 +Add `prism.js` near the bottom of your `<body>` tag in whatever Hugo partial template is appropriate for your site or theme.
 +
- ```html
++```
 +...
 +<script src="/js/prism.js"></script>
 +</body>
 +```
 +
 +In this example, the local paths indicate that your downloaded copy of these files are being added to the site, typically under `./static/css/` and `./static/js/`, respectively.
 +
 +### Client-side Usage
 +
 +To use client-side highlighting, most of these javascript libraries expect your code to be wrapped in semantically correct `<code>` elements with language-specific class attributes. For example, a code block for HTML would have `class="language-html"`.
 +
 +The client-side highlighting script therefore looks for programming language classes according to this convention: `language-go`, `language-html`, `language-css`, `language-bash`, etc. If you look at the page's source, you might see something like the following:
 +
- ```css
++```
 +<pre>
 +  <code class="language-css">
 +  body {
 +    font-family: "Noto Sans", sans-serif;
 +  }
 +  </code>
 +</pre>
 +```
 +
 +If you are using markdown, your content pages needs to use the following syntax, with the name of the language to be highlighted entered directly after the first "fence." A fenced code block can be noted by opening and closing triple tilde <kbd>~</kbd> or triple back ticks <kbd>`</kbd>:
 +
 +{{< nohighlight >}}
 +~~~css
 +body {
 +  font-family: "Noto Sans", sans-serif;
 +}
 +~~~
 +{{< /nohighlight >}}
 +
 +Here is the same example but with triple back ticks to denote the fenced code block:
 +
 +{{< nohighlight >}}
- ```css
++```
 +body {
 +  font-family: "Noto Sans", sans-serif;
 +}
 +```
 +{{< /nohighlight >}}
 +
 +Passing the above examples through the highlighter script would yield the following markup:
 +
 +{{< nohighlight >}}
 +&lt;pre&gt;&lt;code class="language-css hljs"&gt;;&lt;span class="hljs-selector-tag"&gt;body&lt;/span&gt; {
 +  &lt;span class="hljs-attribute"&gt;font-family&lt;/span&gt;: &ltspan class="hljs-string"&gt;"Noto Sans"&lt;/span&gt;, sans-serif;
 +}
 +{{< /nohighlight >}}
 +
 +In the case of the coding color scheme used by the Hugo docs, the resulting output would then look like the following to the website's end users:
 +
++```
 +body {
 +  font-family: "Noto Sans", sans-serif;
 +}
 +```
 +
 +Please see individual libraries' documentation for how to implement each of the JavaScript-based libraries.
 +
 +[Prism]: http://prismjs.com
 +[prismdownload]: http://prismjs.com/download.html
 +[Highlight.js]: http://highlightjs.org/
 +[Rainbow]: http://craig.is/making/rainbows
 +[Syntax Highlighter]: http://alexgorbatchev.com/SyntaxHighlighter/
 +[Google Prettify]: https://github.com/google/code-prettify
 +[Yandex]: http://yandex.ru/
index 614ea209a48e936048d4874aa02091d68bb22f7a,0000000000000000000000000000000000000000..8900d78e2bc981ab2b5b38208325e474a829e023
mode 100644,000000..100644
--- /dev/null
@@@ -1,26 -1,0 +1,26 @@@
- title: Troubleshooting
- linktitle: Troubleshooting
 +---
++title: Troubleshoot 
++linktitle: Troubleshoot
 +description: Frequently asked questions and known issues pulled from the Hugo Discuss forum.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +menu:
 +  docs:
 +    parent: "troubleshooting"
 +    weight: 01
 +weight: 01    #rem
 +draft: false
 +hidesectioncontents: false
 +slug:
 +aliases: [/troubleshooting/faqs/,/faqs/]
 +toc: false
 +notesforauthors:
 +---
 +
 +The Troubleshooting section includes known issues, recent workarounds, and FAQs pulled from the [Hugo Discussion Forum][forum].
 +
 +
 +
 +
 +[forum]: https://discourse.gohugo.io
index 1b2340ee25e37adcc0666cb52fdebbd0c36a42e0,0000000000000000000000000000000000000000..a902377c14d2d8e462504a82f623e407405879fb
mode 100644,000000..100644
--- /dev/null
@@@ -1,60 -1,0 +1,60 @@@
- > ```bash
 +---
 +title: Accented Characters in URLs
 +linktitle: Accented Characters in URLs
 +description: If you're having trouble with special characters in your taxonomies or titles adding odd characters to your URLs.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +#tags: [urls,multilingual,special characters]
 +categories: [troubleshooting]
 +menu:
 +  docs:
 +    parent: "troubleshooting"
 +weight:
 +draft: false
 +slug:
 +aliases: [/troubleshooting/categories-with-accented-characters/]
 +toc: true
 +---
 +
 +## Trouble: Categories with accented characters
 +
 +> One of my categories is named "Le-carré," but the link ends up being generated like this:
 +>
++> ```
 +> categories/le-carr%C3%A9
 +> ```
 +>
 +> And not working. Is there an easy fix for this that I'm overlooking?
 +
 +## Solution
 +
 +Are you a macOS user? If so, you are likely a victim of HFS Plus file system's insistence to store the "é" (U+00E9) character in Normal Form Decomposed (NFD) mode, i.e. as "e" + "  ́" (U+0065 U+0301).
 +
 +`le-carr%C3%A9` is actually correct, `%C3%A9` being the UTF-8 version of U+00E9 as expected by the web server. The problem is that OS X turns [U+00E9] into [U+0065 U+0301], and thus `le-carr%C3%A9` no longer works.  Instead, only `le-carre%CC%81` ending with `e%CC%81` would match that [U+0065 U+0301] at the end.
 +
 +This is unique to OS X. The rest of the world does not do this, and most certainly not your web server which is most likely running Linux. This is not a Hugo-specific problem either. Other people have been bitten by this when they have accented characters in their HTML files.
 +
 +Note that this problem is not specific to Latin scripts. Japanese Mac users often run into the same issue; e.g., with `だ` decomposing into `た` and `&#x3099;`. (Read the [Japanese Perl users article][]).
 +
 +Rsync 3.x to the rescue! From [an answer posted on Server Fault][]:
 +
 +> You can use rsync's `--iconv` option to convert between UTF-8 NFC & NFD, at least if you're on a Mac. There is a special `utf-8-mac` character set that stands for UTF-8 NFD. So to copy files from your Mac to your web server, you'd need to run something like:
 +>
 +> `rsync -a --iconv=utf-8-mac,utf-8 localdir/ mywebserver:remotedir/`
 +>
 +> This will convert all the local filenames from UTF-8 NFD to UTF-8 NFC on the remote server. The files' contents won't be affected. - [Server Fault][]
 +
 +Please make sure you have the latest version of rsync 3.x installed. The rsync that ships with OS X is outdated. Even the version that comes packaged with 10.10 (Yosemite) is version 2.6.9 protocol version 29. The `--iconv` flag is new in rsync 3.x.
 +
 +### Discussion Forum References
 +
 +* http://discourse.gohugo.io/t/categories-with-accented-characters/505
 +* http://wiki.apache.org/subversion/NonNormalizingUnicodeCompositionAwareness
 +* https://en.wikipedia.org/wiki/Unicode_equivalence#Example
 +* http://zaiste.net/2012/07/brand_new_rsync_for_osx/
 +* https://gogo244.wordpress.com/2014/09/17/drived-me-crazy-convert-utf-8-mac-to-utf-8/
 +
 +[an Answer posted on Server Fault]: http://serverfault.com/questions/397420/converting-utf-8-nfd-filenames-to-utf-8-nfc-in-either-rsync-or-afpd "Converting UTF-8 NFD filenames to UTF-8 NFC in either rsync or afpd, Server Fault Discussion"
 +[Japanese Perl users article]: http://perl-users.jp/articles/advent-calendar/2010/english/24 "Encode::UTF8Mac makes you happy while handling file names on MacOSX"
 +[Server Fault]: http://serverfault.com/questions/397420/converting-utf-8-nfd-filenames-to-utf-8-nfc-in-either-rsync-or-afpd "Converting UTF-8 NFD filenames to UTF-8 NFC in either rsync or afpd, Server Fault Discussion"
index 6e715cde71051d7dc46381dbbba331232a1e9f2b,0000000000000000000000000000000000000000..da1b827feab19eeab408e11fd46042b7bb6c289e
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,49 @@@
- > ```bash
 +---
 +title: EOF Error
 +linktitle: EOF Error
 +description: If you find yourself seeing an EOF error in the console whenever you create a new content file from Hugo's archetype feature.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [troubleshooting]
 +menu:
 +  docs:
 +    parent: "troubleshooting"
 +#tags: [eof, end of file, error, faqs]
 +draft: false
 +weight:
 +aliases: [/troubleshooting/strange-eof-error/]
 +toc: true
 +---
 +
 +## Trouble: `hugo new` Aborts with EOF error
 +
 +> I'm running into an issue where I cannot get archetypes working, when running `hugo new showcase/test.md`, for example, I see an `EOF` error thrown by Hugo.
 +>
 +> When I run Hugo with v0.12 via `hugo new -v showcase/test.md`, I see the following output:
 +>
++> ```
 +> INFO: 2015/01/04 Using config file: /private/tmp/test/config.toml
 +> INFO: 2015/01/04 attempting to create  showcase/test.md of showcase
 +> INFO: 2015/01/04 curpath: /private/tmp/test/archetypes/showcase.md
 +> ERROR: 2015/01/04 EOF
 +> ```
 +>
 +> Is there something that I am blatantly missing?
 +
 +## Solution: Carriage Returns
 +
 +The solution is to add a final newline (i.e., `EOL`) to the end of your default.md archetype file of your theme. You can do this by adding a carriage return after the closing `+++` or `---` of your TOML or YAML front matter, respectively.
 +
 +{{% note "Final EOL Unnecessary in v0.13+" %}}
 +As of v0.13, Hugo's parser has been enhanced to accommodate archetype files without final EOL thanks to the great work by [@tatsushid](https://github.com/tatsushid).
 +{{% /note %}}
 +
 +## Discussion Forum References
 +
 +* http://discourse.gohugo.io/t/archetypes-not-properly-working-in-0-12/544
 +* http://discourse.gohugo.io/t/eol-f-in-archetype-files/554
 +
 +## Related Hugo Issues
 +
 +* https://github.com/gohugoio/hugo/issues/776
index 78c811b9d07c5e8ff2f0b3065c4ba2be02b230f5,0000000000000000000000000000000000000000..49def75bffa92775e6c360eae034bf86d932997c
mode 100644,000000..100644
--- /dev/null
@@@ -1,272 -1,0 +1,270 @@@
- ```yaml
 +---
 +title: Page Variables
 +linktitle:
 +description: Page-level variables are defined in a content file's front matter, derived from the content's file location, or extracted from the content body itself.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [variables and params]
 +#tags: [pages]
 +draft: false
 +menu:
 +  docs:
 +    parent: "variables"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +aliases: [/variables/page/]
 +toc: true
 +---
 +
 +The following is a list of page-level variables. Many of these will be defined in the front matter, derived from file location, or extracted from the content itself.
 +
 +{{% note "`.Scratch`" %}}
 +See [`.Scratch`](/functions/scratch/) for page-scoped, writable variables.
 +{{% /note %}}
 +
 +## Page Variables
 +
 +`.AlternativeOutputFormats`
 +: contains all alternative formats for a given page; this variable is especially useful `link rel` list in your site's `<head>`. (See [Output Formats](/templates/output-formats/).)
 +
 +`.Content`
 +: the content itself, defined below the front matter.
 +
 +`.Data`
 +: the data specific to this type of page.
 +
 +`.Date`
 +: the date associated with the page; `.Date` pulls from the `date` field in a content's front matter. See also `.ExpiryDate`, `.PublishDate`, and `.Lastmod`.
 +
 +`.Description`
 +: the description for the page.
 +
 +`.Draft`
 +: a boolean, `true` if the content is marked as a draft in the front matter.
 +
 +`.ExpiryDate`
 +: the date on which the content is scheduled to expire; `.ExpiryDate` pulls from the `expirydate` field in a content's front matter. See also `.PublishDate`, `.Date`, and `.Lastmod`.
 +
 +`.FuzzyWordCount`
 +: the approximate number of words in the content.
 +
 +`.Hugo`
 +: see [Hugo Variables](/variables/hugo/).
 +
 +`.IsHome`
 +: `true` in the context of the [homepage](/templates/homepage/).
 +
 +`.IsNode`
 +: always `false` for regular content pages.
 +
 +`.IsPage`
 +: always `true` for regular content pages.
 +
 +`.IsTranslated`
 +: `true` if there are translations to display.
 +
 +`.Keywords`
 +: the meta keywords for the content.
 +
 +`.Kind`
 +: the page's *kind*. Possible return values are `page`, `home`, `section`, `taxonomy`, or `taxonomyTerm`. Note that there are also `RSS`, `sitemap`, `robotsTXT`, and `404` kinds, but these are only available during the rendering of each of these respective page's kind and therefore *not* available in any of the `Pages` collections.
 +
 +`.Lang`
 +: language taken from the language extension notation.
 +
 +`.Language`
 +: a language object that points to the language's definition in the site
 +`config`.
 +
 +`.Lastmod`
 +: the date the content was last modified; `.Lastmod` pulls from the `lastmod` field in a content's front matter. If `lastmod` is not set, Hugo will default to the `date` field. See also `.ExpiryDate`, `.Date`, and `.PublishDate`.
 +
 +`.LinkTitle`
 +: access when creating links to the content. If set, Hugo will use the `linktitle` from the front matter before `title`.
 +
 +`.Next`
 +: pointer to the following content (based on the `publishdate` field in front matter).
 +
 +`.NextInSection`
 +: pointer to the following content within the same section (based on `publishdate` field in front matter).
 +
 +`.OutputFormats`
 +: contains all formats, including the current format, for a given page. Can be combined the with [`.Get` function](/functions/get/) to grab a specific format. (See [Output Formats](/templates/output-formats/).)
 +
 +`.Pages`
 +: a collection of associated pages. This value will be `nil` for regular content pages. `.Pages` is an alias for `.Data.Pages`.
 +
 +`.Permalink`
 +: the Permanent link for this page; see [Permalinks](/content-management/urls/)
 +
 +`.Plain`
 +: the Page content stripped of HTML tags and presented as a string.
 +
 +`.PlainWords`
 +: the Page content stripped of HTML as a `[]string` using Go's [`strings.Fields`](https://golang.org/pkg/strings/#Fields) to split `.Plain` into a slice.
 +
 +`.Prev`
 +: Pointer to the previous content (based on `publishdate` in front matter).
 +
 +`.PrevInSection`
 +: Pointer to the previous content within the same section (based on `publishdate` in front matter). For example, `{{if .PrevInSection}}{{.PrevInSection.Permalink}}{{end}}`.
 +
 +`.PublishDate`
 +: the date on which the content was or will be published; `.Publishdate` pulls from the `publishdate` field in a content's front matter. See also `.ExpiryDate`, `.Date`, and `.Lastmod`.
 +
 +`.RSSLink`
 +: link to the taxonomies' RSS link.
 +
 +`.RawContent`
 +: raw markdown content without the front matter. Useful with [remarkjs.com](
 +http://remarkjs.com)
 +
 +`.ReadingTime`
 +: the estimated time, in minutes, it takes to read the content.
 +
 +`.Ref`
 +: returns the permalink for a given reference (e.g., `.Ref "sample.md"`).  `.Ref` does *not* handle in-page fragments correctly. See [Cross References](/content-management/cross-references/).
 +
 +`.RelPermalink`
 +: the relative permanent link for this page.
 +
 +`.RelRef`
 +: returns the relative permalink for a given reference (e.g., `RelRef
 +"sample.md"`). `.RelRef` does *not* handle in-page fragments correctly. See [Cross References](/content-management/cross-references/).
 +
 +`.Section`
 +: the [section](/content-management/sections/) this content belongs to.
 +
 +`.Site`
 +: see [Site Variables](/variables/site/).
 +
 +`.Summary`
 +: a generated summary of the content for easily showing a snippet in a summary view. The breakpoint can be set manually by inserting <code>&lt;!&#x2d;&#x2d;more&#x2d;&#x2d;&gt;</code> at the appropriate place in the content page. See [Content Summaries](/content-management/summaries/) for more details.
 +
 +`.TableOfContents`
 +: the rendered [table of contents](/content-management/toc/) for the page.
 +
 +`.Title`
 +: the title for this page.
 +
 +`.Translations`
 +: a list of translated versions of the current page. See [Multilingual Mode](/content-management/multilingual/) for more information.
 +
 +`.Truncated`
 +: a boolean, `true` if the `.Summary` is truncated. Useful for showing a "Read more..." link only when necessary.  See [Summaries](/content-management/summaries/) for more information.
 +
 +`.Type`
 +: the [content type](/content-management/types/) of the content (e.g., `post`).
 +
 +`.URL`
 +: the URL for the page relative to the web root. Note that a `url` set directly in front matter overrides the default relative URL for the rendered page.
 +
 +`.UniqueID`
 +: the MD5-checksum of the content file's path.
 +
 +`.Weight`
 +: assigned weight (in the front matter) to this content, used in sorting.
 +
 +`.WordCount`
 +: the number of words in the content.
 +
 +## Page-level Params
 +
 +Any other value defined in the front matter in a content file, including taxonomies, will be made available as part of the `.Params` variable.
 +
- ```yaml
++```
 +---
 +title: My First Post
 +date: date: 2017-02-20T15:26:23-06:00
 +categories: [one]
 +#tags: [two,three,four]
 +```
 +
 +With the above front matter, the `tags` and `categories` taxonomies are accessible via the following:
 +
 +* `.Params.tags`
 +* `.Params.categories`
 +
 +{{% note "Casing of Params" %}}
 +Page-level `.Params` are *only* accessible in lowercase.
 +{{% /note %}}
 +
 +The `.Params` variable is particularly useful for the introduction of user-defined front matter fields in content files. For example, a Hugo website on book reviews could have the following front matter in `/content/review/book01.md`:
 +
- {{% code file="/themes/yourtheme/layouts/review/single.html" %}}
- ```html
++```
 +---
 +...
 +affiliatelink: "http://www.my-book-link.here"
 +recommendedby: "My Mother"
 +...
 +---
 +```
 +
 +These fields would then be accessible to the `/themes/yourtheme/layouts/review/single.html` template through `.Params.affiliatelink` and `.Params.recommendedby`, respectively.
 +
 +Two common situations where this type of front matter field could be introduced is as a value of a certain attribute like `href=""` or by itself to be displayed as text to the website's visitors.
 +
- ```
- {{% /code %}}
++{{< code file="/themes/yourtheme/layouts/review/single.html" >}}
 +<h3><a href={{ printf "%s" $.Params.affiliatelink }}>Buy this book</a></h3>
 +<p>It was recommended by {{ .Params.recommendedby }}.</p>
- ```html
++{{< /code >}}
 +
 +This template would render as follows, assuming you've set [`uglyURLs`](/content-management/urls/) to `false` in your [site `config`](/getting-started/configuration/):
 +
 +{{% output file="yourbaseurl/review/book01/index.html" %}}
- ```golang
++```
 +<h3><a href="http://www.my-book-link.here">Buy this book</a></h3>
 +<p>It was recommended by my Mother.</p>
 +```
 +{{% /output %}}
 +
 +{{% note %}}
 +See [Archetypes](/content-management/archetypes/) for consistency of `Params` across pieces of content.
 +{{% /note %}}
 +
 +### The `.Param` Method
 +
 +In Hugo, you can declare params in individual pages and globally for your entire website. A common use case is to have a general value for the site param and a more specific value for some of the pages (i.e., a header image):
 +
- ```yaml
++```
 +{{ $.Param "header_image" }}
 +```
 +
 +The `.Param` method provides a way to resolve a single value according to it's definition in a page parameter (i.e. in the content's front matter) or a site parameter (i.e., in your `config`).
 +
 +### Access Nested Fields in Front Matter
 +
 +When front matter contains nested fields like the following:
 +
- ```golang
++```
 +---
 +author:
 +  given_name: John
 +  family_name: Feminella
 +  display_name: John Feminella
 +---
 +```
 +`.Param` can access these fields by concatenating the field names together with a dot:
 +
 +```
 +{{ $.Param "author.display_name" }}
 +```
 +
 +If your front matter contains a top-level key that is ambiguous with a nested key, as in the following case:
 +
 +```
 +---
 +favorites.flavor: vanilla
 +favorites:
 +  flavor: chocolate
 +---
 +```
 +
 +The top-level key will be preferred. Therefore, the following method, when applied to the previous example, will print `vanilla` and not `chocolate`:
 +
++```
 +{{ $.Param "favorites.flavor" }}
 +=> vanilla
 +```
index d037cb06592d7726ce0d8d381d019dd11085b644,0000000000000000000000000000000000000000..68b943388e4292392f92cccef53aec7195cd7882
mode 100644,000000..100644
--- /dev/null
@@@ -1,127 -1,0 +1,125 @@@
- ```toml
 +---
 +title: Site Variables
 +linktitle: Site Variables
 +description: Many, but not all, site-wide variables are defined in your site's configuration. However, Hugo provides a number of built-in variables for convenient access to global values in your templates.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [variables and params]
 +#tags: [global,site]
 +draft: false
 +menu:
 +  docs:
 +    parent: "variables"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +aliases: [/variables/site-variables/]
 +toc: true
 +---
 +
 +The following is a list of site-level (aka "global") variables. Many of these variables are defined in your site's [configuration file][config], whereas others are built into Hugo's core for convenient usage in your templates.
 +
 +## Site Variables List
 +
 +`.Site.AllPages`
 +: array of all pages, regardless of their translation.
 +
 +`.Site.Author`
 +: a map of the authors as defined in the site configuration.
 +
 +`.Site.BaseURL`
 +: the base URL for the site as defined in the site configuration.
 +
 +`.Site.BuildDrafts`
 +: a boolean (default: `false`) to indicate whether to build drafts as defined in the site configuration.
 +
 +`.Site.Copyright`
 +: a string representing the copyright of your website as defined in the site configuration.
 +
 +`.Site.Data`
 +: custom data, see [Data Templates](/templates/data-templates/).
 +
 +`.Site.DisqusShortname`
 +: a string representing the shortname of the Disqus shortcode as defined in the site configuration.
 +
 +`.Site.Files`
 +: all source files for the Hugo website.
 +
 +`.Site.GoogleAnalytics`
 +: a string representing your tracking code for Google Analytics as defined in the site configuration.
 +
 +`.Site.IsMultiLingual`
 +: whether there are more than one language in this site. See [Multilingual](/content-management/multilingual/) for more information.
 +
 +`.Site.Language.Lang`
 +: the language code of the current locale (e.g., `en`).
 +
 +`.Site.Language.LanguageName`
 +: the full language name (e.g. `English`).
 +
 +`.Site.Language.Weight`
 +: the weight that defines the order in the `.Site.Languages` list.
 +
 +`.Site.Language`
 +: indicates the language currently being used to render the website. This object's attributes are set in site configurations' language definition.
 +
 +`.Site.LanguageCode`
 +: a string representing the language as defined in the site configuration. This is mostly used to populate the RSS feeds with the right language code.
 +
 +`.Site.LanguagePrefix`
 +: this can be used to prefix URLs to point to the correct language. It will even work when only one defined language. See also the functions [absLangURL](/functions/abslangurl/) and [relLangURL](/functions/rellangurl).
 +
 +`.Site.Languages`
 +: an ordered list (ordered by defined weight) of languages.
 +
 +`.Site.LastChange`
 +: a string representing the date/time of the most recent change to your site. This string is based on the [`date` variable in the front matter](/content-management/front-matter) of your content pages.
 +
 +`.Site.Menus`
 +: all of the menus in the site.
 +
 +`.Site.Pages`
 +: array of all content ordered by Date with the newest first. This array contains only the pages in the current language.
 +
 +`.Site.Permalinks`
 +: a string to override the default [permalink](/content-management/urls/) format as defined in the site configuration.
 +
 +`.Site.RegularPages`
 +: a shortcut to the *regular* page collection. `.Site.RegularPages` is equivalent to `where .Site.Pages "Kind" "page"`.
 +
 +`.Site.RSSLink`
 +: the URL for the site RSS.
 +
 +`.Site.Sections`
 +: top-level directories of the site.
 +
 +`.Site.Taxonomies`
 +: the [taxonomies](/taxonomies/usage/) for the entire site.  Replaces the now-obsolete `.Site.Indexes` since v0.11. Also see section [Taxonomies elsewhere](#taxonomies-elsewhere).
 +
 +`.Site.Title`
 +: a string representing the title of the site.
 +
 +## The `.Site.Params` Variable
 +
 +`.Site.Params` is a container holding the values from the `params` section of your site configuration.
 +
 +### Example: `.Site.Params`
 +
 +The following `config.toml` defines a site-wide param for `description`:
 +
- {{% code file="layouts/partials/head.html" %}}
- ```html
++```
 +baseURL = "http://yoursite.example.com/"
 +
 +[params]
 +  description = "Tesla's Awesome Hugo Site"
 +  author = "Nikola Tesla"
 +```
 +
 +You can use `.Site.Params` in a [partial template](/templates/partials/) to call the default site description:
 +
- ```
- {{% /code %}}
++{{< code file="layouts/partials/head.html" >}}
 +<meta name="description" content="{{if .IsHome}}{{ $.Site.Params.description }}{{else}}{{.Description}}{{end}}" />
++{{< /code >}}
 +
 +[config]: /getting-started/configuration/
index 7ab95d261bf235f74df3460c77aa956376f2dc8b,0000000000000000000000000000000000000000..ef20156b4ee44b850ceffa3100dc96e9624f990b
mode 100644,000000..100644
--- /dev/null
@@@ -1,86 -1,0 +1,84 @@@
- {{% code file="all-taxonomies-keys-and-pages.html" download="all-taxonomies-keys-and-pages.html" %}}
- ```html
 +---
 +title: Taxonomy Variables
 +linktitle:
 +description: Taxonomy pages are of type `Page` and have all page-, site-, and list-level variables available to them. However, taxonomy terms templates have additional variables available to their templates.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [variables and params]
 +#tags: [taxonomies,terms]
 +draft: false
 +menu:
 +  docs:
 +    parent: "variables"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +aliases: []
 +toc: true
 +---
 +
 +## Taxonomy Terms Page Variables
 +
 +[Taxonomy terms pages][taxonomytemplates] are of the type `Page` and have the following additional variables.
 +
 +For example, the following fields would be available in `layouts/_defaults/terms.html`, depending on how you organize your [taxonomy templates][taxonomytemplates]:
 +
 +`.Data.Singular`
 +: The singular name of the taxonomy (e.g., `tags => `tag`)
 +
 +`.Data.Plural`
 +: The plural name of the taxonomy (e.g., `tags => tags`)
 +
 +`.Data.Pages`
 +: The list of pages in the taxonomy
 +
 +`.Data.Terms`
 +: The taxonomy itself
 +
 +`.Data.Terms.Alphabetical`
 +: The taxonomy terms alphabetized
 +
 +`.Data.Terms.ByCount`
 +: The Terms ordered by popularity
 +
 +Note that `.Data.Terms.Alphabetical` and `.Data.Terms.ByCount` can also be reversed:
 +
 +* `.Data.Terms.Alphabetical.Reverse`
 +* `.Data.Terms.ByCount.Reverse`
 +
 +## Use `.Site.Taxonomies` Outside of Taxonomy Templates
 +
 +The `.Site.Taxonomies` variable holds all the taxonomies defined site-wide. `.Site.Taxonomies` is a map of the taxonomy name to a list of its values (e.g., `"tags" -> ["tag1", "tag2", "tag3"]``). Each value, though, is not a string but rather a *Taxonomy variable*.
 +
 +## The `.Taxonomy` Variable
 +
 +The `.Taxonomy` variable, available, for example, as `.Site.Taxonomies.tags`, contains the list of tags (values) and, for each tag, their corresponding content pages.
 +
 +### Example Usage of `.Site.Taxonomies`
 +
 +The following [partial template][partials] will list all your site's taxonomies, each of their keys, and all the content assigned to each of the keys. For more examples of how to order and render your taxonomies, see  [Taxonomy Templates][taxonomytemplates].
 +
- ```
- {{% /code %}}
++{{< code file="all-taxonomies-keys-and-pages.html" download="all-taxonomies-keys-and-pages.html" >}}
 +<section>
 +  <ul>
 +    {{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
 +      <li><a href="{{ "/" | relLangURL}}{{ $taxonomyname | urlize }}">{{ $taxonomyname }}</a>
 +        <ul>
 +          {{ range $key, $value := $taxonomy }}
 +          <li> {{ $key }} </li>
 +                <ul>
 +                {{ range $value.Pages }}
 +                    <li><a href="{{ .Permalink}}"> {{ .LinkTitle }} </a> </li>
 +                {{ end }}
 +                </ul>
 +          {{ end }}
 +        </ul>
 +      </li>
 +    {{ end }}
 +  </ul>
 +</section>
++{{< /code >}}
 +
 +[partials]: /templates/partials/
 +[taxonomytemplates]: /templates/taxonomy-templates/
index 6df49956a09a154e4d726b47d0d25cd8e0e27466,0000000000000000000000000000000000000000..009aeb71184d00e1ad85750e030833feea1e3ffb
mode 100644,000000..100644
--- /dev/null
@@@ -1,15 -1,0 +1,17 @@@
- <div class="code relative bg-primary-color moon-gray" id="{{.Get "file" | urlize}}">
-       {{- with .Get "file" -}}
++{{ $file := .Get "file" }}
++{{ $isHTML := strings.HasSuffix $file "html" }}
++<div class="code relative bg-primary-color" id="{{ $file | urlize}}">
++      {{- with $file -}}
 +              <div class="filename san-serif f6 dib lh-solid pl2 pv2">{{.}}</div>
 +      {{- end -}}
 +
 +      {{ if ne (.Get "copy") "false" }}
 +              <button class="needs-js copy bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button">
 +              </button>
 +              {{/* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}}
 +      {{end}}
 +      <div class="code-copy-content nt3" {{with .Get "download"}}id="{{.}}"{{end}}>
-               {{- .Inner -}}
++              {{ if $isHTML }}{{- highlight .Inner  "html" "" | -}}{{ else }}<pre><code>{{- .Inner | string -}}</code></pre>{{ end }}
 +      </div>
 +
 +</div>
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e0f2f62dfafb988df67f4467ccc9c72981dba913
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++Pygments==2.1.3
index 18141c496f18ac74bfef480403b4bbb69c44bbbe,0000000000000000000000000000000000000000..d0445e2ad6bcffcbfa305650dd66e308543bcfdc
mode 160000,000000..160000
--- /dev/null
@@@ -1,1 -1,0 +1,1 @@@
- Subproject commit 18141c496f18ac74bfef480403b4bbb69c44bbbe
++Subproject commit d0445e2ad6bcffcbfa305650dd66e308543bcfdc