Merge commit 'efa74c5c6e6ff1daddeb5834ea7c69bed2acf171'
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 16 Jun 2020 12:19:31 +0000 (14:19 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 16 Jun 2020 12:19:31 +0000 (14:19 +0200)
74 files changed:
1  2 
docs/.github/SUPPORT.md
docs/content/en/about/benefits.md
docs/content/en/about/features.md
docs/content/en/about/hugo-and-gdpr.md
docs/content/en/about/security-model/index.md
docs/content/en/about/what-is-hugo.md
docs/content/en/commands/hugo.md
docs/content/en/commands/hugo_mod_clean.md
docs/content/en/commands/hugo_mod_get.md
docs/content/en/content-management/authors.md
docs/content/en/content-management/build-options.md
docs/content/en/content-management/comments.md
docs/content/en/content-management/image-processing/index.md
docs/content/en/content-management/multilingual.md
docs/content/en/content-management/organization/index.md
docs/content/en/content-management/page-resources.md
docs/content/en/content-management/shortcodes.md
docs/content/en/content-management/urls.md
docs/content/en/documentation.md
docs/content/en/functions/findRe.md
docs/content/en/functions/getenv.md
docs/content/en/functions/htmlEscape.md
docs/content/en/functions/htmlUnescape.md
docs/content/en/functions/hugo.md
docs/content/en/functions/index-function.md
docs/content/en/functions/last.md
docs/content/en/functions/md5.md
docs/content/en/functions/plainify.md
docs/content/en/functions/relurl.md
docs/content/en/functions/seq.md
docs/content/en/functions/templates.Exists.md
docs/content/en/functions/time.md
docs/content/en/functions/unix.md
docs/content/en/functions/urls.Parse.md
docs/content/en/getting-started/external-learning-resources/index.md
docs/content/en/getting-started/installing.md
docs/content/en/getting-started/quick-start.md
docs/content/en/hosting-and-deployment/deployment-with-rsync.md
docs/content/en/hosting-and-deployment/hosting-on-aws-amplify.md
docs/content/en/hosting-and-deployment/hosting-on-github.md
docs/content/en/hosting-and-deployment/hosting-on-keycdn.md
docs/content/en/hugo-modules/configuration.md
docs/content/en/hugo-modules/use-modules.md
docs/content/en/hugo-pipes/bundling.md
docs/content/en/hugo-pipes/fingerprint.md
docs/content/en/hugo-pipes/introduction.md
docs/content/en/hugo-pipes/minification.md
docs/content/en/hugo-pipes/postprocess.md
docs/content/en/news/0.72.0-relnotes/hugo-72-featured.png
docs/content/en/news/0.72.0-relnotes/index.md
docs/content/en/news/http2-server-push-in-hugo.md
docs/content/en/showcase/1password-support/index.md
docs/content/en/showcase/arolla-cocoon/index.md
docs/content/en/showcase/fireship/index.md
docs/content/en/showcase/hapticmedia/index.md
docs/content/en/showcase/linode/index.md
docs/content/en/showcase/pace-revenue-management/index.md
docs/content/en/showcase/quiply-employee-communications-app/index.md
docs/content/en/showcase/stackimpact/index.md
docs/content/en/showcase/template/index.md
docs/content/en/templates/introduction.md
docs/content/en/templates/partials.md
docs/content/en/templates/rss.md
docs/content/en/tools/frontends.md
docs/content/en/tools/migrations.md
docs/content/en/tools/search.md
docs/content/en/troubleshooting/_index.md
docs/content/en/troubleshooting/faq.md
docs/content/en/variables/files.md
docs/content/en/variables/hugo.md
docs/data/articles.toml
docs/netlify.toml
docs/resources/_gen/images/news/0.72.0-relnotes/hugo-72-featured_hu2851378649aa18f104ac3bb6a49cdd29_256988_480x0_resize_catmullrom_2.png
docs/resources/_gen/images/news/0.72.0-relnotes/hugo-72-featured_hu2851378649aa18f104ac3bb6a49cdd29_256988_640x0_resize_catmullrom_2.png

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cc9de09ff11a8ae2058ef7e535a060828cc9feb2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++### Asking Support Questions
++
++We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions.
index 16d43e48f20b65bb8fe5bef25e919c7588f57413,0000000000000000000000000000000000000000..020e58981b2cabe461e96db409bc53f64274b414
mode 100644,000000..100644
--- /dev/null
@@@ -1,43 -1,0 +1,43 @@@
- * ["Hugo vs. Wordpress page load speed comparison: Hugo leaves WordPress in its dust", GettingThingsTech][hugovwordpress]
 +---
 +title: The Benefits of Static Site Generators
 +linktitle: The Benefits of Static
 +description: Improved performance, security and ease of use are just a few of the reasons static site generators are so appealing.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +keywords: [ssg,static,performance,security]
 +menu:
 +  docs:
 +    parent: "about"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +aliases: []
 +toc: false
 +---
 +
 +The purpose of website generators is to render content into HTML files. Most are "dynamic site generators." That means the HTTP server---i.e., the program that sends files to the browser to be viewed---runs the generator to create a new HTML file every time an end user requests a page.
 +
 +Over time, dynamic site generators were programmed to cache their HTML files to prevent unnecessary delays in delivering pages to end users. A cached page is a static version of a web page.
 +
 +Hugo takes caching a step further and all HTML files are rendered on your computer. You can review the files locally before copying them to the computer hosting the HTTP server. Since the HTML files aren't generated dynamically, we say that Hugo is a *static site generator*.
 +
 +This has many benefits. The most noticeable is performance. HTTP servers are *very* good at sending files---so good, in fact, that you can effectively serve the same number of pages with a fraction of the memory and CPU needed for a dynamic site.
 +
 +## More on Static Site Generators
 +
 +* ["An Introduction to Static Site Generators", David Walsh][]
++* ["Hugo vs. WordPress page load speed comparison: Hugo leaves WordPress in its dust", GettingThingsTech][hugovwordpress]
 +* ["Static Site Generators", O'Reilly][]
 +* [StaticGen: Top Open-Source Static Site Generators (GitHub Stars)][]
 +* ["Top 10 Static Website Generators", Netlify blog][]
 +* ["The Resurgence of Static", dotCMS][dotcms]
 +
 +
 +["An Introduction to Static Site Generators", David Walsh]: https://davidwalsh.name/introduction-static-site-generators
 +["Static Site Generators", O'Reilly]: https://www.oreilly.com/web-platform/free/files/static-site-generators.pdf
 +["Top 10 Static Website Generators", Netlify blog]: https://www.netlify.com/blog/2016/05/02/top-ten-static-website-generators/
 +[hugovwordpress]: https://gettingthingstech.com/hugo-vs.-wordpress-page-load-speed-comparison-hugo-leaves-wordpress-in-its-dust/
 +[StaticGen: Top Open-Source Static Site Generators (GitHub Stars)]: https://www.staticgen.com/
 +[dotcms]: https://dotcms.com/blog/post/the-resurgence-of-static
index a1e741ac06ccaa5318e16b3b063704516025bbaf,0000000000000000000000000000000000000000..9c8fac4f481944a4da3b0d9bbdcbacf86f875966
mode 100644,000000..100644
--- /dev/null
@@@ -1,87 -1,0 +1,87 @@@
- * ["Wordcount"][pagevars] functionality
 +---
 +title: Hugo Features
 +linktitle: Hugo Features
 +description: Hugo boasts blistering speed, robust content management, and a powerful templating language making it a great fit for all kinds of static websites.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +menu:
 +  docs:
 +    parent: "about"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +toc: true
 +---
 +
 +## General
 +
 +* [Extremely fast][] build times (&lt; 1 ms per page)
 +* Completely cross platform, with [easy installation][install] on macOS, Linux, Windows, and more
 +* Renders changes on the fly with [LiveReload][] as you develop
 +* [Powerful theming][]
 +* [Host your site anywhere][hostanywhere]
 +
 +## Organization
 +
 +* Straightforward [organization for your projects][], including website sections
 +* Customizable [URLs][]
 +* Support for configurable [taxonomies][], including categories and tags
 +* [Sort content][] as you desire through powerful template [functions][]
 +* Automatic [table of contents][] generation
 +* [Dynamic menu][] creation
 +* [Pretty URLs][] support
 +* [Permalink][] pattern support
 +* Redirects via [aliases][]
 +
 +## Content
 +
 +* Native Markdown and Emacs Org-Mode support, as well as other languages via *external helpers* (see [supported formats][])
 +* TOML, YAML, and JSON metadata support in [front matter][]
 +* Customizable [homepage][]
 +* Multiple [content types][]
 +* Automatic and user defined [content summaries][]
 +* [Shortcodes][] to enable rich content inside of Markdown
 +* ["Minutes to Read"][pagevars] functionality
++* ["WordCount"][pagevars] functionality
 +
 +## Additional Features
 +
 +* Integrated [Disqus][] comment support
 +* Integrated [Google Analytics][] support
 +* Automatic [RSS][] creation
 +* Support for [Go][], [Amber], and [Ace][] HTML templates
 +* [Syntax highlighting][] powered by [Chroma][]
 +
 +
 +[Ace]: /templates/alternatives/
 +[aliases]: /content-management/urls/#aliases
 +[Amber]: https://github.com/eknkc/amber
 +[Chroma]: https://github.com/alecthomas/chroma
 +[content summaries]: /content-management/summaries/
 +[content types]: /content-management/types/
 +[Disqus]: https://disqus.com/
 +[Dynamic menu]: /templates/menus/
 +[Extremely fast]: https://github.com/bep/hugo-benchmark
 +[front matter]: /content-management/front-matter/
 +[functions]: /functions/
 +[Go]: https://golang.org/pkg/html/template/
 +[Google Analytics]: https://google-analytics.com/
 +[homepage]: /templates/homepage/
 +[hostanywhere]: /hosting-and-deployment/
 +[install]: /getting-started/installing/
 +[LiveReload]: /getting-started/usage/
 +[organization for your projects]: /getting-started/directory-structure/
 +[pagevars]: /variables/page/
 +[Permalink]: /content-management/urls/#permalinks
 +[Powerful theming]: /themes/
 +[Pretty URLs]: /content-management/urls/
 +[RSS]: /templates/rss/
 +[Shortcodes]: /content-management/shortcodes/
 +[sort content]: /templates/
 +[supported formats]: /content-management/formats/
 +[Syntax highlighting]: /tools/syntax-highlighting/
 +[table of contents]: /content-management/toc/
 +[taxonomies]: /content-management/taxonomies/
 +[URLs]: /content-management/urls/
index e193e183878eec008b2cb48269683066306214bc,0000000000000000000000000000000000000000..7c1c9bed4452c1d617f53a22bb773a1c9ec3e8bc
mode 100644,000000..100644
--- /dev/null
@@@ -1,135 -1,0 +1,133 @@@
 +---
 +title: Hugo and the  General Data Protection Regulation (GDPR)
 +linktitle: Hugo and GDPR
 +description: About how to configure your Hugo site to meet the new regulations.
 +date: 2018-05-25
 +layout: single
 +keywords: ["GDPR", "Privacy", "Data Protection"]
 +menu:
 +  docs:
 +    parent: "about"
 +    weight: 5
 +weight: 5
 +sections_weight: 5
 +draft: false
 +aliases: [/privacy/,/gdpr/]
 +toc: true
 +---
 +
 +
 + General Data Protection Regulation ([GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)) is a regulation in EU law on data protection and privacy for all individuals within the European Union and the European Economic Area. It became enforceable on 25 May 2018.
 +
 + **Hugo is a static site generator. By using Hugo you are already standing on very solid ground. Static HTML files on disk are much easier to reason about compared to server and database driven web sites.**
 +
 + But even static websites can integrate with external services, so from version `0.41`, Hugo provides a **Privacy Config** that covers the relevant built-in templates.
 +
 + Note that:
 +
 + * These settings have their defaults setting set to _off_, i.e. how it worked before Hugo `0.41`. You must do your own evaluation of your site and apply the appropriate settings.
 + * These settings work with the [internal templates](/templates/internal/). Some theme may contain custom templates for embedding services like Google Analytics. In that case these options have no effect.
 + * We will continue this work and improve this further in future Hugo versions.
 +
 +## All Privacy Settings
 +
 +Below are all privacy settings and their default value. These settings need to be put in your site config (e.g. `config.toml`).
 +
 + {{< code-toggle file="config">}}
 +[privacy]
 +[privacy.disqus]
 +disable = false
 +[privacy.googleAnalytics]
 +disable = false
 +respectDoNotTrack = false
 +anonymizeIP = false
 +useSessionStorage = false
 +[privacy.instagram]
 +disable = false
 +simple = false
 +[privacy.twitter]
 +disable = false
 +enableDNT = false
 +simple = false
 +[privacy.vimeo]
 +disable = false
 +simple = false
 +[privacy.youtube]
 +disable = false
 +privacyEnhanced = false
 +{{< /code-toggle >}}
 +
 +
 +## Disable All Services
 +
 +An example Privacy Config that disables all the relevant services in Hugo. With this configuration, the other settings will not matter.
 +
 + {{< code-toggle file="config">}}
 +[privacy]
 +[privacy.disqus]
 +disable = true
 +[privacy.googleAnalytics]
 +disable = true
 +[privacy.instagram]
 +disable = true
 +[privacy.twitter]
 +disable = true
 +[privacy.vimeo]
 +disable = true
 +[privacy.youtube]
 +disable = true
 +{{< /code-toggle >}}
 +
 +## The Privacy Settings Explained
 +
 +### GoogleAnalytics
 +
 +anonymizeIP
 +: Enabling this will make it so the users' IP addresses are anonymized within Google Analytics.
 +
 +respectDoNotTrack
 +: Enabling this will make the GA templates respect the "Do Not Track" HTTP header.
 +
 +useSessionStorage
 +: Enabling this will disable the use of Cookies and use Session Storage to Store the GA Client ID.
 +
 +### Instagram
 +
 +simple
 +: If simple mode is enabled, a static and no-JS version of the Instagram image card will be built. Note that this only supports image cards and the image itself will be fetched from Instagram's servers.
 +
- **Note:** If you use the _simple mode_ for Instagram and a site styled with Bootstrap 4, you may want to disable the inlines styles provided by Hugo:
++**Note:** If you use the _simple mode_ for Instagram and a site styled with Bootstrap 4, you may want to disable the inline styles provided by Hugo:
 +
 + {{< code-toggle file="config">}}
 +[services]
 +[services.instagram]
 +disableInlineCSS = true
 +{{< /code-toggle >}}
 +
 +### Twitter
 +
 +enableDNT
 +: Enabling this for the twitter/tweet shortcode, the tweet and its embedded page on your site are not used for purposes that include personalized suggestions and personalized ads.
 +
 +simple
 +: If simple mode is enabled, a static and no-JS version of a tweet will be built.
 +
 +
 +**Note:** If you use the _simple mode_ for Twitter, you may want to disable the inlines styles provided by Hugo:
 +
 + {{< code-toggle file="config">}}
 +[services]
 +[services.twitter]
 +disableInlineCSS = true
 +{{< /code-toggle >}}
 +
 +### YouTube
 +
 +privacyEnhanced
 +: When you turn on privacy-enhanced mode, YouTube won’t store information about visitors on your website unless the user plays the embedded video.
 +
 +### Vimeo
 +
 +simple
 +: If simple mode is enabled, the video thumbnail is fetched from Vimeo's servers and it is overlayed with a play button. If the user clicks to play the video, it will open in a new tab directly on Vimeo's website.
 +
index 2d0eef87391976272a73f469dd84b745f9fc3d4c,0000000000000000000000000000000000000000..7a784113190f43a9195935d371e13e859e88a6e4
mode 100644,000000..100644
--- /dev/null
@@@ -1,54 -1,0 +1,54 @@@
- description: A summary of Hugo's security model. 
 +---
 +title: Hugo's Security Model
- But when developing and building your site, the runtime is the `hugo` executable. Securing a runtime can be [a real challenge](https://blog.logrocket.com/how-to-protect-your-node-js-applications-from-malicious-dependencies-5f2e60ea08f9/). 
++description: A summary of Hugo's security model.
 +date: 2019-10-01
 +layout: single
 +keywords: ["Security", "Privacy"]
 +menu:
 +  docs:
 +    parent: "about"
 +    weight: 4
 +weight: 5
 +sections_weight: 5
 +draft: false
 +aliases: [/security/]
 +toc: true
 +---
 +
 +## Runtime Security
 +
 +Hugo produces static output, so once built, the runtime is the browser (assuming the output is HTML) and any server (API) that you integrate with.
 +
++But when developing and building your site, the runtime is the `hugo` executable. Securing a runtime can be [a real challenge](https://blog.logrocket.com/how-to-protect-your-node-js-applications-from-malicious-dependencies-5f2e60ea08f9/).
 +
 +**Hugo's main approach is that of sandboxing:**
 +
 +* Hugo has a virtual file system and only the main project (not third-party components) is allowed to mount directories or files outside the project root.
 +* Only the main project can walk symbolic links.
 +* User-defined components have only read-access to the filesystem.
 +* We shell out to some external binaries to support [Asciidoctor](/content-management/formats/#list-of-content-formats) and similar, but those binaries and their flags are predefined. General functions to run arbitrary external OS commands have been [discussed](https://github.com/gohugoio/hugo/issues/796), but not implemented because of security concerns.
 +
 +Hugo will soon introduce a concept of _Content Source Plugins_ (AKA _Pages from Data_), but the above will still hold true.
 +
 +## Dependency Security
 +
 +Hugo builds as a static binary using [Go Modules](https://github.com/golang/go/wiki/Modules) to manage its dependencies. Go Modules have several safeguards, one of them being the `go.sum` file. This is a database of the expected cryptographic checksums of all of your dependencies, including any transitive.
 +
 +[Hugo Modules](/hugo-modules/) is built on top of Go Modules functionality, and a Hugo project using Hugo Modules will have a `go.sum` file. We recommend that you commit this file to your version control system. The Hugo build will fail if there is a checksum mismatch, which would be an indication of [dependency tampering](https://julienrenaux.fr/2019/12/20/github-actions-security-risk/).
 +
 +## Web Application Security
 +
 +These are the security threats as defined by [OWASP](https://en.wikipedia.org/wiki/OWASP).
 +
 +For HTML output, this is the core security model:
 +
 +https://golang.org/pkg/html/template/#hdr-Security_Model
 +
 +In short:
 +
 +Templates authors (you) are trusted, but the data you send in is not.
 +This is why you sometimes need to use the _safe_ functions, such as `safeHTML`, to avoid escaping of data you know is safe.
 +There is one exception to the above, as noted in the documentation: If you enable inline shortcodes, you also say that the shortcodes and data handling in content files are trusted, as those macros are treated as pure text.
 +It may be worth adding that Hugo is a static site generator with no concept of dynamic user input.
 +
 +For content, the default Markdown renderer is [configured](/getting-started/configuration-markup) to remove or escape potentially unsafe content. This behavior can be reconfigured if you trust your content.
index 257c7e82d6b497a6b7d7b81f0b5aab230f651db1,0000000000000000000000000000000000000000..b84f61f1008aeade542fcb6567f09bae2dcb2f47
mode 100644,000000..100644
--- /dev/null
@@@ -1,65 -1,0 +1,63 @@@
- [@spf13]: https://twitter.com/@spf13
 +---
 +title: What is Hugo
 +linktitle: What is Hugo
 +description: Hugo is a fast and modern static site generator written in Go, and designed to make website creation fun again.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +layout: single
 +menu:
 +  docs:
 +    parent: "about"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/overview/introduction/,/about/why-i-built-hugo/]
 +toc: true
 +---
 +
 +Hugo is a general-purpose website framework. Technically speaking, Hugo is a [static site generator][]. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website's end users and an ideal writing experience for website authors.
 +
 +Websites built with Hugo are extremely fast and secure. Hugo sites can be hosted anywhere, including [Netlify][], [Heroku][], [GoDaddy][], [DreamHost][], [GitHub Pages][], [GitLab Pages][], [Surge][], [Aerobatic][], [Firebase][], [Google Cloud Storage][], [Amazon S3][], [Rackspace][], [Azure][], and [CloudFront][] and work well with CDNs. Hugo sites run without the need for a database or dependencies on expensive runtimes like Ruby, Python, or PHP.
 +
 +We think of Hugo as the ideal website creation tool with nearly instant build times, able to rebuild whenever a change is made.
 +
 +## How Fast is Hugo?
 +
 +{{< youtube "CdiDYZ51a2o" >}}
 +
 +## What Does Hugo Do?
 +
 +In technical terms, Hugo takes a source directory of files and templates and uses these as input to create a complete website.
 +
 +## Who Should Use Hugo?
 +
 +Hugo is for people that prefer writing in a text editor over a browser.
 +
 +Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
 +
 +Hugo is for people building a blog, a company site, a portfolio site, documentation, a single landing page, or a website with thousands of pages.
 +
- [GoDaddy]: https://www.godaddy.com/ "Godaddy.com Hosting"
++[@spf13]: https://twitter.com/spf13
 +[Aerobatic]: https://www.aerobatic.com/
 +[Amazon S3]: https://aws.amazon.com/s3/
 +[Azure]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website
 +[CloudFront]: https://aws.amazon.com/cloudfront/ "Amazon CloudFront"
 +[DreamHost]: https://www.dreamhost.com/
 +[Firebase]: https://firebase.google.com/docs/hosting/ "Firebase static hosting"
 +[GitHub Pages]: https://pages.github.com/
 +[GitLab Pages]: https://about.gitlab.com/features/pages/
 +[Go language]: https://golang.org/
- [rackspace]: https://www.rackspace.com/cloud/files
++[GoDaddy]: https://www.godaddy.com/ "GoDaddy.com Hosting"
 +[Google Cloud Storage]: https://cloud.google.com/storage/
 +[Heroku]: https://www.heroku.com/
 +[Jekyll]: https://jekyllrb.com/
 +[Middleman]: https://middlemanapp.com/
 +[Nanoc]: https://nanoc.ws/
 +[Netlify]: https://netlify.com
 +[Rackspace]: https://www.rackspace.com/cloud/files
 +[Surge]: https://surge.sh
 +[contributing to it]: https://github.com/gohugoio/hugo
++[rackspace]: https://www.rackspace.com/openstack/public/files
 +[static site generator]: /about/benefits/
index fe519d39765da536e1b90e30c65d915bb94f3071,0000000000000000000000000000000000000000..9805034bf7c6ef01a8fb168aedf32e5be14dab64
mode 100644,000000..100644
--- /dev/null
@@@ -1,82 -1,0 +1,82 @@@
- Complete documentation is available at http://gohugo.io/.
 +---
 +date: 2020-03-03
 +title: "hugo"
 +slug: hugo
 +url: /commands/hugo/
 +---
 +## hugo
 +
 +hugo builds your site
 +
 +### Synopsis
 +
 +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/.
 +
 +```
 +hugo [flags]
 +```
 +
 +### Options
 +
 +```
 +  -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/
 +      --cleanDestinationDir    remove files from destination not found in static directories
 +      --config string          config file (default is path/config.yaml|json|toml)
 +      --configDir string       config dir (default "config")
 +  -c, --contentDir string      filesystem path to content directory
 +      --debug                  debug output
 +  -d, --destination string     filesystem path to write files to
 +      --disableKinds strings   disable different kind of pages (home, RSS etc.)
 +      --enableGitInfo          add Git revision, date and author info to the pages
 +  -e, --environment string     build environment
 +      --forceSyncStatic        copy all files when static is changed.
 +      --gc                     enable to run some cleanup tasks (remove unused cache files) after the build
 +  -h, --help                   help for hugo
 +      --i18n-warnings          print missing translations
 +      --ignoreCache            ignores the cache directory
 +      --ignoreVendor           ignores any _vendor directory
 +  -l, --layoutDir string       filesystem path to layout directory
 +      --log                    enable Logging
 +      --logFile string         log File path (if set, logging enabled automatically)
 +      --minify                 minify any supported output format (HTML, XML etc.)
 +      --noChmod                don't sync permission mode of files
 +      --noTimes                don't sync modification time of files
 +      --path-warnings          print warnings on duplicate target paths etc.
 +      --quiet                  build in quiet mode
 +      --renderToMemory         render to memory (only useful for benchmark testing)
 +  -s, --source string          filesystem path to read files relative from
 +      --templateMetrics        display metrics about template executions
 +      --templateMetricsHints   calculate some improvement hints when combined with --templateMetrics
 +  -t, --theme strings          themes to use (located in /themes/THEMENAME/)
 +      --themesDir string       filesystem path to themes directory
 +      --trace file             write trace to file (not useful in general)
 +  -v, --verbose                verbose output
 +      --verboseLog             verbose logging
 +  -w, --watch                  watch filesystem for changes and recreate as needed
 +```
 +
 +### SEE ALSO
 +
 +* [hugo check](/commands/hugo_check/)  - Contains some verification checks
 +* [hugo config](/commands/hugo_config/)        - Print the site configuration
 +* [hugo convert](/commands/hugo_convert/)      - Convert your content to different formats
 +* [hugo deploy](/commands/hugo_deploy/)        - Deploy your site to a Cloud provider.
 +* [hugo env](/commands/hugo_env/)      - Print Hugo version and environment info
 +* [hugo gen](/commands/hugo_gen/)      - A collection of several useful generators.
 +* [hugo import](/commands/hugo_import/)        - Import your site from others.
 +* [hugo list](/commands/hugo_list/)    - Listing out various types of content
 +* [hugo mod](/commands/hugo_mod/)      - Various Hugo Modules helpers.
 +* [hugo new](/commands/hugo_new/)      - Create new content for your site
 +* [hugo server](/commands/hugo_server/)        - A high performance webserver
 +* [hugo version](/commands/hugo_version/)      - Print the version number of Hugo
 +
 +###### Auto generated by spf13/cobra on 3-Mar-2020
index ff982f9f68fba3a1ff59c71f88bb62cb16ba702a,0000000000000000000000000000000000000000..6411ed58ce1f57871cfd7966f3693e99783f3d04
mode 100644,000000..100644
--- /dev/null
@@@ -1,54 -1,0 +1,53 @@@
-  
 +---
 +date: 2020-03-03
 +title: "hugo mod clean"
 +slug: hugo_mod_clean
 +url: /commands/hugo_mod_clean/
 +---
 +## hugo mod clean
 +
 +Delete the Hugo Module cache for the current project.
 +
 +### Synopsis
 +
 +Delete the Hugo Module cache for the current project.
 +
 +Note that after you run this command, all of your dependencies will be re-downloaded next time you run "hugo".
 +
 +Also note that if you configure a positive maxAge for the "modules" file cache, it will also be cleaned as part of "hugo --gc".
 +
 +
 +```
 +hugo mod clean [flags]
 +```
 +
 +### Options
 +
 +```
 +      --all              clean entire module cache
 +  -h, --help             help for clean
 +      --pattern string   pattern matching module paths to clean (all if not set), e.g. "**hugo*"
 +```
 +
 +### Options inherited from parent commands
 +
 +```
 +      --config string        config file (default is path/config.yaml|json|toml)
 +      --configDir string     config dir (default "config")
 +      --debug                debug output
 +  -e, --environment string   build environment
 +      --ignoreVendor         ignores any _vendor directory
 +      --log                  enable Logging
 +      --logFile string       log File path (if set, logging enabled automatically)
 +      --quiet                build in quiet mode
 +  -s, --source string        filesystem path to read files relative from
 +      --themesDir string     filesystem path to themes directory
 +  -v, --verbose              verbose output
 +      --verboseLog           verbose logging
 +```
 +
 +### SEE ALSO
 +
 +* [hugo mod](/commands/hugo_mod/)      - Various Hugo Modules helpers.
 +
 +###### Auto generated by spf13/cobra on 3-Mar-2020
index 7de0048bbc20fa0ca06c6acde342ec1428273de8,0000000000000000000000000000000000000000..cf1060bfdb95214c097381df7999eec58390e1d2
mode 100644,000000..100644
--- /dev/null
@@@ -1,72 -1,0 +1,72 @@@
-     
 +---
 +date: 2020-03-03
 +title: "hugo mod get"
 +slug: hugo_mod_get
 +url: /commands/hugo_mod_get/
 +---
 +## hugo mod get
 +
 +Resolves dependencies in your current Hugo Project.
 +
 +### Synopsis
 +
 +
 +Resolves dependencies in your current Hugo Project.
 +
 +Some examples:
 +
 +Install the latest version possible for a given module:
 +
 +    hugo mod get github.com/gohugoio/testshortcodes
++
 +Install a specific version:
 +
 +    hugo mod get github.com/gohugoio/testshortcodes@v0.3.0
 +
 +Install the latest versions of all module dependencies:
 +
 +    hugo mod get -u
 +    hugo mod get -u ./... (recursive)
 +
 +Run "go help get" for more information. All flags available for "go get" is also relevant here.
 +
 +Note that Hugo will always start out by resolving the components defined in the site
 +configuration, provided by a _vendor directory (if no --ignoreVendor flag provided),
 +Go Modules, or a folder inside the themes directory, in that order.
 +
 +See https://gohugo.io/hugo-modules/ for more information.
 +
 +
 +
 +```
 +hugo mod get [flags]
 +```
 +
 +### Options
 +
 +```
 +  -h, --help   help for get
 +```
 +
 +### Options inherited from parent commands
 +
 +```
 +      --config string        config file (default is path/config.yaml|json|toml)
 +      --configDir string     config dir (default "config")
 +      --debug                debug output
 +  -e, --environment string   build environment
 +      --ignoreVendor         ignores any _vendor directory
 +      --log                  enable Logging
 +      --logFile string       log File path (if set, logging enabled automatically)
 +      --quiet                build in quiet mode
 +  -s, --source string        filesystem path to read files relative from
 +      --themesDir string     filesystem path to themes directory
 +  -v, --verbose              verbose output
 +      --verboseLog           verbose logging
 +```
 +
 +### SEE ALSO
 +
 +* [hugo mod](/commands/hugo_mod/)      - Various Hugo Modules helpers.
 +
 +###### Auto generated by spf13/cobra on 3-Mar-2020
index 2cbc1162065bb81aa53025da055fbb6098edd525,0000000000000000000000000000000000000000..a39897dd860af90b332e0f28b1f7cc1eaaf7a2e6
mode 100644,000000..100644
--- /dev/null
@@@ -1,184 -1,0 +1,182 @@@
 +---
 +title: Authors
 +linktitle: Authors
 +description:
 +date: 2016-08-22
 +publishdate: 2017-03-12
 +lastmod: 2017-03-12
 +keywords: [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.
 +---
 +
- As aforementioned, Hugo is able to generate links to profiles of the most popular social networks. The following social networks with their corresponding identifiers are supported:  `github`, `facebook`, `twitter`, `pinterest`, `instagram`, `youtube` and `linkedin`.
 +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  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"
 +    website    = "www.example.com"
 +
 +[params]
 +    random     = "whatever you want"
 +{{< /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.
 +
 +```
 +---
 +title: Why Hugo is so Awesome
 +date: 2016-08-22T14:27:502:00
 +authors: ["alice"]
 +---
 +
 +Nothing to read here. Move along...
 +```
 +
 +```
 ++++
 +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 corresponding identifiers are supported: `github`, `facebook`, `twitter`, `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`, `twitter`). 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 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 }}
 +{{< /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:
 +
 +```
 +taxonomies:
 +    author: authors
 +```
 +
 +```
 +[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 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 >}}
 +
 +`.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 file="layouts/taxonomy/author.html" download="author.html" >}}
 +{{ range .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 028a15c9b5ba7b7e5b9cf59d4429f9081e675205,0000000000000000000000000000000000000000..b01568d39a21fab866cd645426bbbde0d3c25044
mode 100644,000000..100644
--- /dev/null
@@@ -1,108 -1,0 +1,108 @@@
- : The page will not be incldued in any page collection.
 +---
 +title: Build Options
 +linktitle: Build Options
 +description: Build options help define how Hugo must treat a given page when building the site.
 +date: 2020-03-02
 +publishdate: 2020-03-02
 +keywords: [build,content,front matter, page resources]
 +categories: ["content management"]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 31
 +weight: 31    #rem
 +draft: false
 +aliases: [/content/build-options/]
 +toc: true
 +---
 +
 +They are stored in a reserved Front Matter object named `_build` with the following defaults:
 +
 +```yaml
 +_build:
 +  render: true
 +  list: always
 +  publishResources: true
 +```
 +
 +#### render
 +If true, the page will be treated as a published page, holding its dedicated output files (`index.html`, etc...) and permalink.
 +
 +#### list
 +
 +Note that we extended this property from a boolean to an enum in Hugo 0.68.0.
 +
 +Valid values are:
 +
 +never
++: The page will not be included in any page collection.
 +
 +always (default)
 +: The page will be included in all page collections, e.g. `site.RegularPages`, `$page.Pages`.
 +
 +local
 +: The page will be included in any _local_ page collection, e.g. `$page.RegularPages`, `$page.Pages`. One use case for this would be to create fully navigable, but headless content sections. {{< new-in "0.68.0" >}}
 +
 +If true, the page will be treated as part of the project's collections and, when appropriate, returned by Hugo's listing methods (`.Pages`, `.RegularPages` etc...).
 +
 +#### publishResources
 +
 +If set to true the [Bundle's Resources]({{< relref "content-management/page-bundles" >}}) will be published. 
 +Setting this to false will still publish Resources on demand (when a resource's `.Permalink` or `.RelPermalink` is invoked from the templates) but will skip the others.
 +
 +{{% note %}}
 +Any page, regardless of their build options, will always be available using the [`.GetPage`]({{< relref "functions/GetPage" >}}) methods.
 +{{% /note %}}
 +
 +------
 +
 +### Illustrative use cases
 +
 +#### Not publishing a page
 +Project needs a "Who We Are" content file for Front Matter and body to be used by the homepage but nowhere else.
 +
 +```yaml
 +# content/who-we-are.md`
 +title: Who we are
 +_build:
 + list: false
 + render: false
 +```
 +
 +```go-html-template
 +{{/* layouts/index.html */}}
 +<section id="who-we-are">
 +{{ with site.GetPage "who-we-are" }}
 +  {{ .Content }}
 +{{ end }}
 +</section>
 +```
 +
 +#### Listing pages without publishing them
 +
 +Website needs to showcase a few of the hundred "testimonials" available as content files without publishing any of them.
 +
 +To avoid setting the build options on every testimonials, one can use [`cascade`]({{< relref "/content-management/front-matter#front-matter-cascade" >}}) on the testimonial section's content file.
 +
 +```yaml
 +#content/testimonials/_index.md
 +title: Testimonials
 +# section build options:
 +_build:
 +  render: true
 +# children build options with cascade
 +cascade:
 +  _build:
 +    render: false
 +    list: true # default
 +```
 +
 +```go-html-template
 +{{/* layouts/_defaults/testimonials.html */}}
 +<section id="testimonials">
 +{{ range first 5 .Pages }}
 +  <blockquote cite="{{ .Params.cite }}">
 +    {{ .Content }}
 +  </blockquote>
 +{{ end }}
 +</section>
index d7a467d1033ffc65d0b83f9c0423de83392b34e5,0000000000000000000000000000000000000000..b5357cba4f20b6964ea6ad5eab5647b56539b003
mode 100644,000000..100644
--- /dev/null
@@@ -1,77 -1,0 +1,77 @@@
- * [isso](https://posativ.org/isso/) (Self-hosted, Python)
 +---
 +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
 +keywords: [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] like so:
 +
 +{{< code-toggle copy="false" >}}
 +disqusShortname = "yourdiscussshortname"
 +{{</ code-toggle >}}
 +
 +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
 +
 +Disqus has its own [internal template](https://gohugo.io/templates/internal/#disqus) available, to render it add the following code where you want comments to appear:
 +
 +```
 +{{ template "_internal/disqus.html" . }}
 +```
 +
 +## Comments Alternatives
 +
 +There are a few alternatives to commenting on static sites for those who do not want to use Disqus:
 +
 +* [Staticman](https://staticman.net/)
 +* [Talkyard](https://www.talkyard.io/blog-comments) (Open source, & serverless hosting)
 +* [IntenseDebate](https://intensedebate.com/)
 +* [Graph Comment][]
 +* [Muut](https://muut.com/)
++* [Isso](https://posativ.org/isso/) (Self-hosted, Python)
 +    * [Tutorial on Implementing Isso with Hugo][issotutorial]
 +* [Utterances](https://utteranc.es/) (Open source, GitHub comments widget built on GitHub issues)
 +* [Remark](https://github.com/umputun/remark) (Open source, Golang, Easy to run docker)
 +* [Commento](https://commento.io/) (Open Source, available as a service, local install, or docker image)
 +* [Hyvor Talk](https://talk.hyvor.com/) (Available as a service)
 +
 +
 +[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 075953093f53668b34497c29987f6ceaf81894fe,0000000000000000000000000000000000000000..745c2c53b0e151a989e58cbd9c75058c3e85a971
mode 100644,000000..100644
--- /dev/null
@@@ -1,317 -1,0 +1,317 @@@
- Note that this is only suported for JPEG and TIFF images, so it's recommended to wrap the access with a `with`, e.g.:
 +---
 +title: "Image Processing"
 +description: "Image Page resources can be resized and cropped."
 +date: 2018-01-24T13:10:00-05:00
 +linktitle: "Image Processing"
 +categories: ["content management"]
 +keywords: [resources, images]
 +weight: 4004
 +draft: false
 +toc: true
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 32
 +---
 +
 +## The Image Page Resource
 +
 +The `image` is a [Page Resource]({{< relref "/content-management/page-resources" >}}), and the processing methods listed below do not work on images inside your `/static` folder.
 +
 +To print all images paths in a [Page Bundle]({{< relref "/content-management/organization#page-bundles" >}}):
 +
 +```go-html-template
 +{{ with .Resources.ByType "image" }}
 +{{ range . }}
 +{{ .RelPermalink }}
 +{{ end }}
 +{{ end }}
 +
 +```
 +
 +## The Image Resource
 +
 +The `image` resource can also be retrieved from a [global resource]({{< relref "/hugo-pipes/introduction#from-file-to-resource" >}})
 +
 +{{- $image := resources.Get "images/logo.jpg" -}}
 +
 +## Image Processing Methods
 +
 +The `image` resource implements the methods `Resize`, `Fit` and `Fill`, each returning the transformed image using the specified dimensions and processing options. The `image` resource also, since Hugo 0.58, implements the method `Exif` and `Filter`.
 +
 +### Resize
 +
 +Resizes the image to the specified width and height.
 +
 +```go
 +// Resize to a width of 600px and preserve ratio
 +{{ $image := $resource.Resize "600x" }}
 +
 +// Resize to a height of 400px and preserve ratio
 +{{ $image := $resource.Resize "x400" }}
 +
 +// Resize to a width 600px and a height of 400px
 +{{ $image := $resource.Resize "600x400" }}
 +```
 +
 +### Fit
 +
 +Scale down the image to fit the given dimensions while maintaining aspect ratio. Both height and width are required.
 +
 +```go
 +{{ $image := $resource.Fit "600x400" }}
 +```
 +
 +### Fill
 +
 +Resize and crop the image to match the given dimensions. Both height and width are required.
 +
 +```go
 +{{ $image := $resource.Fill "600x400" }}
 +```
 +
 +### Filter
 +
 +Apply one or more filters to your image. See [Image Filters](/functions/images/#image-filters) for a full list.
 +
 +```go-html-template
 +{{ $img = $img.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
 +```
 +
 +The above can also be written in a more functional style using pipes:
 +
 +```go-html-template
 +{{ $img = $img | images.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
 +```
 +
 +The filters will be applied in the given order.
 +
 +Sometimes it can be useful to create the filter chain once and then reuse it:
 +
 +```go-html-template
 +{{ $filters := slice  (images.GaussianBlur 6) (images.Pixelate 8) }}
 +{{ $img1 = $img1.Filter $filters }}
 +{{ $img2 = $img2.Filter $filters }}
 +```
 +
 +### Exif
 +
 +Provides an [Exif](https://en.wikipedia.org/wiki/Exif) object with metadata about the image.
 +
++Note that this is only supported for JPEG and TIFF images, so it's recommended to wrap the access with a `with`, e.g.:
 +
 +```go-html-template
 +{{ with $img.Exif }}
 +Date: {{ .Date }}
 +Lat/Long: {{ .Lat}}/{{ .Long }}
 +Tags:
 +{{ range $k, $v := .Tags }}
 +TAG: {{ $k }}: {{ $v }}
 +{{ end }}
 +{{ end }}
 +```
 +
 +Or individually access EXIF data with dot access, e.g.:
 +
 +```go-html-template
 +{{ with $src.Exif }}
 +  <ul>
 +      {{ with .Date }}<li>Date: {{ .Format "January 02, 2006" }}</li>{{ end }}
 +      {{ with .Tags.ApertureValue }}<li>Aperture: {{ lang.NumFmt 2 . }}</li>{{ end }}
 +      {{ with .Tags.BrightnessValue }}<li>Brightness: {{ lang.NumFmt 2 . }}</li>{{ end }}
 +      {{ with .Tags.ExposureTime }}<li>Exposure Time: {{ . }}</li>{{ end }}
 +      {{ with .Tags.FNumber }}<li>F Number: {{ . }}</li>{{ end }}
 +      {{ with .Tags.FocalLength }}<li>Focal Length: {{ . }}</li>{{ end }}
 +      {{ with .Tags.ISOSpeedRatings }}<li>ISO Speed Ratings: {{ . }}</li>{{ end }}
 +      {{ with .Tags.LensModel }}<li>Lens Model: {{ . }}</li>{{ end }}
 +  </ul>
 +{{ end }}
 +```
 +
 +Some fields may need to be formatted with [`lang.NumFmt`]({{< relref "functions/numfmt" >}}) function to prevent display like `Aperture: 2.278934289` instead of `Aperture: 2.28`.
 +
 +#### Exif fields
 +
 +Date
 +: "photo taken" date/time
 +
 +Lat
 +: "photo taken where", GPS latitude
 +
 +Long
 +: "photo taken where", GPS longitude
 +
 +See [Image Processing Config](#image-processing-config) for how to configure what gets included in Exif.
 +
 +## Image Processing Options
 +
 +In addition to the dimensions (e.g. `600x400`), Hugo supports a set of additional image options.
 +
 +### Background Color
 +
 +The background color to fill into the transparency layer. This is mostly useful when converting to a format that does not support transparency, e.g. `JPEG`.
 +
 +You can set the background color to use with a 3 or 6 digit hex code starting with `#`.
 +
 +```go
 +{{ $image.Resize "600x jpg #b31280" }}
 +```
 +
 +For color codes, see https://www.google.com/search?q=color+picker
 +
 +**Note** that you also set a default background color to use, see [Image Processing Config](#image-processing-config).
 +
 +### JPEG Quality
 +
 +Only relevant for JPEG images, values 1 to 100 inclusive, higher is better. Default is 75.
 +
 +```go
 +{{ $image.Resize "600x q50" }}
 +```
 +
 +### Rotate
 +
 +Rotates an image by the given angle counter-clockwise. The rotation will be performed first to get the dimensions correct. The main use of this is to be able to manually correct for [EXIF orientation](https://github.com/golang/go/issues/4341) of JPEG images.
 +
 +```go
 +{{ $image.Resize "600x r90" }}
 +```
 +
 +### Anchor
 +
 +Only relevant for the `Fill` method. This is useful for thumbnail generation where the main motive is located in, say, the left corner.
 +
 +Valid values are `Smart`, `Center`, `TopLeft`, `Top`, `TopRight`, `Left`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`.
 +
 +Default value is `Smart`, which uses [Smartcrop](https://github.com/muesli/smartcrop) to determine the best crop.
 +
 +```go
 +{{ $image.Fill "300x200 BottomLeft" }}
 +```
 +
 +### Resample Filter
 +
 +Filter used in resizing. Default is `Box`, a simple and fast resampling filter appropriate for downscaling.
 +
 +Examples are: `Box`, `NearestNeighbor`, `Linear`, `Gaussian`.
 +
 +See https://github.com/disintegration/imaging for more. If you want to trade quality for faster processing, this may be a option to test.
 +
 +```go
 +{{ $image.Resize "600x400 Gaussian" }}
 +```
 +
 +### Target Format
 +
 +By default the images is encoded in the source format, but you can set the target format as an option.
 +
 +Valid values are `jpg`, `png`, `tif`, `bmp`, and `gif`.
 +
 +```go
 +{{ $image.Resize "600x jpg" }}
 +```
 +
 +## Image Processing Examples
 +
 +_The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://commons.wikimedia.org/wiki/User:Bep) (Creative Commons Attribution-Share Alike 4.0 International license)_
 +
 +{{< imgproc sunset Resize "300x" />}}
 +
 +{{< imgproc sunset Fill "90x120 left" />}}
 +
 +{{< imgproc sunset Fill "90x120 right" />}}
 +
 +{{< imgproc sunset Fit "90x90" />}}
 +
 +{{< imgproc sunset Resize "300x q10" />}}
 +
 +This is the shortcode used in the examples above:
 +
 +{{< code file="layouts/shortcodes/imgproc.html" >}}
 +{{< readfile file="layouts/shortcodes/imgproc.html" >}}  
 +{{< /code >}}
 +
 +And it is used like this:
 +
 +```go-html-template
 +{{</* imgproc sunset Resize "300x" /*/>}}
 +```
 +
 +{{% note %}}
 +**Tip:** Note the self-closing shortcode syntax above. The `imgproc` shortcode can be called both with and without **inner content**.
 +{{% /note %}}
 +
 +## Image Processing Config
 +
 +You can configure an `imaging` section in `config.toml` with default image processing options:
 +
 +```toml
 +[imaging]
 +# Default resample filter used for resizing. Default is Box,
 +# a simple and fast averaging filter appropriate for downscaling.
 +# See https://github.com/disintegration/imaging
 +resampleFilter = "box"
 +
 +# Default JPEG quality setting. Default is 75.
 +quality = 75
 +
 +# Anchor used when cropping pictures.
 +# Default is "smart" which does Smart Cropping, using https://github.com/muesli/smartcrop
 +# Smart Cropping is content aware and tries to find the best crop for each image.
 +# Valid values are Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight
 +anchor = "smart"
 +
 +# Default background color.
 +# Hugo will preserve transparency for target formats that supports it,
 +# but will fall back to this color for JPEG.
 +# Expects a standard HEX color string with 3 or 6 digits.
 +# See https://www.google.com/search?q=color+picker
 +bgColor = "#ffffff"
 +
 +[imaging.exif]
 + # Regexp matching the fields you want to Exclude from the (massive) set of Exif info
 +# available. As we cache this info to disk, this is for performance and
 +# disk space reasons more than anything.
 +# If you want it all, put ".*" in this config setting.
 +# Note that if neither this or ExcludeFields is set, Hugo will return a small
 +# default set.
 +includeFields = ""
 +
 +# Regexp matching the Exif fields you want to exclude. This may be easier to use
 +# than IncludeFields above, depending on what you want.
 +excludeFields = ""
 +
 +# Hugo extracts the "photo taken" date/time into .Date by default.
 +# Set this to true to turn it off.
 +disableDate = false
 +
 +# Hugo extracts the "photo taken where" (GPS latitude and longitude) into
 +# .Long and .Lat. Set this to true to turn it off.
 +disableLatLong = false
 +
 +
 +```
 +
 +## Smart Cropping of Images
 +
 +By default, Hugo will use the [Smartcrop](https://github.com/muesli/smartcrop), a library created by [muesli](https://github.com/muesli), when cropping images with `.Fill`. You can set the anchor point manually, but in most cases the smart option will make a good choice. And we will work with the library author to improve this in the future.
 +
 +An example using the sunset image from above:
 +
 +{{< imgproc sunset Fill "200x200 smart" />}}
 +
 +## Image Processing Performance Consideration
 +
 +Processed images are stored below `<project-dir>/resources` (can be set with `resourceDir` config setting). This folder is deliberately placed in the project, as it is recommended to check these into source control as part of the project. These images are not "Hugo fast" to generate, but once generated they can be reused.
 +
 +If you change your image settings (e.g. size), remove or rename images etc., you will end up with unused images taking up space and cluttering your project.
 +
 +To clean up, run:
 +
 +```bash
 +hugo --gc
 +```
 +
 +{{% note %}}
 +**GC** is short for **Garbage Collection**.
 +{{% /note %}}
index 575393d471cb900e5d5340b73bc1e2f7286c3c47,0000000000000000000000000000000000000000..ccf794b2e80eafdc687f08cfaabf9240b3c7fb9d
mode 100644,000000..100644
--- /dev/null
@@@ -1,465 -1,0 +1,465 @@@
- If the default language needs to be rendererd below its own language code (`/en`) like the others, set `defaultContentLanguageInSubdir: true`.
 +---
 +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]
 +keywords: [multilingual,i18n, internationalization]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 150
 +weight: 150   #rem
 +draft: false
 +aliases: [/content/multilingual/,/tutorials/create-a-multilingual-site/]
 +toc: true
 +---
 +
 +You should define the available languages in a `languages` section in your site configuration.
 +
 +> Also See [Hugo Multilingual Part 1: Content translation](https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/)
 +
 +## Configure Languages
 +
 +The following is an example of a site configuration for a multilingual Hugo project:
 +
 +{{< code-toggle file="config" >}}
 +DefaultContentLanguage = "en"
 +copyright = "Everything is mine"
 +
 +[params]
 +[params.navigation]
 +help  = "Help"
 +
 +[languages]
 +[languages.en]
 +title = "My blog"
 +weight = 1
 +[languages.en.params]
 +linkedin = "https://linkedin.com/whoever"
 +
 +[languages.fr]
 +title = "Mon blogue"
 +weight = 2
 +[languages.fr.params]
 +linkedin = "https://linkedin.com/fr/whoever"
 +[languages.fr.params.navigation]
 +help  = "Aide"
 +
 +[languages.ar]
 +title = "مدونتي"
 +weight = 2
 +languagedirection = "rtl"
 +{{< /code-toggle >}}
 +
 +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). This also works for `params`, as demonstrated with `help` above: You will get the value `Aide` in French and `Help` in all the languages without this parameter set.
 +
 +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.
 +
 +`defaultContentLanguage` sets the project's default language. If not set, the default language will be `en`.
 +
- When you run `hugo server` we will start multiple HTTP servers. You will typlically see something like this in the console:
++If the default language needs to be rendered below its own language code (`/en`) like the others, set `defaultContentLanguageInSubdir: true`.
 +
 +Only the obvious non-global options can be overridden per language. Examples of global options are `baseURL`, `buildDrafts`, etc.
 +
 +### Disable a Language
 +
 +You can disable one or more languages. This can be useful when working on a new translation.
 +
 +```toml
 +disableLanguages = ["fr", "ja"]
 +```
 +
 +Note that you cannot disable the default content language.
 +
 +We kept this as a standalone setting to make it easier to set via [OS environment](/getting-started/configuration/#configure-with-environment-variables):
 +
 +```bash
 +HUGO_DISABLELANGUAGES="fr ja" hugo
 +```
 +If you have already a list of disabled languages in `config.toml`, you can enable them in development like this:
 +
 +```bash
 +HUGO_DISABLELANGUAGES=" " hugo server
 +```
 +
 +
 +### Configure Multilingual Multihost
 +
 +From **Hugo 0.31** we support multiple languages in a multihost configuration. See [this issue](https://github.com/gohugoio/hugo/issues/4027) for details.
 +
 +This means that you can now configure a `baseURL` per `language`:
 +
 +
 +> If a `baseURL` is set on the `language` level, then all languages must have one and they must all be different.
 +
 +Example:
 +
 +{{< code-toggle file="config" >}}
 +[languages]
 +[languages.fr]
 +baseURL = "https://example.fr"
 +languageName = "Français"
 +weight = 1
 +title = "En Français"
 +
 +[languages.en]
 +baseURL = "https://example.com"
 +languageName = "English"
 +weight = 2
 +title = "In English"
 +{{</ code-toggle >}}
 +
 +With the above, the two sites will be generated into `public` with their own root:
 +
 +```bash
 +public
 +├── en
 +└── fr
 +```
 +
 +**All URLs (i.e `.Permalink` etc.) will be generated from that root. So the English home page above will have its `.Permalink` set to `https://example.com/`.**
 +
- Considering the following example in conjunction with the configuration above: 
++When you run `hugo server` we will start multiple HTTP servers. You will typically see something like this in the console:
 +
 +```bash
 +Web Server is available at 127.0.0.1:1313 (bind address 127.0.0.1)
 +Web Server is available at 127.0.0.1:1314 (bind address 127.0.0.1)
 +Press Ctrl+C to stop
 +```
 +
 +Live reload and `--navigateToChanged` between the servers work as expected.
 +
 +### Taxonomies and Blackfriday
 +
 +Taxonomies and [Blackfriday configuration][config] can also be set per language:
 +
 +
 +{{< code-toggle file="config" >}}
 +[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"
 +{{</ code-toggle >}}
 +
 +## Translate Your Content
 +
 +There are two ways to manage your content translations. Both ensure each page is assigned a language and is linked to its counterpart translations.
 +
 +### Translation by filename
 +
 +Considering the following example:
 +
 +1. `/content/about.en.md`
 +2. `/content/about.fr.md`
 +
 +The first file is assigned the English language and is linked to the second.
 +The second file is assigned the French language and is linked to the first.
 +
 +Their language is __assigned__ according to the language code added as a __suffix to the filename__. 
 +
 +By having the same **path and base filename**, the content pieces are __linked__ together as translated pages.
 +
 +{{< note >}}
 +If a file has no language code, it will be assigned the default language.
 +{{</ note >}}
 +
 +### Translation by content directory
 +
 +This system uses different content directories for each of the languages. Each language's content directory is set using the `contentDir` param.
 +
 +{{< code-toggle file="config" >}}
 +
 +languages:
 +  en:
 +    weight: 10
 +    languageName: "English"
 +    contentDir: "content/english"
 +  fr:
 +    weight: 20
 +    languageName: "Français"
 +    contentDir: "content/french"
 +
 +{{< /code-toggle >}}
 +
 +The value of `contentDir` can be any valid path -- even absolute path references. The only restriction is that the content directories cannot overlap.
 +
++Considering the following example in conjunction with the configuration above:
 +
 +1. `/content/english/about.md`
 +2. `/content/french/about.md`
 +
 +The first file is assigned the English language and is linked to the second.
 +The second file is assigned the French language and is linked to the first.
 +
 +Their language is __assigned__ according to the content directory they are __placed__ in.
 +
 +By having the same **path and basename** (relative to their language content directory), the content pieces are __linked__ together as translated pages.
 +
 +### Bypassing default linking.
 +
 +Any pages sharing the same `translationKey` set in front matter will be linked as translated pages regardless of basename or location.
 +
 +Considering the following example:
 +
 +1. `/content/about-us.en.md`
 +2. `/content/om.nn.md`
 +3. `/content/presentation/a-propos.fr.md`
 +
 +```yaml
 +# set in all three pages
 +translationKey: "about"
 +```
 +
 +By setting the `translationKey` front matter param to `about` in all three pages, they will be __linked__ as translated pages.
 +
 +
 +### Localizing permalinks
 +
 +Because paths and filenames are used to handle linking, all translated pages will share the same URL (apart from the language subdirectory).
 +
 +To localize the URLs, the [`slug`]({{< ref "/content-management/organization/index.md#slug" >}}) or [`url`]({{< ref "/content-management/organization/index.md#url" >}}) front matter param can be set in any of the non-default language file. 
 +
 +For example, a French translation (`content/about.fr.md`) can have its own localized slug.
 +
 +{{< code-toggle >}}
 +Title: A Propos
 +slug: "a-propos"
 +{{< /code-toggle >}}
 +
 +
 +At render, Hugo will build both `/about/` and `/fr/a-propos/` while maintaining their translation linking.
 +
 +{{% note %}}
 +If using `url`, remember to include the language part as well: `/fr/compagnie/a-propos/`.
 +{{%/ note %}}
 +
 +### Page Bundles
 +
 +To avoid the burden of having to duplicate files, each Page Bundle inherits the resources of its linked translated pages' bundles except for the content files (markdown files, html files etc...).
 +
 +Therefore, from within a template, the page will have access to the files from all linked pages' bundles.
 +
 +If, across the linked bundles, two or more files share the same basename, only one will be included and chosen as follows:
 +
 +* File from current language bundle, if present.
 +* First file found across bundles by order of language `Weight`.
 +
 +{{% note %}}
 +Page Bundle resources follow the same language assignment logic as content files, both by filename (`image.jpg`, `image.fr.jpg`) and by directory (`english/about/header.jpg`, `french/about/header.jpg`).
 +{{%/ note %}}
 +
 +## Reference the Translated Content
 +
 +To create a list of links to translated content, use a template similar to the following:
 +
 +{{< 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 }}
 +{{< /code >}}
 +
 +The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template, whether a [single content page][contenttemplate] or the [homepage][]. It will not print anything if there are no translations for a given page.
 +
 +The above also uses the [`i18n` function][i18func] described in the next section.
 +
 +### List All Available Languages
 +
 +`.AllTranslations` on a `Page` can be used to list all translations, including the page itself. On the home page it can be used to build a language navigator:
 +
 +
 +{{< code file="layouts/partials/allLanguages.html" >}}
 +<ul>
 +{{ range $.Site.Home.AllTranslations }}
 +<li><a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
 +{{ end }}
 +</ul>
 +{{< /code >}}
 +
 +## 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.
 +
 +{{% note %}}
 +From **Hugo 0.31** you no longer need to use a valid language code. It can be anything.
 +
 +See https://github.com/gohugoio/hugo/issues/3564
 +
 +{{% /note %}}
 +
 +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 to read"
 +other = "{{.Count}} minutes to read"
 +```
 +And then in the template:
 +
 +```
 +{{ i18n "readingTime" .ReadingTime }}
 +```
 +
 +## Customize Dates
 +
 +At the time of this writing, Go does not yet have support for internationalized locales for dates, 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. Creating multilingual menus works just like [creating regular menus][menus], except they're defined in language-specific blocks in the configuration file:
 +
 +```
 +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 in the current language. Note that `absLangURL` below will link to the correct locale of your website. Without it, menu entries in all languages would link to the English version, since it's 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 suitable for production environments.
 +{{% /note %}}
 +
 +For merging of content from other languages (i.e. missing content translations), see [lang.Merge](/functions/lang.merge/).
 +
 +To track down missing translation strings, run Hugo with the `--i18n-warnings` flag:
 +
 +```
 + hugo --i18n-warnings | grep i18n
 +i18n|MISSING_TRANSLATION|en|wordCount
 +```
 +
 +## 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 `.RelPermalink`
 +* Be constructed with the [`relLangURL` template function][rellangurl] or the [`absLangURL` template function][abslangurl] **OR** be 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 64d32781a70b366bda5e7a12f5d290c15051ecae,0000000000000000000000000000000000000000..fa4c025203dc2587704cc04de71fd8a70f016f93
mode 100644,000000..100644
--- /dev/null
@@@ -1,240 -1,0 +1,240 @@@
- {{% imgproc 1-featured Resize "300x" %}}
 +---
 +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]
 +keywords: [sections,content,organization,bundle,resources]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 10
 +weight: 10    #rem
 +draft: false
 +aliases: [/content/sections/]
 +toc: true
 +---
 +
 +## Page Bundles
 +
 +Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`.
 +
 +These terms are connected, and you also need to read about [Page Resources]({{< relref "/content-management/page-resources" >}}) and [Image Processing]({{< relref "/content-management/image-processing" >}}) to get the full picture.
 +
- {{% /imgproc %}}
++{{< imgproc 1-featured Resize "300x" >}}
 +The illustration shows 3 bundles. Note that the home page bundle cannot contain other content pages, but other files (images etc.) are fine.
- At the time Hugo builds your site, the content will be output to the following destination:
++{{< /imgproc >}}
 +
 +
 +{{% note %}}
 +The bundle documentation is **work in progress**. We will publish more comprehensive docs about this soon.
 +{{% /note %}}
 +
 +
 +# 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 type used to determine layouts etc. To read more about sections, including how to nest them, see [sections][].
 +
 +Without any additional configuration, the following will just work:
 +
 +```
 +.
 +└── content
 +    └── about
 +    |   └── index.md  // <- https://example.com/about/
 +    ├── posts
 +    |   ├── firstpost.md   // <- https://example.com/posts/firstpost/
 +    |   ├── happy
 +    |   |   └── ness.md  // <- https://example.com/posts/happy/ness/
 +    |   └── secondpost.md  // <- https://example.com/posts/secondpost/
 +    └── quote
 +        ├── first.md       // <- https://example.com/quote/first/
 +        └── second.md      // <- https://example.com/quote/second/
 +```
 +
 +## Path Breakdown in Hugo
 +
 +
 +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 = "https://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]. These templates include those for [section templates][], [taxonomy templates][], [taxonomy terms templates][], and your [homepage template][].
 +
 +{{% note %}}
 +**Tip:** You can get a reference to the content and metadata in `_index.md` using the [`.Site.GetPage` function](/functions/getpage/).
 +{{% /note %}}
 +
 +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:
 +
 +
 +```
 +.         url
 +.       ⊢--^-⊣
 +.        path    slug
 +.       ⊢--^-⊣⊢---^---⊣
 +.           filepath
 +.       ⊢------^------⊣
 +content/posts/_index.md
 +```
 +
 +At build, this will output to the following destination with the associated values:
 +
 +```
 +
 +                     url ("/posts/")
 +                    ⊢-^-⊣
 +       baseurl      section ("posts")
 +⊢--------^---------⊣⊢-^-⊣
 +        permalink
 +⊢----------^-------------⊣
 +https://example.com/posts/index.html
 +```
 +
 +The [sections][] can be nested as deeply as you need. The important part to understand is, that to make the section tree fully navigational, at least the lower-most section needs a content file. (i.e. `_index.md`).
 +
 +
 +### 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`:
 +
 +
 +```
 +                   path ("posts/my-first-hugo-post.md")
 +.       ⊢-----------^------------⊣
 +.      section        slug
 +.       ⊢-^-⊣⊢--------^----------⊣
 +content/posts/my-first-hugo-post.md
 +```
 +
++When Hugo builds your site, the content will be outputted to the following destination:
 +
 +```
 +
 +                               url ("/posts/my-first-hugo-post/")
 +                   ⊢------------^----------⊣
 +       baseurl     section     slug
 +⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣
 +                 permalink
 +⊢--------------------^---------------------⊣
 +https://example.com/posts/my-first-hugo-post/index.html
 +```
 +
 +
 +## 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`
 +
 +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 file="content/posts/old-post.md" >}}
 +---
 +title: A new post with the filename old-post.md
 +slug: "new-post"
 +---
 +{{< /code >}}
 +
 +This will render to the following destination according to Hugo's default behavior:
 +
 +```
 +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 file="content/posts/my-post.md" >}}
 +---
 +title: My Post
 +type: new
 +layout: mylayout
 +---
 +{{< /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 file="content/posts/old-url.md" >}}
 +---
 +title: Old URL
 +url: /blog/new-url/
 +---
 +{{< /code >}}
 +
 +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 83afb133bcb5fd0bd67248b07ecf05ece0e43a0c,0000000000000000000000000000000000000000..75c40ce6e536ca9d4cceb6ab97ad5d4edcbec8a1
mode 100644,000000..100644
--- /dev/null
@@@ -1,169 -1,0 +1,169 @@@
- The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm).
 +---
 +title : "Page Resources"
 +description : "Page Resources -- images, other pages, documents etc. -- have page-relative URLs and their own metadata."
 +date: 2018-01-24
 +categories: ["content management"]
 +keywords: [bundle,content,resources]
 +weight: 4003
 +draft: false
 +toc: true
 +linktitle: "Page Resources"
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 31
 +---
 +
 +Page resources are available for [page bundles]({{< relref "/content-management/page-bundles" >}}) only,
 +i.e. a directory with either a `index.md`, or `_index.md` file at its root. Resources are only attached to
 +the lowest page they are bundled with, and simple which names does not contain `index.md` are not attached any resource.
 +
 +## Properties
 +
 +ResourceType
 +: The main type of the resource. For example, a file of MIME type `image/jpeg` has the ResourceType `image`.
 +
 +Name
 +: Default value is the filename (relative to the owning page). Can be set in front matter.
 +
 +Title
 +: Default value is the same as `.Name`. Can be set in front matter.
 +
 +Permalink
 +: The absolute URL to the resource. Resources of type `page` will have no value.
 +
 +RelPermalink
 +: The relative URL to the resource. Resources of type `page` will have no value.
 +
 +Content
 +: The content of the resource itself. For most resources, this returns a string with the contents of the file. This can be used to inline some resources, such as `<script>{{ (.Resources.GetMatch "myscript.js").Content | safeJS }}</script>` or `<img src="{{ (.Resources.GetMatch "mylogo.png").Content | base64Encode }}">`.
 +
 +MediaType
 +: The MIME type of the resource, such as `image/jpeg`.
 +
 +MediaType.MainType
 +: The main type of the resource's MIME type. For example, a file of MIME type `application/pdf` has for MainType `application`.
 +
 +MediaType.SubType
 +: The subtype of the resource's MIME type. For example, a file of MIME type `application/pdf` has for SubType `pdf`. Note that this is not the same as the file extension - PowerPoint files have a subtype of `vnd.mspowerpoint`.
 +
 +MediaType.Suffixes
 +: A slice of possible suffixes for the resource's MIME type.
 +
 +## Methods
 +ByType
 +: Returns the page resources of the given type.
 +
 +```go
 +{{ .Resources.ByType "image" }}
 +```
 +Match
 +: Returns all the page resources (as a slice) whose `Name` matches the given Glob pattern ([examples](https://github.com/gobwas/glob/blob/master/readme.md)). The matching is case-insensitive.
 +
 +```go
 +{{ .Resources.Match "images/*" }}
 +```
 +
 +GetMatch
 +: Same as `Match` but will return the first match.
 +
 +### Pattern Matching
 +```go
 +// Using Match/GetMatch to find this images/sunset.jpg ?
 +.Resources.Match "images/sun*" ✅
 +.Resources.Match "**/sunset.jpg" ✅
 +.Resources.Match "images/*.jpg" ✅
 +.Resources.Match "**.jpg" ✅
 +.Resources.Match "*" 🚫
 +.Resources.Match "sunset.jpg" 🚫
 +.Resources.Match "*sunset.jpg" 🚫
 +
 +```
 +
 +## Page Resources Metadata
 +
++The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm).
 +
 +{{% note %}}
 +Resources of type `page` get `Title` etc. from their own front matter.
 +{{% /note %}}
 +
 +name
 +: Sets the value returned in `Name`.
 +
 +{{% warning %}}
 +The methods `Match` and `GetMatch` use `Name` to match the resources.
 +{{%/ warning %}}
 +
 +title
 +: Sets the value returned in `Title`
 +
 +params
 +: A map of custom key/values.
 +
 +
 +###  Resources metadata example
 +
 +{{< code-toggle copy="false">}}
 +title: Application
 +date : 2018-01-25
 +resources :
 +- src : "images/sunset.jpg"
 +  name : "header"
 +- src : "documents/photo_specs.pdf"
 +  title : "Photo Specifications"
 +  params:
 +    icon : "photo"
 +- src : "documents/guide.pdf"
 +  title : "Instruction Guide"
 +- src : "documents/checklist.pdf"
 +  title : "Document Checklist"
 +- src : "documents/payment.docx"
 +  title : "Proof of Payment"
 +- src : "**.pdf"
 +  name : "pdf-file-:counter"
 +  params :
 +    icon : "pdf"
 +- src : "**.docx"
 +  params :
 +    icon : "word"
 +{{</ code-toggle >}}
 +
 +From the example above:
 +
 +- `sunset.jpg` will receive a new `Name` and can now be found with `.GetMatch "header"`.
 +- `documents/photo_specs.pdf` will get the `photo` icon.
 +- `documents/checklist.pdf`, `documents/guide.pdf` and `documents/payment.docx` will get `Title` as set by `title`.
 +- Every `PDF` in the bundle except `documents/photo_specs.pdf` will get the `pdf` icon.
 +- All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`.
 +- Every docx in the bundle will receive the `word` icon.
 +
 +{{% warning %}}
 +The __order matters__ --- Only the **first set** values of the `title`, `name` and `params`-**keys** will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule.
 +{{%/ warning %}}
 +
 +### The `:counter` placeholder in `name` and `title`
 +
 +The `:counter` is a special placeholder recognized in `name` and `title` parameters `resources`.
 +
 +The counter starts at 1 the first time they are used in either `name` or `title`.
 +
 +For example, if a bundle has the resources `photo_specs.pdf`, `other_specs.pdf`, `guide.pdf` and `checklist.pdf`, and the front matter has specified the `resources` as:
 +
 +{{< code-toggle copy="false">}}
 +[[resources]]
 +  src = "*specs.pdf"
 +  title = "Specification #:counter"
 +[[resources]]
 +  src = "**.pdf"
 +  name = "pdf-file-:counter"
 +{{</ code-toggle >}}
 +
 +the `Name` and `Title` will be assigned to the resource files as follows:
 +
 +| Resource file     | `Name`            | `Title`               |
 +|-------------------|-------------------|-----------------------|
 +| checklist.pdf     | `"pdf-file-1.pdf` | `"checklist.pdf"`     |
 +| guide.pdf         | `"pdf-file-2.pdf` | `"guide.pdf"`         |
 +| other\_specs.pdf  | `"pdf-file-3.pdf` | `"Specification #1"` |
 +| photo\_specs.pdf  | `"pdf-file-4.pdf` | `"Specification #2"` |
index 599ce159cd971f816a3ac4572c80ddecb831f934,0000000000000000000000000000000000000000..b565ffafa8d1966d19c7d4ee67625137f71ab02c
mode 100644,000000..100644
--- /dev/null
@@@ -1,434 -1,0 +1,434 @@@
- 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.
 +---
 +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: 2019-11-07
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 35
 +weight: 35    #rem
 +categories: [content management]
 +keywords: [markdown,content,shortcodes]
 +draft: false
 +aliases: [/extras/shortcodes/]
 +testparam: "Hugo Rocks!"
 +toc: true
 +---
 +
 +## What a Shortcode is
 +
- [figureelement]: http://html5doctor.com/the-figure-figcaption-elements/ "An article from HTML5 doctor discussing the fig and figcaption elements."
++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 `<iframe>`'s) 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
 +
 +{{< youtube 2xkNJL4gJ9E >}}
 +
 +In your content files, a shortcode can be called by calling `{{%/* shortcodename parameters */%}}`. Shortcode parameters are space delimited, and parameters with internal spaces can be quoted.
 +
 +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:
 +
 +```
 +{{%/* mdshortcode */%}}Stuff to `process` in the *center*.{{%/* /mdshortcode */%}}
 +```
 +
 +```
 +{{</* 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 raw string parameters
 +
 +{{< new-in "0.64.1" >}}
 +
 +You can pass multiple lines as parameters to a shortcode by using raw string literals:
 +
 +```
 +{{</*  myshortcode `This is some <b>HTML</b>,
 +and a new line with a "quoted string".` */>}}
 +```
 +
 +### Shortcodes with Markdown
 +
 +In Hugo `0.55` we changed how the `%` delimiter works. Shortcodes using the `%` as the outer-most delimiter will now be fully rendered when sent to the content renderer (e.g. Blackfriday for Markdown), meaning they can be part of the generated table of contents, footnotes, etc.
 +
 +If you want the old behavior, you can put the following line in the start of your shortcode template:
 +
 +```
 +{{ $_hugo_config := `{ "version": 1 }` }}
 +```
 +
 +
 +### Shortcodes Without Markdown
 +
 +The `<` character indicates that the shortcode's inner content does *not* need further rendering. Often shortcodes without markdown include internal HTML:
 +
 +```
 +{{</* 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
 +: URL of the image to be displayed.
 +
 +link
 +: If the image needs to be hyperlinked, URL of the destination.
 +
 +target
 +: Optional `target` attribute for the URL if `link` parameter is set.
 +
 +rel
 +: Optional `rel` attribute for the URL if `link` parameter is set.
 +
 +alt
 +: Alternate text for the image if the image cannot be displayed.
 +
 +title
 +: Image title.
 +
 +caption
 +: Image caption.  Markdown within the value of `caption` will be rendered.
 +
 +class
 +: `class` attribute of the HTML `figure` tag.
 +
 +height
 +: `height` attribute of the image.
 +
 +width
 +: `width` attribute of the image.
 +
 +attr
 +: Image attribution text. Markdown within the value of `attr` will be rendered.
 +
 +attrlink
 +: If the attribution text needs to be hyperlinked, URL of the destination.
 +
 +#### Example `figure` Input
 +
 +{{< code file="figure-input-example.md" >}}
 +{{</* figure src="/media/spf13.jpg" title="Steve Francia" */>}}
 +{{< /code >}}
 +
 +#### Example `figure` Output
 +
 +{{< output file="figure-output-example.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]:
 +
 +```
 +https://gist.github.com/spf13/7896402
 +```
 +
 +We can embed the gist in our content via username and gist ID pulled from the URL:
 +
 +```
 +{{</* 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 file="gist-input.md" >}}
 +{{</* gist spf13 7896402 "img.html" */>}}
 +{{< /code >}}
 +
 +#### Example `gist` Output
 +
 +{{< output file="gist-output.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 file="content/tutorials/learn-html.md" >}}
 +{{</* highlight html */>}}
 +<section id="main">
 +  <div>
 +   <h1 id="title">{{ .Title }}</h1>
 +    {{ range .Pages }}
 +        {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</section>
 +{{</* /highlight */>}}
 +{{< /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" >}}
 +<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 .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:
 +
 +```
 +https://www.instagram.com/p/BWNjjyYFxVx/
 +```
 +
 +#### Example `instagram` Input
 +
 +{{< code file="instagram-input.md" >}}
 +{{</* instagram BWNjjyYFxVx */>}}
 +{{< /code >}}
 +
 +You also have the option to hide the caption:
 +
 +{{< code file="instagram-input-hide-caption.md" >}}
 +{{</* instagram BWNjjyYFxVx hidecaption */>}}
 +{{< /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" >}}
 +{{< 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 >}}
 +
 +
 +### `param`
 +
 +Gets a value from the current `Page's` params set in front matter, with a fall back to the site param value. It will log an `ERROR` if the param with the given key could not be found in either.
 +
 +```bash
 +{{</* param testparam */>}}
 +```
 +
 +Since `testparam` is a param defined in front matter of this page with the value `Hugo Rocks!`, the above will print:
 +
 +{{< param testparam >}}
 +
 +To access deeply nested params, use "dot syntax", e.g:
 +
 +```bash
 +{{</* param "my.nested.param" */>}}
 +```
 +
 +### `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
 +
 +```
 +[Neat]({{</* ref "blog/neat.md" */>}})
 +[Who]({{</* relref "about.md#who" */>}})
 +```
 +
 +#### Example `ref` and `relref` Output
 +
 +Assuming that standard Hugo pretty URLs are turned on.
 +
 +```
 +<a href="/blog/neat">Neat</a>
 +<a href="/about/#who:c28654c202e73453784cfd2c5ab356c0">Who</a>
 +```
 +
 +### `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 file="example-tweet-input.md" >}}
 +{{</* tweet 877500564405444608 */>}}
 +{{< /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" >}}
 +{{< 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 Input shortcode][].
 +
 +```
 +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 file="example-vimeo-input.md" >}}
 +{{</* vimeo 146022717 */>}}
 +{{< /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" >}}
 +{{< 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. You can also give the vimeo video a descriptive title with `title`. 
 +
 +```
 +{{</* vimeo id="146022717" class="my-vimeo-wrapper-class" title="My vimeo video" */>}}
 +```
 +{{% /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 file="example-youtube-input.md" >}}
 +{{</* youtube w7Ft2ymGmfc */>}}
 +{{< /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 and unnamed parameters, so you'll need to assign the yet unnamed video id to the parameter `id`:
 +
 +
 +{{< code file="example-youtube-input-with-autoplay.md" >}}
 +{{</* youtube id="w7Ft2ymGmfc" autoplay="true" */>}}
 +{{< /code >}}
 +
 +#### Example `youtube` Output
 +
 +Using the preceding `youtube` example, the following HTML will be added to your rendered website's markup:
 +
 +{{< 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 >}}
 +
 +## Privacy Config
 +
 +To learn how to configure your Hugo site to meet the new EU privacy regulation, see [Hugo and the GDPR][].
 +
 +## 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]: https://html5doctor.com/the-figure-figcaption-elements/ "An article from HTML5 doctor discussing the fig and figcaption elements."
 +[Hugo and the GDPR]: /about/hugo-and-gdpr/
 +[Instagram]: https://www.instagram.com/
 +[pagevariables]: /variables/page/
 +[partials]: /templates/partials/
 +[Pygments]: https://pygments.org/
 +[quickstart]: /getting-started/quick-start/
 +[sctemps]: /templates/shortcode-templates/
 +[scvars]: /variables/shortcodes/
 +[shortcode template documentation]: /templates/shortcode-templates/
 +[templatessection]: /templates/
 +[Vimeo]: https://vimeo.com/
 +[YouTube Videos]: https://www.youtube.com/
 +[YouTube Input shortcode]: #youtube
index c4afbe0b7885467a7b83e8a49b172943b3da8b49,0000000000000000000000000000000000000000..4389b1dca62043348881e273da1e57e2df5eab7b
mode 100644,000000..100644
--- /dev/null
@@@ -1,313 -1,0 +1,313 @@@
- If you would like to have what 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`.
 +---
 +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
 +keywords: [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., `public` 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 `posts` 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.
 +
 +### Permalinks Configuration Example
 +
 +{{< code-toggle file="config" copy="false" >}}
 +permalinks:
 +  posts: /:year/:month/:title/
 +{{< /code-toggle >}}
 +
 +Only the content under `posts/` will have the new URL structure. For example, the file `content/posts/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 `https://example.com/2017/02/sample-entry/`.
 +
 +To configure the `permalinks` option for pages in the "root" section, use **/** as the key:
 +
 +{{< code-toggle file="config" copy="false" >}}
 +permalinks:
 +  /: /:year/:month/:filename/
 +{{< /code-toggle >}}
 +
 +If the standard date-based permalink configuration does not meet your needs, you can also format URL segments using [Go time formatting directives](https://golang.org/pkg/time/#Time.Format). For example, a URL structure with two digit years and month and day digits without zero padding can be accomplished with:
 +
 +{{< code-toggle file="config" copy="false" >}}
 +permalinks:
 +  posts: /:06/:1/:2/:title/
 +{{< /code-toggle >}}
 +
 +You can also configure permalinks of taxonomies with the same syntax, by using the plural form of the taxonomy instead of the section. You will probably only want to use the configuration values `:slug` or `:title`.
 +
 +### 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
 +
 +`:sections`
 +: the content's sections hierarchy
 +
 +`: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)
 +
 +Additionally, a Go time format string prefixed with `:` may be used.
 +
 +## Aliases
 +
 +Aliases can be used to create redirects to your page from other URLs.
 +
 +Aliases comes in two forms:
 +
 +1. Starting with a `/` meaning they are relative to the `BaseURL`, e.g. `/posts/my-blogpost/`
 +2. They are relative to the `Page` they're defined in, e.g. `my-blogpost` or even something like `../blog/my-blogpost` (new in Hugo 0.55).
 +
 +### 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 field in TOML and YAML front matter, respectively.
 +
 +#### TOML Front Matter
 +
 +{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
 ++++
 +aliases = [
 +    "/posts/my-original-url/",
 +    "/2010/01/01/even-earlier-url.html"
 +]
 ++++
 +{{< /code >}}
 +
 +#### YAML Front Matter
 +
 +{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
 +---
 +aliases:
 +    - /posts/my-original-url/
 +    - /2010/01/01/even-earlier-url.html
 +---
 +{{< /code >}}
 +
 +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-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`:
 +
 +```
 +---
 +aliases:
 +    - /es/posts/my-original-post/
 +---
 +```
 +
 +From Hugo 0.55 you can also have page-relative aliases, so ` /es/posts/my-original-post/` can be simplified to the more portable `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:
 +
 +```
 +---
 +title: My New post
 +aliases: [/posts/my-old-url/]
 +---
 +```
 +
 +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:
 +
 +```
 +<!DOCTYPE html>
 +<html>
 +  <head>
 +    <title>https://example.com/posts/my-intended-url</title>
 +    <link rel="canonical" href="https://example.com/posts/my-intended-url"/>
 +    <meta name="robots" content="noindex">
 +    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 +    <meta http-equiv="refresh" content="0; url=https://example.com/posts/my-intended-url"/>
 +  </head>
 +</html>
 +```
 +
 +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 that 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:
 +
 +```
 +content/posts/_index.md
 +=> example.com/posts/index.html
 +content/posts/post-1.md
 +=> example.com/posts/post-1/
 +```
 +
 +## Ugly URLs
 +
++If you would like to have what 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 set the `HUGO_UGLYURLS` environment variable to `true` when running `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.
 +
 +```
 +.
 +└── content
 +    └── about
 +    |   └── _index.md  // <- https://example.com/about/
 +    ├── posts
 +    |   ├── firstpost.md   // <- https://example.com/posts/firstpost/
 +    |   ├── happy
 +    |   |   └── ness.md  // <- https://example.com/posts/happy/ness/
 +    |   └── secondpost.md  // <- https://example.com/posts/secondpost/
 +    └── quote
 +        ├── first.md       // <- https://example.com/quote/first/
 +        └── second.md      // <- https://example.com/quote/second/
 +```
 +
 +Here's the same organization run with `hugo --uglyURLs`:
 +
 +```
 +.
 +└── content
 +    └── about
 +    |   └── _index.md  // <- https://example.com/about.html
 +    ├── posts
 +    |   ├── firstpost.md   // <- https://example.com/posts/firstpost.html
 +    |   ├── happy
 +    |   |   └── ness.md    // <- https://example.com/posts/happy/ness.html
 +    |   └── secondpost.md  // <- https://example.com/posts/secondpost.html
 +    └── quote
 +        ├── first.md       // <- https://example.com/quote/first.html
 +        └── second.md      // <- https://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`.
 +
 +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 `https://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
 +```
 +
 +## Set URL in 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].
 +
 +From Hugo 0.55, you can use URLs relative to the current site context (the language), which makes it simpler to maintain. For a Japanese translation, both of the following examples would get the same URL:
 +
 +```markdown
 +---
 +title: "Custom URL!"
 +url: "/jp/custom/foo"
 +---
 +```
 +
 +```markdown
 +---
 +title: "Custom URL!"
 +url: "custom/foo"
 +---
 +```
 +
 +
 +## 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 `/posts/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 9371dbdf0e9b4b89e4e15da3216dc7239f7a5408,0000000000000000000000000000000000000000..77cf283faaf00e446731e63cfc381ef643b67d3f
mode 100644,000000..100644
--- /dev/null
@@@ -1,20 -1,0 +1,21 @@@
- Hugo is the **world's fastest static website engine.** It's written in Go (aka Golang) and developed by [bep](https://github.com/bep), [spf13](https://github.com/spf13) and [friends](https://github.com/gohugoio/hugo/graphs/contributors). 
 +---
 +title: Hugo Documentation
 +linktitle: Hugo
 +description: Hugo is the world's fastest static website engine. It's written in Go (aka Golang) and developed by bep, spf13 and friends.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +menu:
 +  main:
 +    parent: "section name"
 +    weight: 01
 +weight: 01    #rem
 +draft: false
 +slug:
 +aliases: []
 +toc: false
 +layout: documentation-home
 +---
++
++Hugo is the **world's fastest static website engine.** It's written in Go (aka Golang) and developed by [bep](https://github.com/bep), [spf13](https://github.com/spf13) and [friends](https://github.com/gohugoio/hugo/graphs/contributors).
 +
 +Below you will find some of the most common and helpful pages from our documentation.
index 743c8542b944f0b52605a72f5e66c8527f7f8433,0000000000000000000000000000000000000000..653a482fadb011c3c705279fb80809efdea6932a
mode 100644,000000..100644
--- /dev/null
@@@ -1,47 -1,0 +1,45 @@@
- By default all matches will be included. The number of matches can be limitted with an optional third parameter.
 +---
 +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"
 +keywords: [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 limited 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 Go'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 Go'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 8153cc07cec0adb48da4376514280d5359012571,0000000000000000000000000000000000000000..73569ece50c2d02a4ad70b5f3bde46e40d7bba58
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- value of the variable. 
 +---
 +title: getenv
 +description: Returns the value of an environment variable.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: []
 +signature: ["getenv VARIABLE"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: []
 +---
 +
 +Takes a string containing the name of the variable as input. Returns
 +an empty string if the variable is not set, otherwise returns the
++value of the variable.
 +
 +```
 +{{ getenv "HOME" }}
 +```
 +
 +{{% note %}}
 +In Unix-like environments, the variable must also be exported in order to be seen by `hugo`.
 +{{% /note %}}
index a1a2d6d554c5c191a1e931a7005773bd3ac5378b,0000000000000000000000000000000000000000..00ab18c74d7f9a8a500ce0200462fb3642885b24
mode 100644,000000..100644
--- /dev/null
@@@ -1,26 -1,0 +1,26 @@@
- {{ htmlEscape "Hugo & Caddy > Wordpress & Apache" }} → "Hugo &amp; Caddy &gt; Wordpress &amp; Apache"
 +---
 +title: htmlEscape
 +linktitle:
 +description: Returns the given string with the reserved HTML codes escaped.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: [strings, html]
 +signature: ["htmlEscape INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [htmlUnescape]
 +deprecated: false
 +aliases: []
 +---
 +
 +In the result `&` becomes `&amp;` and so on. It escapes only: `<`, `>`, `&`, `'` and `"`.
 +
 +```
++{{ htmlEscape "Hugo & Caddy > WordPress & Apache" }} → "Hugo &amp; Caddy &gt; WordPress &amp; Apache"
 +```
index d0ef7540cd6781d93c10ae3dabb93565b78da3d1,0000000000000000000000000000000000000000..71db952497a8f5fd421af0a60194e715c866e2f3
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- `htmlUnescape` returns the given string with HTML escape codes un-escaped. 
 +---
 +title: htmlUnescape
 +linktitle: htmlUnescape
 +description: Returns the given string with HTML escape codes un-escaped.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: []
 +signature: ["htmlUnescape INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [htmlEscape]
 +deprecated: false
 +aliases: []
 +---
 +
- {{ htmlUnescape "Hugo &amp; Caddy &gt; Wordpress &amp; Apache" }} → "Hugo & Caddy > Wordpress & Apache"
++`htmlUnescape` returns the given string with HTML escape codes un-escaped.
 +
 +Remember to pass the output of this to `safeHTML` if fully un-escaped characters are desired. Otherwise, the output will be escaped again as normal.
 +
 +```
++{{ htmlUnescape "Hugo &amp; Caddy &gt; WordPress &amp; Apache" }} → "Hugo & Caddy > WordPress & Apache"
 +```
index 26069633d4da6dc1da74af790abcf5fc1ccb80e9,0000000000000000000000000000000000000000..099a5fa96c34b81dd5212a6e275cd044833d939e
mode 100644,000000..100644
--- /dev/null
@@@ -1,50 -1,0 +1,50 @@@
-   
 +---
 +title: hugo
 +linktitle: hugo
 +description: The `hugo` function provides easy access to Hugo-related data.
 +godocref:
 +date: 2019-01-31
 +publishdate: 2019-01-31
 +lastmod: 2019-01-31
 +keywords: []
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +toc:
 +signature: ["hugo"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +---
-   
++
 +`hugo` returns an instance that contains the following functions:
 +
 +hugo.Generator
 +: `<meta>` tag for the version of Hugo that generated the site. `hugo.Generator` outputs a *complete* HTML tag; e.g. `<meta name="generator" content="Hugo 0.63.2" />`
 +
 +hugo.Version
 +: the current version of the Hugo binary you are using e.g. `0.63.2`
 +
++
 +`hugo` returns an instance that contains the following functions:
 +
 +hugo.Environment
 +: the current running environment as defined through the `--environment` cli tag
 +
 +hugo.CommitHash
 +: the git commit hash of the current Hugo binary e.g. `0e8bed9ccffba0df554728b46c5bbf6d78ae5247`
 +
 +hugo.BuildDate
 +: the compile date of the current Hugo binary formatted with RFC 3339 e.g. `2002-10-02T10:00:00-05:00`
 +
 +hugo.IsProduction
 +: returns true if `hugo.Environment` is set to the production environment
 +
 +{{% note "Use the Hugo Generator Tag" %}}
 +We highly recommend using `hugo.Generator` in your website's `<head>`. `hugo.Generator` is included by default in all themes hosted on [themes.gohugo.io](https://themes.gohugo.io). The generator tag allows the Hugo team to track the usage and popularity of Hugo.
 +{{% /note %}}
 +
index 94b9b41913b85f5f56ab939375eb5f63b57658cb,0000000000000000000000000000000000000000..88dec29dcc3a1cd3417b0f4bc3d85ee61a0c67f9
mode 100644,000000..100644
--- /dev/null
@@@ -1,96 -1,0 +1,93 @@@
 +---
 +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"
 +keywords: []
 +signature: ["index COLLECTION INDEXES", "index COLLECTION KEYS"]
 +workson: []
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +aliases: [/functions/index/]
 +needsexample: true
 +---
 +
 +The `index` functions returns the result of indexing its first argument by the following arguments. Each indexed item must be a map or a slice, e.g.:
 +
 +```go-text-template
 +{{ $slice := slice "a" "b" "c" }}
 +{{ index $slice 1 }} => b
 +{{ $map := dict "a" 100 "b" 200 }}
 +{{ index $map "b" }} => 200
 +```
 +
 +The function takes multiple indices as arguments, and this can be used to get nested values, e.g.:
 +
 +```go-text-template
 +{{ $map := dict "a" 100 "b" 200 "c" (slice 10 20 30) }}
 +{{ index $map "c" 1 }} => 20
 +{{ $map := dict "a" 100 "b" 200 "c" (dict "d" 10 "e" 20) }}
 +{{ index $map "c" "e" }} => 20
 +```
 +
 +## 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`:
 +
 +```
 +website = "https://www.oslo.kommune.no"
 +pop_city = 658390
 +pop_metro = 1717900
 +```
 +
 +The example we will use will be an article on Oslo, whose front matter should be set to exactly the same name as the corresponding file name in `data/locations/`:
 +
 +```
 +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:
 +
 +```
 +{{ index .Site.Data.locations .Params.location }}
 +=> 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 f992b980a102f4cfd875910881d60b29e40f3dc5,0000000000000000000000000000000000000000..bf65a8a6d5e0f3e55257db46e091605236688a40
mode 100644,000000..100644
--- /dev/null
@@@ -1,29 -1,0 +1,28 @@@
 +---
 +title: last
 +linktitle: last
 +description: "slices an array to only the last <em>N</em>th elements."
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +keywords: []
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +toc:
 +signature: ["last INDEX COLLECTION"]
 +workson: [lists, taxonomies, terms, groups]
 +hugoversion:
 +relatedfuncs: []
 +deprecated: false
 +draft: false
 +aliases: []
 +---
 +
 +```
 +{{ range last 10 .Pages }}
 +    {{ .Render "summary" }}
 +{{ end }}
 +```
index db5442166f48610fdf755b7a540c0cb6b9b7359c,0000000000000000000000000000000000000000..dfe76aa030662ae7b643f4f690da958fabea8386
mode 100644,000000..100644
--- /dev/null
@@@ -1,33 -1,0 +1,31 @@@
 +---
 +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"
 +keywords: []
 +signature: ["md5 INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [sha]
 +deprecated: false
 +aliases: []
 +---
 +
 +```
 +{{ 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 89e7880cd6b9e47c871c40901c2b07b6000d60ec,0000000000000000000000000000000000000000..88d1a759a0433d73835f9c9c9c45a2428022113c
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,28 @@@
- relatedfuncs: [jsonify,]
 +---
 +title: plainify
 +linktitle: plainify
 +description: Strips any HTML and returns the plain text version of the provided string.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-04-30
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: [strings]
 +signature: ["plainify INPUT"]
 +workson: []
 +hugoversion:
++relatedfuncs: [jsonify]
 +deprecated: false
 +aliases: []
 +---
 +
 +```
 +{{ "<b>BatMan</b>" | plainify }} → "BatMan"
 +```
 +
 +See also the `.PlainWords`, `.Plain`, and `.RawContent` [page variables][pagevars].
 +
 +[pagevars]: /variables/page/
index aa1536544ca6201f8d82c21a51183727b8e1487c,0000000000000000000000000000000000000000..54e0d441ddaf196b39bad8d3cecac71edc904bb8
mode 100644,000000..100644
--- /dev/null
@@@ -1,51 -1,0 +1,51 @@@
- description: Given a string, prepends the relative URL according to a page's position in the project directory structure.
 +---
 +title: relURL
++description: Creates a baseURL-relative URL.
 +godocref:
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: [urls]
 +signature: ["relURL INPUT"]
 +workson: []
 +hugoversion:
 +relatedfuncs: [absURL]
 +deprecated: false
 +aliases: []
 +---
 +
 +Both `absURL` and `relURL` consider the configured value of `baseURL` in your site's [`config` file][configuration]. Given a `baseURL` set to `https://example.com/hugo/`:
 +
 +```
 +{{ "mystyle.css" | absURL }} → "https://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 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 8bef589c525299e492ee89473412d31890f5b438,0000000000000000000000000000000000000000..678a4c8546cd60d200647df9f8adc32b03eee2ca
mode 100644,000000..100644
--- /dev/null
@@@ -1,51 -1,0 +1,51 @@@
- [GNU's seq]: http://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html#seq-invocation
 +---
 +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"
 +keywords: []
 +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:
 +
 +```
 +{{ 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]: https://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html#seq-invocation
index 3c8c9615609a0b0081c83e87eacd880750b19a73,0000000000000000000000000000000000000000..08ed37893c5b14ac6e8091b6ee2d2fefb835e851
mode 100644,000000..100644
--- /dev/null
@@@ -1,37 -1,0 +1,37 @@@
- A template file is any file living below the `layouts` directories of either the project or any of its theme components incudling partials and shortcodes.
 +---
 +title: templates.Exists
 +linktitle: ""
 +description: "Checks whether a template file exists under the given path relative to the `layouts` directory."
 +godocref: ""
 +date: 2018-11-01
 +publishdate: 2018-11-01
 +lastmod: 2018-11-01
 +categories: [functions]
 +tags: []
 +menu:
 +  docs:
 +    parent: "functions"
 +ns: ""
 +keywords: ["templates", "template", "layouts"]
 +signature: ["templates.Exists PATH"]
 +workson: []
 +hugoversion: "0.46"
 +aliases: []
 +relatedfuncs: []
 +toc: false
 +deprecated: false
 +---
 +
++A template file is any file living below the `layouts` directories of either the project or any of its theme components including partials and shortcodes.
 +
 +The function is particularly handy with dynamic path. The following example ensures the build will not break on a `.Type` missing its dedicated `header` partial.
 +
 +```go-html-template
 +{{ $partialPath := printf "headers/%s.html" .Type }}
 +{{ if templates.Exists ( printf "partials/%s" $partialPath ) }}
 +  {{ partial $partialPath . }}
 +{{ else }}
 +  {{ partial "headers/default.html" . }}
 +{{ end }}
 +
 +```
index 306d32649ea5a039b1b7320a48eef1abe58a374d,0000000000000000000000000000000000000000..3be2d4368148ab977b51c1c5dcf8021b8e0d9fa6
mode 100644,000000..100644
--- /dev/null
@@@ -1,48 -1,0 +1,48 @@@
- 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. 
 +---
 +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"
 +keywords: [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 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 a373475f67066f36951065427fabc4abd4c17f4c,0000000000000000000000000000000000000000..49a120e3d3cb763c1581c5b0fc2551587616479b
mode 100644,000000..100644
--- /dev/null
@@@ -1,38 -1,0 +1,36 @@@
 +---
 +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
 +keywords: [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 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 6d0ade0f8f939d790511bfa6f941b27097a37696,0000000000000000000000000000000000000000..76c48d4dbbbf4166b9ecfd38bfcde577085be508
mode 100644,000000..100644
--- /dev/null
@@@ -1,32 -1,0 +1,32 @@@
- {{ $url := urls.Parse "http://www.gohugo.io" }}               
 +---
 +title: urls.Parse
 +description: Parse parses a given url, which may be relative or absolute, into a URL structure.
 +godocref: https://godoc.org/net/url#URL
 +date: 2017-09-25
 +publishdate: 2017-09-25
 +lastmod: 2017-09-25
 +categories: [functions]
 +menu:
 +  docs:
 +    parent: "functions"
 +keywords: [urls]
 +signature: ["urls.Parse URL"]
 +workson: []
 +hugoversion:
 +deprecated: false
 +aliases: []
 +---
 +
 +`urls.Parse` takes a url as input
 +
 +
 +```
++{{ $url := urls.Parse "http://www.gohugo.io" }}
 +```
 +
 +and returns a [URL](https://godoc.org/net/url#URL) structure. The struct fields are accessed via the `.` notation:
 +
 +```
 +{{ $url.Scheme }} → "http"
 +{{ $url.Host }} → "www.gohugo.io"
 +```
index 4e342a6e60bec030ed4ba2ccde5c708e79bbc240,0000000000000000000000000000000000000000..573fdfdbfa7284780630b795b68e6e49e449a040
mode 100644,000000..100644
--- /dev/null
@@@ -1,29 -1,0 +1,33 @@@
- keywords: [books,tutorials,learning,usage]
 +---
 +title: External Learning Resources
 +linktitle: External Learning Resources
 +description: A list of tutorials and books on Hugo.
 +date: 2019-10-20
 +publishdate: 2019-10-20
 +lastmod: 2019-10-20
- Mike Dane expains the various features of via dedicated tutorials on [Youtube](https://www.youtube.com/watch?list=PLLAZ4kZ9dFpOnyRlyS-liKL5ReHDcj4G3&v=qtIqKaDlqXo).
++keywords: [books, tutorials, learning, usage]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 70
 +weight: 70
 +sections_weight: 70
 +draft: false
 +toc: false
 +---
 +
 +## Books
++
 +### Hugo In Action
++
 +[![Hugo In Action](hia.jpg)](https://www.manning.com/books/hugo-in-action)
 +
 +Hugo in Action is a step-by-step guide to using Hugo to create static websites. Working with a complete example website and source code samples, you’ll learn how to build and host a low-maintenance, high-performance site that will wow your users and stay stable without relying on a third-party server.
 +
 +[Hugo In Action Home Page](https://www.manning.com/books/hugo-in-action)
 +
 +## Video tutorials
++
 +### Video Playlist by Mike Dane
++
++Mike Dane explains the various features of Hugo via dedicated tutorials on [YouTube](https://www.youtube.com/watch?list=PLLAZ4kZ9dFpOnyRlyS-liKL5ReHDcj4G3&v=qtIqKaDlqXo).
index 1b763619c50bf2b528919e1abed43ea138acb0c8,0000000000000000000000000000000000000000..b9c022a73aeca354104331432923ae2d06bde8d1
mode 100644,000000..100644
--- /dev/null
@@@ -1,533 -1,0 +1,537 @@@
 +---
 +title: Install Hugo
 +linktitle: Install Hugo
 +description: Install Hugo on macOS, Windows, Linux, OpenBSD, FreeBSD, and on any machine where the Go compiler tool chain can run.
 +date: 2016-11-01
 +publishdate: 2016-11-01
 +lastmod: 2018-01-02
 +categories: [getting started,fundamentals]
 +authors: ["Michael Henderson"]
 +keywords: [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:
 +
 +* macOS (Darwin) for x64, i386, and ARM architectures
 +* Windows
 +* Linux
 +* OpenBSD
 +* FreeBSD
 +
 +Hugo may also be compiled from source wherever the Go toolchain 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.
 +
++### Docker
++
++We currently do not official Hugo images for Docker, but we do recommend these up to date distributions: https://hub.docker.com/r/klakegg/hugo/
++
 +### Homebrew (macOS)
 +
 +If you are on macOS and using [Homebrew][brew], you can install Hugo with the following one-liner:
 +
 +{{< code file="install-with-homebrew.sh" >}}
 +brew install hugo
 +{{< /code >}}
 +
 +For more detailed explanations, read the installation guides that follow for installing on macOS and Windows.
 +
 +### Homebrew (Linux)
 +
 +If you are using [Homebrew][linuxbrew] on Linux, you can install Hugo with the following one-liner:
 +
 +{{< code file="install-with-linuxbrew.sh" >}}
 +brew install hugo
 +{{< /code >}}
 +
 +Installation guides for Homebrew on Linux are available on their [website][linuxbrew].
 +
 +### 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 file="install-with-chocolatey.ps1" >}}
 +choco install hugo -confirm
 +{{< /code >}}
 +
 +Or if you need the “extended” Sass/SCSS version:
 +
 +{{< code file="install-extended-with-chocolatey.ps1" >}}
 +choco install hugo-extended -confirm
 +{{< /code >}}
 +
 +### Scoop (Windows)
 +
 +If you are on a Windows machine and use [Scoop][] for package management, you can install Hugo with the following one-liner:
 +
 +```bash
 +scoop install hugo
 +```
 +
 +Or install the extended version with:
 +
 +```bash
 +scoop install hugo-extended
 +```
 +
 +### Source
 +
 +#### Prerequisite Tools
 +
 +* [Git][installgit]
 +* [Go (at least Go 1.11)](https://golang.org/dl/)
 +
 +#### Fetch from GitHub
 +
 +Since Hugo 0.48, Hugo uses the Go Modules support built into Go 1.11 to build. The easiest way to get started is to clone Hugo in a directory outside of the GOPATH, as in the following example:
 +
 +{{< code file="from-gh.sh" >}}
 +mkdir $HOME/src
 +cd $HOME/src
 +git clone https://github.com/gohugoio/hugo.git
 +cd hugo
 +go install --tags extended
 +{{< /code >}}
 +
 +Remove `--tags extended` if you do not want/need Sass/SCSS support.
 +
 +{{% note %}}
 +If you are a Windows user, substitute the `$HOME` environment variable above with `%USERPROFILE%`.
 +{{% /note %}}
 +
 +## 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
 +
 +{{< youtube WvhCGlLcrF8 >}}
 +
 +#### Step 1: Install `brew` if you haven't already
 +
 +Go to the `brew` website, <https://brew.sh/>, and follow the directions there. The most important step is the installation from the command line:
 +
 +{{< code file="install-brew.sh" >}}
 +ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 +{{< /code >}}
 +
 +#### Step 2: Run the `brew` Command to Install `hugo`
 +
 +Installing Hugo using `brew` is as easy as the following:
 +
 +{{< code file="install-brew.sh" >}}
 +brew install hugo
 +{{< /code >}}
 +
 +If Homebrew is working properly, you should see something similar to the following:
 +
 +```
 +==> 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:
 +
 +```
 +$ # 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:
 +
 +```
 +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
 +
 +```
 +# 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.
 +
 +```
 +# 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:
 +
 +```
 +nano ~/.bash_profile
 +```
 +
 +Add a line to update your `PATH` variable:
 +
 +```
 +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:
 +
 +```
 +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:
 +
 +```
 +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:
 +
 +```
 +mkdir -p src/github.com/gohugoio
 +ln -sf $(pwd) src/github.com/gohugoio/hugo
 +
 +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:
 +
 +```
 +go build -o hugo main.go
 +```
 +
 +Then place the `hugo` executable somewhere in your `$PATH`. You're now ready to start using Hugo.
 +
 +## Windows
 +
 +The following aims to be a complete guide to installing Hugo on your Windows PC.
 +
 +{{< youtube G7umPCU-8xc >}}
 +
 +### 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. 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: The hugo executable (`hugo.exe`), `LICENSE`, and `README.md`.
 +
 +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:
 +
 +```
 +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.
 +
 +```
 +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.
 +
 +```
 +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:
 +
 +```
 +C:\Hugo\Sites> cd example.com
 +C:\Hugo\Sites\example.com> dir
 +Directory of C:\hugo\sites\example.com
 +
 +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 >}}
 +
 +## Linux
 +
 +### Snap Package
 +
 +In any of the [Linux distributions that support snaps][snaps], you may install the "extended" Sass/SCSS version with this command:
 +
 +    snap install hugo --channel=extended
 +
 +To install the non-extended version without Sass/SCSS support:
 +
 +    snap install hugo
 +
 +To switch between the two, use either `snap refresh hugo --channel=extended` or `snap refresh hugo --channel=stable`.
 +
 +{{% note %}}
 +Hugo installed via 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 %}}
 +
 +### Debian and Ubuntu
 +
 +[@anthonyfok](https://github.com/anthonyfok) and friends in the [Debian Go Packaging Team](https://go-team.pages.debian.net/) maintains an official hugo [Debian package](https://packages.debian.org/hugo) which is shared with [Ubuntu](https://packages.ubuntu.com/hugo) and is installable via `apt-get`:
 +
 +    sudo apt-get install hugo
 +
 +What this installs depends on your Debian/Ubuntu version. On Ubuntu bionic (18.04), this installs the non-extended version without Sass/SCSS support. On Ubuntu disco (19.04), this installs the extended version with Sass/SCSS support.
 +
 +This option is not recommended because the Hugo in Linux package managers for Debian and Ubuntu is usually a few versions behind as described [here](https://github.com/gcushen/hugo-academic/issues/703)
 +
 +### Arch Linux
 +
 +You can also install Hugo from the Arch Linux [community](https://www.archlinux.org/packages/community/x86_64/hugo/) repository. Applies also to derivatives such as Manjaro.
 +
 +```
 +sudo pacman -Syu hugo
 +```
 +
 +### Fedora, Red Hat and CentOS
 +
 +Fedora maintains an [official package for Hugo](https://apps.fedoraproject.org/packages/hugo) which may be installed with:
 +
 +    sudo dnf install hugo
 +
 +For the latest version, the Hugo package maintained by [@daftaupe](https://github.com/daftaupe) at Fedora Copr is recommended:
 +
 +* <https://copr.fedorainfracloud.org/coprs/daftaupe/hugo/>
 +
 +See the [related discussion in the Hugo forums][redhatforum].
 +
 +### Solus
 +
 +Solus includes Hugo in its package repository, it may be installed with:
 +
 +```
 +sudo eopkg install hugo
 +```
 +
 +## OpenBSD
 +
 +OpenBSD provides a package for Hugo via `pkg_add`:
 +
 +    doas pkg_add hugo
 +
 +
 +## Upgrade Hugo
 +
 +Upgrading Hugo is as easy as downloading and replacing the executable you’ve placed in your `PATH` or run `brew upgrade hugo` if using Homebrew.
 +
 +## 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
 +[mage]: https://github.com/magefile/mage
 +[dep]: https://github.com/golang/dep
 +[highlight shortcode]: /content-management/shortcodes/#highlight
 +[installgit]: https://git-scm.com/
 +[installgo]: https://golang.org/dl/
 +[linuxbrew]: https://docs.brew.sh/Homebrew-on-Linux
 +[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
 +[Scoop]: https://scoop.sh/
 +[snaps]: https://snapcraft.io/docs/installing-snapd
 +[windowsarch]: https://esupport.trendmicro.com/en-us/home/pages/technical-support/1038680.aspx
 +[Windows Environment Variables Editor]: http://eveditor.com/
index 8f584752298c5c7bb7ac54b9649c7aba9283ed5a,0000000000000000000000000000000000000000..525ff8920bfd51df5f7441c2581ba32a366f22ce
mode 100644,000000..100644
--- /dev/null
@@@ -1,176 -1,0 +1,176 @@@
- First, download the theme from Github and add it to your site's `theme` directory:
 +---
 +title: Quick Start
 +linktitle: Quick Start
 +description: Create a Hugo site using the beautiful Ananke theme.
 +date: 2013-07-01
 +publishdate: 2013-07-01
 +categories: [getting started]
 +keywords: [quick start,usage]
 +authors: [Shekhar Gulati, Ryan Watters]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/quickstart/,/overview/quickstart/]
 +toc: true
 +---
 +
 +{{% note %}}
 +This quick start uses `macOS` in the examples. For instructions about how to install Hugo on other operating systems, see [install](/getting-started/installing).
 +
 +It is recommended to have [Git installed](https://git-scm.com/downloads) to run this tutorial.
 +
 +For other approaches learning Hugo like book or a video tutorial refer to the [external learning resources](/getting-started/external-learning-resources/) page.
 +{{% /note %}}
 +
 +## Step 1: Install Hugo
 +
 +{{% note %}}
 +`Homebrew`, a package manager for `macOS`,  can be installed from [brew.sh](https://brew.sh/). See [install](/getting-started/installing) if you are running Windows etc.
 +{{% /note %}}
 +
 +```bash
 +brew install hugo
 +```
 +
 +To verify your new install:
 +
 +```bash
 +hugo version
 +```
 +
 +{{< asciicast ItACREbFgvJ0HjnSNeTknxWy9 >}}
 +
 +## Step 2: Create a New Site
 +
 +```bash
 +hugo new site quickstart
 +```
 +
 +The above will create a new Hugo site in a folder named `quickstart`.
 +
 +{{< asciicast 3mf1JGaN0AX0Z7j5kLGl3hSh8 >}}
 +
 +## Step 3: Add a Theme
 +
 +See [themes.gohugo.io](https://themes.gohugo.io/) for a list of themes to consider. This quickstart uses the beautiful [Ananke theme](https://themes.gohugo.io/gohugo-theme-ananke/).
 +
- You can manually create content files (for example as `content/<CATEGORY>/<FILE>.<FORMAT>`) and provide metadata in them, however you can use the `new` command to do few things for you (like add title and date):
++First, download the theme from GitHub and add it to your site's `theme` directory:
 +
 +```bash
 +cd quickstart
 +git init
 +git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
 +```
 +
 +*Note for non-git users:*
 +   - If you do not have git installed, you can download the archive of the latest
 +     version of this theme from:
 +       https://github.com/budparr/gohugo-theme-ananke/archive/master.zip
 +   - Extract that .zip file to get a "gohugo-theme-ananke-master" directory.
 +   - Rename that directory to "ananke", and move it into the "themes/" directory.
 +
 +Then, add the theme to the site configuration:
 +
 +```bash
 +echo 'theme = "ananke"' >> config.toml
 +```
 +
 +{{< asciicast 7naKerRYUGVPj8kiDmdh5k5h9 >}}
 +
 +## Step 4: Add Some Content
 +
++You can manually create content files (for example as `content/<CATEGORY>/<FILE>.<FORMAT>`) and provide metadata in them, however you can use the `new` command to do a few things for you (like add title and date):
 +
 +```
 +hugo new posts/my-first-post.md
 +```
 +
 +{{< asciicast eUojYCfRTZvkEiqc52fUsJRBR >}}
 +
 +Edit the newly created content file if you want, it will start with something like this:
 +
 +```markdown
 +---
 +title: "My First Post"
 +date: 2019-03-26T08:47:11+01:00
 +draft: true
 +---
 +
 +```
 +
 +## Step 5: Start the Hugo server
 +
 +Now, start the Hugo server with [drafts](/getting-started/usage/#draft-future-and-expired-content) enabled:
 +
 +{{< asciicast BvJBsF6egk9c163bMsObhuNXj >}}
 +
 +```
 +▶ hugo server -D
 +
 +                   | EN
 ++------------------+----+
 +  Pages            | 10
 +  Paginator pages  |  0
 +  Non-page files   |  0
 +  Static files     |  3
 +  Processed images |  0
 +  Aliases          |  1
 +  Sitemaps         |  1
 +  Cleaned          |  0
 +
 +Total in 11 ms
 +Watching for changes in /Users/bep/quickstart/{content,data,layouts,static,themes}
 +Watching for config changes in /Users/bep/quickstart/config.toml
 +Environment: "development"
 +Serving pages from memory
 +Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
 +Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
 +Press Ctrl+C to stop
 +```
 +
 +**Navigate to your new site at [http://localhost:1313/](http://localhost:1313/).**
 +
 +Feel free to edit or add new content and simply refresh in browser to see changes quickly (You might need to force refresh in webbrowser, something like Ctrl-R usually works).
 +
 +## Step 6: Customize the Theme
 +
 +Your new site already looks great, but you will want to tweak it a little before you release it to the public.
 +
 +### Site Configuration
 +
 +Open up `config.toml` in a text editor:
 +
 +```
 +baseURL = "https://example.org/"
 +languageCode = "en-us"
 +title = "My New Hugo Site"
 +theme = "ananke"
 +```
 +
 +Replace the `title` above with something more personal. Also, if you already have a domain ready, set the `baseURL`. Note that this value is not needed when running the local development server.
 +
 +{{% note %}}
 +**Tip:** Make the changes to the site configuration or any other file in your site while the Hugo server is running, and you will see the changes in the browser right away, though you may need to [clear your cache](https://kb.iu.edu/d/ahic).
 +{{% /note %}}
 +
 +For theme specific configuration options, see the [theme site](https://github.com/budparr/gohugo-theme-ananke).
 +
 +**For further theme customization, see [Customize a Theme](/themes/customizing/).**
 +
 +### Step 7: Build static pages
 +
 +It is simple. Just call:
 +
 +```
 +hugo -D
 +```
 +
 +Output will be in `./public/` directory by default (`-d`/`--destination` flag to change it, or set `publishdir` in the config file).
 +
 +{{% note %}}
 +Drafts do not get deployed; once you finish a post, update the header of the post to say `draft: false`. More info [here](/getting-started/usage/#draft-future-and-expired-content).
 +{{% /note %}}
index e722a51ec31002495b3ebb719b84c1a338a34a2f,0000000000000000000000000000000000000000..ed215eea572151113a6b2ffa10b41c37f20fb5a2
mode 100644,000000..100644
--- /dev/null
@@@ -1,157 -1,0 +1,157 @@@
- To make logging in easier, add a definition for your web host to the file  `~/.ssh/config` with the following command, replacing `HOST` with the IP address or hostname of your web host, and `USER` with the username you use to log in to your web host when transfering files:
 +---
 +title: Deployment with Rsync
 +linktitle: Deployment with Rsync
 +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: 2019-10-03
 +categories: [hosting and deployment]
 +keywords: [rsync,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
 +
 +* A web host running a web server. This could be a shared hosting environment or a VPS.
 +* 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:
 +
 +```
 +hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/
 +```
 +
 +As you will see, we'll put this command in a shell script file, which makes building and deployment as easy as executing `./deploy`.
 +
 +## Copy Your SSH Key to your Host
 +
 +To make logging in to your server more secure and less interactive, you can upload your SSH key. If you have already installed your SSH key to your server, you can move on to the next section.
 +
 +First, install the ssh client. On Debian/Ubuntu/derivates, use the following command:
 +
 +{{< code file="install-openssh.sh" >}}
 +sudo apt-get install openssh-client
 +{{< /code >}}
 +
 +Then generate your ssh key. First, create the `.ssh` directory in your home directory if it doesn't exist:
 +
 +```
 +~$ cd && mkdir .ssh & cd .ssh
 +```
 +
 +Next, execute this command to generate a new keypair called `rsa_id`:
 +
 +```
 +~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id
 +```
 +
 +You'll be prompted for a passphrase, which is an extra layer of protection. Enter the passphrase you'd like to use, and then enter it again when prompted, or leave it blank if you don't want to have a passphrase. Not using a passphrase will let you transfer files non-interactively, as you won't be prompted for a password when you log in, but it is slightly less secure.
 +
++To make logging in easier, add a definition for your web host to the file  `~/.ssh/config` with the following command, replacing `HOST` with the IP address or hostname of your web host, and `USER` with the username you use to log in to your web host when transferring files:
 +
 +```
 +~/.ssh/$ cat >> config <<EOF
 +Host HOST
 +     Hostname HOST
 +     Port 22
 +     User USER
 +     IdentityFile ~/.ssh/rsa_id
 +EOF
 +```
 +
 +Then copy your ssh public key to the remote server with the `ssh-copy-id` command:
 +
 +```
 +~/.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':
 +```
 +
 +Now that you can log in with your SSH key, let's create a script to automate deployment of your Hugo site.
 +
 +## Shell Script
 +
 +Create a new script called `deploy` the root of your Hugo tree:
 +
 +```
 +~/websites/topologix.fr$ editor deploy
 +```
 +
 +Add the following content. Replace the `USER`, `HOST`, and `DIR` values with your own values:
 +
 +```
 +#!/bin/sh
 +USER=my-user
 +HOST=my-server.com             
 +DIR=my/directory/to/topologix.fr/   # the directory where your web site files should go
 +
 +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
 +```
 +
 +Your site builds and deploys:
 +
 +```
 +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
 +posts/
 +posts/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
 +```
 +
 +You can incorporate other proprocessing tasks into this deployment script as well.
index 55ad424c8ba3a607e4f2b04c53ab046dc2c1b7ea,0000000000000000000000000000000000000000..34a21e9e981cacdc61369f67ed5877e82938313a
mode 100644,000000..100644
--- /dev/null
@@@ -1,57 -1,0 +1,57 @@@
- description: Develop and deploy a cloud-powered web app with AWS Amplify. 
 +---
 +title: Host on AWS Amplify
 +linktitle: Host on AWS Amplify
++description: Develop and deploy a cloud-powered web app with AWS Amplify.
 +date: 2018-01-31
 +publishdate: 2018-01-31
 +lastmod: 2018-01-31
 +categories: [hosting and deployment]
 +keywords: [amplify,hosting,deployment]
 +authors: [Nikhil Swaminathan]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: []
 +toc: true
 +---
 +
 +In this guide we'll walk through how to deploy and host your Hugo site using the [AWS Amplify Console](https://console.amplify.aws).
 +
 +AWS Amplify is a combination of client library, CLI toolchain, and a Console for continuous deployment and hosting. The Amplify CLI and library allow developers to get up & running with full-stack cloud-powered applications with features like authentication, storage, serverless GraphQL or REST APIs, analytics, Lambda functions, & more. The Amplify Console provides continuous deployment and hosting for modern web apps (single page apps and static site generators). Continuous deployment allows developers to deploy updates to their web app on every code commit to their Git repository. Hosting includes features such as globally available CDNs, easy custom domain setup + HTTPS, feature branch deployments, and password protection.
 +
 +## Pre-requisites
 +
 +* [Sign up for an AWS Account](https://portal.aws.amazon.com/billing/signup?redirect_url=https%3A%2F%2Faws.amazon.com%2Fregistration-confirmation). There are no upfront charges or any term commitments to create an AWS account and signing up gives you immediate access to the AWS Free Tier.
 +* You have an account with GitHub, GitLab, or Bitbucket.
 +* You have completed the [Quick Start][] or have a Hugo website you are ready to deploy and share with the world.
 +
 +## Hosting
 +
 +1. Log in to the [AWS Amplify Console](https://console.aws.amazon.com/amplify/home) and choose Get Started under Deploy.
 +   ![Hugo Amplify](/images/hosting-and-deployment/hosting-on-aws-amplify/amplify-gettingstarted.png)
 +
 +1. Connect a branch from your GitHub, Bitbucket, GitLab, or AWS CodeCommit repository. Connecting your repository allows Amplify to deploy updates on every code commit to a branch.
 +   ![Hugo Amplify](/images/hosting-and-deployment/hosting-on-aws-amplify/amplify-connect-repo.gif)
 +
 +1.  Accept the default build settings. The Amplify Console automatically detects your Hugo build settings and output directory.
 +   ![Hugo Amplify](/images/hosting-and-deployment/hosting-on-aws-amplify/amplify-build-settings.png)
 +
 +1. Review your changes and then choose **Save and deploy**. The Amplify Console will pull code from your repository, build changes to the backend and frontend, and deploy your build artifacts at `https://master.unique-id.amplifyapp.com`. Bonus: Screenshots of your app on different devices to find layout issues.
 +
 +## Using a Newer Version of Hugo
 +
 +If you need to use a different, perhaps newer, version of Hugo than the version currently supported by AWS Amplify:
 +
 +1. Visit the [AWS Amplify Console](https://console.aws.amazon.com/amplify/home), and click the app you would like to modify
 +1. In the side navigation bar, Under App Settings, click **Build settings**
 +1. On the Build settings page, near the bottom, there is a section called **Build image settings**. Click **Edit**
 +1. Under **Live package updates**, click **Add package version override**
 +1. From the selection, click **Hugo** and ensure the version field says `latest`
 +1. Click **Save** to save the changes.
 +
 +
 +[Quick Start]: /getting-started/quick-start/
index 9630c57ffe6598e1866030529aa657d1b8a7f648,0000000000000000000000000000000000000000..d8f6699c5920330ae5ae6db40e9475052a9e697d
mode 100644,000000..100644
--- /dev/null
@@@ -1,252 -1,0 +1,252 @@@
-     * Before proceeding run `rm -rf public` to completely remove the `public` directory 
 +---
 +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: 2018-09-22
 +categories: [hosting and deployment]
 +keywords: [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.8 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][].
 +
 +## Types of GitHub Pages
 +
 +There are 2 types of GitHub Pages:
 +
 +- User/Organization Pages (`https://<USERNAME|ORGANIZATION>.github.io/`)
 +- Project Pages (`https://<USERNAME|ORGANIZATION>.github.io/<PROJECT>/`)
 +
 +Please refer to the [GitHub Pages documentation][ghorgs] to decide which type of site you would like to create as it will determine which of the below methods to use.
 +
 +To create a User/Organization Pages site, follow the single method in the *GitHub User and Organization Pages* section below.
 +
 +To create a Project Pages site, choose a method from the *Project Pages* section below.
 +
 +## GitHub User or Organization Pages
 +
 +As mentioned in the [GitHub Pages documentation][ghorgs], 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 a `<USERNAME>.github.io` to host your **generated** content
 +2. Content from the `master` branch will be used to publish your GitHub Pages site
 +
 +This is a much simpler setup as your Hugo files and generated content are published into two different repositories.
 +
 +### Step-by-step Instructions
 +
 +1. Create a `<YOUR-PROJECT>` (e.g. `blog`) 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. Paste your existing Hugo project into the new local `<YOUR-PROJECT>` repository. Make sure your website works 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
++    * Before proceeding run `rm -rf public` to completely remove the `public` directory
 +6. `git submodule add -b master https://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).
 +
 +### Put it Into a Script
 +
 +You're almost done. In order to automate next steps create a `deploy.sh` script. You can also make it executable with `chmod +x deploy.sh`.
 +
 +The following are the contents of the `deploy.sh` script:
 +
 +```
 +#!/bin/sh
 +
 +# If a command fails then the deploy stops
 +set -e
 +
 +printf "\033[0;32mDeploying updates to GitHub...\033[0m\n"
 +
 +# 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 [ -n "$*" ]; then
 +      msg="$*"
 +fi
 +git commit -m "$msg"
 +
 +# Push source and build repos.
 +git push origin master
 +```
 +
 +
 +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-PROJECT>` repository as well.
 +
 +That's it! Your personal page should be up and running at `https://<USERNAME>.github.io` within a couple minutes.
 +
 +## GitHub Project Pages
 +
 +{{% 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/<PROJECT>/`) and not a custom domain.
 +{{% /note %}}
 +
 +### Deployment of Project Pages from `/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:
 +
 +```
 +publishDir = "docs"
 +```
 +```
 +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 of Project Pages 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:
 +
 +```
 +echo "public" >> .gitignore
 +```
 +
 +##### Initialize Your `gh-pages` Branch
 +
 +You can now initialize your `gh-pages` branch as an empty [orphan branch][]:
 +
 +```
 +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:
 +
 +```
 +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 file="commit-gh-pages-files.sh">}}
 +hugo
 +cd public && git add --all && git commit -m "Publishing to gh-pages" && cd ..
 +{{< /code >}}
 +
 +If the changes in your local `gh-pages` branch look alright, push them to the remote repo:
 +
 +```
 +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 file="publish_to_ghpages.sh" >}}
 +#!/bin/sh
 +
 +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)"
 +
 +#echo "Pushing to github"
 +#git push --all
 +{{< /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.
 +
 +### Deployment of Project Pages 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**.
 +
 +## 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 05bac2ff458e8a6db1e42161e226f84137082eb5,0000000000000000000000000000000000000000..ca4ba219bb086682317da2be76abf45ef3861304
mode 100644,000000..100644
--- /dev/null
@@@ -1,94 -1,0 +1,94 @@@
- The first step will be to login to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL. 
 +---
 +title: "Hosting on KeyCDN"
 +date: 2017-09-12
 +description: "Accelerate your Hugo site globally with a KeyCDN integration. This tutorial shows you how to setup your static site as a GitLab page behind a KeyCDN pull zone."
 +categories: [hosting and deployment]
 +keywords: [keycdn,hosting,deployment,cdn]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 40
 +slug: ""
 +aliases: []
 +toc: false
 +draft: false
 +---
 +
 +[KeyCDN](https://www.keycdn.com/) provides a multitude of features to help accelerate and secure your Hugo site globally including Brotli compression, Let's Encrypt support, Origin Shield, and more.
 +
 +## Assumptions
 +
 +- You already have a Hugo page configured
 +- You have a GitLab account
 +- You have a KeyCDN account
 +
 +## Create a KeyCDN Pull Zone
 +
- ![Screenshot of KeyCDN's pull zone creation page](/images/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png) 
++The first step will be to login to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL.
 +
- While the origin location doesn’t exist yet, you will need to use your new Zone URL address (or [Zonealias](https://www.keycdn.com/support/create-a-zonealias/)) in the `.gitlab-ci.yml` file that will be uploaded to your GitLab project. 
++![Screenshot of KeyCDN's pull zone creation page](/images/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png)
 +
- Ensure that you use your Zone URL or Zonealias as the `BASEURL` variable in the example below. This will be the user-visible website address.
++While the origin location doesn’t exist yet, you will need to use your new Zone URL address (or [Zone Alias](https://www.keycdn.com/support/create-a-zone-alias/)) in the `.gitlab-ci.yml` file that will be uploaded to your GitLab project.
 +
++Ensure that you use your Zone URL or Zone alias as the `BASEURL` variable in the example below. This will be the user-visible website address.
 +
 +## Configure Your .gitlab-ci.yml File
 +
 +Your `.gitlab-ci.yml` file should look similar to the example below. Be sure to modify any variables that are specific to your setup.
 +
 +```
 +image: alpine:latest
 +
 +variables:
 +    BASEURL: "https://cipull-7bb7.kxcdn.com/"
 +    HUGO_VERSION: "0.26"
 +    HUGO_CHECKSUM: "67e4ba5ec2a02c8164b6846e30a17cc765b0165a5b183d5e480149baf54e1a50"
 +    KEYCDN_ZONE_ID: "75544"
 +
 +before_script:
 +    - apk update
 +    - apk add curl
 +
 +pages:
 +    stage: deploy
 +    script:
 +    - apk add git
 +    - git submodule update --init
 +    - curl -sSL https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -o /tmp/hugo.tar.gz
 +    - echo "${HUGO_CHECKSUM}  /tmp/hugo.tar.gz" | sha256sum -c
 +    - tar xf /tmp/hugo.tar.gz hugo -C /tmp/ && cp /tmp/hugo /usr/bin
 +    - hugo --baseURL ${BASEURL}
 +    - curl "https://api.keycdn.com/zones/purge/${KEYCDN_ZONE_ID}.json" -u "${KEYCDN_API_KEY}:"
 +    artifacts:
 +    paths:
 +    - public
 +    only:
 +    - master
 +
 +```
 +Using this integration method,  you will have to specify the Zone ID and your [KeyCDN API](https://www.keycdn.com/api) key as secret variables. To do this, navigate to the top-left menu bar in GitLab and select Projects. Then, select your project and click on the Settings page. Finally, select Pipelines from the sub-menu and scroll down to the Secret Variable section. 
 +
 +The Secret Variable for your Zone ID should look similar to:
 +
 +![Screenshot of setting the Zone ID secret variable](/images/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png)
 +
 +While the Secret Variable for your API Key will look similar to:
 +
 +![Screenshot of setting the API Key secret variable](/images/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png)
 +
 +The Zone ID and API key are used to purge your zone – it’s not strictly needed but otherwise, the CDN might deliver older versions of your assets for quite a while.
 +
 +## Push Your Changes to GitLab
 +
 +Now it’s time to push the newly created repository to GitLab:
 +
 +```
 +git remote add origin git@gitlab.com:youruser/ciexample.git
 +git push -u origin master
 +```
 +
 +You can watch the progress and CI job output in your Gitlab project under “Pipelines”. 
 +
 +After verifying your CI job ran without issues, first check that your GitLab page shows up under `https://youruser.gitlab.io/reponame/` (it might look broken depending on your browser settings as all links point to your KeyCDN zone – don’t worry about that) and then by heading to whatever Zonealias / Zone URL you defined.
 +
 +To learn more about Hugo hosting options with KeyCDN, check out the complete [Hugo hosting with KeyCDN integration guide](https://www.keycdn.com/support/hugo-hosting/).
index 3ea504f86a2d11ef7bdea7a769e5ae0d585763cb,0000000000000000000000000000000000000000..4106b3937ac0548ff67586daf66205061937e91e
mode 100644,000000..100644
--- /dev/null
@@@ -1,132 -1,0 +1,132 @@@
- max 
 +---
 +title: Configure Modules
 +linktitle: Configure Modules
 +description: This page describes the configuration options for a module.
 +date: 2019-07-24
 +categories: [hugo modules]
 +keywords: [themes, source, organization, directories]
 +menu:
 +  docs:
 +    parent: "modules"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +toc: true
 +---
 +
 +## Module Config: Top level
 +
 +{{< code-toggle file="config">}}
 +[module]
 +proxy = "direct"
 +noProxy = "none"
 +private = "*.*"
 +{{< /code-toggle >}}
 +
 +proxy
 +: Defines the proxy server to use to download remote modules. Default is `direct`, which means "git clone" and similar.
 +
 +noProxy
 +: Comma separated glob list matching paths that should not use the proxy configured above.
 +
 +private
 +: Comma separated glob list matching paths that should be treated as private.
 +
 +Note that the above terms maps directly to their counterparts in Go Modules. Some of these setting may be natural to set as OS environment variables. To set the proxy server to use, as an example:
 +
 +```
 +env HUGO_MODULE_PROXY=https://proxy.example.org hugo
 +```
 +
 +{{< gomodules-info >}}
 +
 +## Module Config: hugoVersion
 +
 +If your module requires a particular version of Hugo to work, you can indicate that in the `module` section and the user will be warned if using a too old/new version.
 +
 +{{< code-toggle file="config">}}
 +[module]
 +[module.hugoVersion]
 +  min = ""
 +  max = ""
 +  extended = false
 +
 +{{< /code-toggle >}}
 +
 +Any of the above can be omitted.
 +
 +min
 +: The minimum Hugo version supported, e.g. `0.55.0`
 +
-   path = "my-shortcodes"  
++max
 +: The maximum Hugo version supported, e.g. `0.55.0`
 +
 +extended
 +: Whether the extended version of Hugo is required.
 +
 +## Module Config: imports
 +
 +{{< code-toggle file="config">}}
 +[module]
 +[[module.imports]]
 +  path = "github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v"
 +  ignoreConfig = false
 +  disable = false
 +[[module.imports]]
++  path = "my-shortcodes"
 +{{< /code-toggle >}}
 +
 +path
 +: Can be either a valid Go Module module path, e.g. `github.com/gohugoio/myShortcodes`, or the directory name for the module as stored in your themes folder.
 +
 +ignoreConfig
 +: If enabled, any module configuration file, e.g. `config.toml`, will not be loaded. Note that this will also stop the loading of any transitive module dependencies.
 +
 +disable
 +: Set to `true` to disable the module off while keeping any version info in the `go.*` files.
 +
 +{{< gomodules-info >}}
 +
 +
 +## Module Config: mounts
 +
 +{{% note %}}
 +When the `mounts` config was introduced in Hugo 0.56.0, we were careful to preserve the existing `staticDir` and similar configuration to make sure all existing sites just continued to work.
 +
 +But you should not have both. So if you add a `mounts` section you should make it complete and remove the old `staticDir` etc. settings.
 +{{% /note %}}
 +
 +{{< code-toggle file="config">}}
 +[module]
 +[[module.mounts]]
 +    source="content"
 +    target="content"
 +[[module.mounts]]
 +    source="static"
 +    target="static"
 +[[module.mounts]]
 +    source="layouts"
 +    target="layouts"
 +[[module.mounts]]
 +    source="data"
 +    target="data"
 +[[module.mounts]]
 +    source="assets"
 +    target="assets"
 +[[module.mounts]]
 +    source="i18n"
 +    target="i18n"
 +[[module.mounts]]
 +    source="archetypes"
 +    target="archetypes"
 +{{< /code-toggle >}}
 +
 +source
 +: The source directory of the mount. For the main project, this can be either project-relative or absolute and even a symbolic link. For other modules it must be project-relative.
 +
 +target
 +: Where it should be mounted into Hugo's virtual filesystem. It must start with one of Hugo's component folders: `static`, `content`, `layouts`, `data`, `assets`, `i18n`, or `archetypes`. E.g. `content/blog`.
 +
 +lang
 +: The language code, e.g. "en". Only relevant for `content` mounts, and `static` mounts when in multihost mode.
 +
index baf68d21bb689deb365072fe319cd00dc2803398,0000000000000000000000000000000000000000..5f16d5675dfee90bc6a0181df010af36f7d82e74
mode 100644,000000..100644
--- /dev/null
@@@ -1,142 -1,0 +1,142 @@@
- The easiest way to use a for a theme is to import it in the config. 
 +---
 +title: Use Hugo Modules
 +linktitle: Use Hugo Modules
 +description: How to use Hugo Modules to build and manage your site.
 +date: 2019-07-24
 +categories: [hugo modules]
 +keywords: [install, themes, source, organization, directories,usage,modules]
 +menu:
 +  docs:
 +    parent: "modules"
 +    weight: 20
 +weight: 20
 +sections_weight: 20
 +draft: false
 +aliases: [/themes/usage/,/themes/installing/,/installing-and-using-themes/]
 +toc: true
 +---
 +
 +## Prerequisite
 +
 +{{< gomodules-info >}}
 +
 +
 +
 +## Initialize a New Module
 +
 +Use `hugo mod init` to initialize a new Hugo Module. If it fails to guess the module path, you must provide it as an argument, e.g.:
 +
 +```bash
 +hugo mod init github.com/gohugoio/myShortcodes
 +```
 +
 +Also see the [CLI Doc](/commands/hugo_mod_init/).
 +
 +## Use a Module for a Theme
- 2. Import the theme in your `config.toml`: 
++The easiest way to use a Module for a theme is to import it in the config.
 +
 +1. Initialize the hugo module system: `hugo mod init github.com/<your_user>/<your_project>`
- If you have the `hugo server` running, the configuration will be reloaded and `/Users/bep/hugotestmods/mypartials` put on the watch list. 
++2. Import the theme in your `config.toml`:
 +
 +```toml
 +[module]
 +  [[module.imports]]
 +    path = "github.com/spf13/hyde/"
 +```
 +
 +## Update Modules
 +
 +Modules will be downloaded and added when you add them as imports to your configuration, see [Module Imports](/hugo-modules/configuration/#module-config-imports).
 +
 +To update or manage versions, you can use `hugo mod get`.
 +
 +Some examples:
 +
 +### Update All Modules
 +
 +```bash
 +hugo mod get -u
 +```
 +
 +### Update All Modules Recursively
 +
 +{{< new-in "0.65.0" >}}
 +
 +```bash
 +hugo mod get -u ./...
 +```
 +
 +### Update One Module
 +
 +```bash
 +hugo mod get -u github.com/gohugoio/myShortcodes
 +```
 +### Get a Specific Version
 +
 +```bash
 +hugo mod get github.com/gohugoio/myShortcodes@v1.0.7
 +```
 +
 +Also see the [CLI Doc](/commands/hugo_mod_get/).
 +
 +## Make and test changes in a module
 +
 +One way to do local development of a module imported in a project is to add a replace directive to a local directory with the source in `go.mod`:
 +
 +```bash
 +replace github.com/bep/hugotestmods/mypartials => /Users/bep/hugotestmods/mypartials
 +```
 +
- `hugo mod vendor` will write all the module depencies to a `_vendor` folder, which will then be used for all subsequent builds.
++If you have the `hugo server` running, the configuration will be reloaded and `/Users/bep/hugotestmods/mypartials` put on the watch list.
 +
 +
 +## Print Dependency Graph
 +
 +
 +Use `hugo mod graph` from the relevant module directory and it will print the dependency graph, including vendoring, module replacement or disabled status.
 +
 +E.g.:
 +
 +```
 +hugo mod graph
 +
 +github.com/bep/my-modular-site github.com/bep/hugotestmods/mymounts@v1.2.0
 +github.com/bep/my-modular-site github.com/bep/hugotestmods/mypartials@v1.0.7
 +github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/myassets@v1.0.4
 +github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/myv2@v1.0.0
 +DISABLED github.com/bep/my-modular-site github.com/spf13/hyde@v0.0.0-20190427180251-e36f5799b396
 +github.com/bep/my-modular-site github.com/bep/hugo-fresh@v1.0.1
 +github.com/bep/my-modular-site in-themesdir
 +
 +```
 +
 +Also see the [CLI Doc](/commands/hugo_mod_graph/).
 +
 +## Vendor Your Modules
 +
++`hugo mod vendor` will write all the module dependencies to a `_vendor` folder, which will then be used for all subsequent builds.
 +
 +Note that:
 +
 +* You can run `hugo mod vendor` on any level in the module tree.
 +* Vendoring will not store modules stored in your `themes` folder.
 +* Most commands accept a `--ignoreVendor` flag, which will then run as if the none of the `_vendor` folders in the module tree existed.
 +
 +Also see the [CLI Doc](/commands/hugo_mod_vendor/).
 +
 +
 +## Tidy go.mod, go.sum
 +
 +Run `hugo mod tidy` to remove unused entries in `go.mod` and `go.sum`.
 +
 +Also see the [CLI Doc](/commands/hugo_mod_clean/).
 +
 +## Clean Module Cache
 +
 +Run `hugo mod clean` to delete the entire modules cache.
 +
 +Note that you can also configure the `modules` cache with a `maxAge`, see [File Caches](/hugo-modules/configuration/#configure-file-caches).
 +
 +
 +
 +Also see the [CLI Doc](/commands/hugo_mod_clean/).
index 32f0a7881dfcf9730d45ae59e29b33119b5fded2,0000000000000000000000000000000000000000..79b866c930db4b86055ecba9ae9de10cf3b555a0
mode 100755,000000..100755
--- /dev/null
@@@ -1,26 -1,0 +1,24 @@@
 +---
 +title: Asset bundling
 +description: Hugo Pipes can bundle any number of assets together.
 +date: 2018-07-14
 +publishdate: 2018-07-14
 +lastmod: 2018-07-14
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +---
 +
 +Asset files of the same MIME type can be bundled into one resource using `resources.Concat` which takes two arguments, a target path and a slice of resource objects.
 +
- ```
 +```go-html-template
 +{{ $plugins := resources.Get "js/plugins.js" }}
 +{{ $global := resources.Get "js/global.js" }}
 +{{ $js := slice $plugins $global | resources.Concat "js/bundle.js" }}
++```
index 4f7aa643234e9a34d2710022d7265252f5fd3bb8,0000000000000000000000000000000000000000..b58b577dba4f9dcb0d64e1445e0237fc7fc539a2
mode 100755,000000..100755
--- /dev/null
@@@ -1,29 -1,0 +1,29 @@@
- Fingerprinting and [SRI](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be applied to any asset file using `resources.Fingerprint` which takes two arguments, the resource object and a [hash function](https://en.wikipedia.org/wiki/Cryptographic_hash_function). 
 +---
 +title: Fingerprinting and SRI
 +description: Hugo Pipes allows Fingerprinting and Subresource Integrity.
 +date: 2018-07-14
 +publishdate: 2018-07-14
 +lastmod: 2018-07-14
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 70
 +weight: 70
 +sections_weight: 70
 +draft: false
 +---
 +
 +
++Fingerprinting and [SRI](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be applied to any asset file using `resources.Fingerprint` which takes two arguments, the resource object and a [hash function](https://en.wikipedia.org/wiki/Cryptographic_hash_function).
 +
 +The default hash function is `sha256`. Other available functions are `sha384` (from Hugo `0.55`), `sha512` and `md5`.
 +
 +Any so processed asset will bear a `.Data.Integrity` property containing an integrity string, which is made up of the name of the hash function, one hyphen and the base64-encoded hash sum.
 +
 +```go-html-template
 +{{ $js := resources.Get "js/global.js" }}
 +{{ $secureJS := $js | resources.Fingerprint "sha512" }}
 +<script type="text/javascript" src="{{ $secureJS.Permalink }}" integrity="{{ $secureJS.Data.Integrity }}"></script>
 +```
index 3c42dc68f2a2b529e0d90b03ec53e3555cedfe7f,0000000000000000000000000000000000000000..439ff6c674d49e06f331d01a0ec5b7c4e3a6e17f
mode 100755,000000..100755
--- /dev/null
@@@ -1,52 -1,0 +1,52 @@@
- --- 
 +---
 +title: Hugo Pipes Introduction
 +description: Hugo Pipes is Hugo's asset processing set of functions.
 +date: 2018-07-14
 +publishdate: 2018-07-14
 +lastmod: 2018-07-14
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 20
 +weight: 01
 +sections_weight: 01
 +draft: false
 +aliases: [/assets/]
++---
 +
 +### Asset directory
 +
 +Asset files must be stored in the asset directory. This is `/assets` by default, but can be configured via the configuration file's `assetDir` key.
 +
 +### From file to resource
 +
 +In order to process an asset with Hugo Pipes, it must be retrieved as a resource using `resources.Get`, which takes one argument: the filepath of the file relative to the asset directory.
 +
 +```go-html-template
 +{{ $style := resources.Get "sass/main.scss" }}
 +```
 +
 +### Asset publishing
 +
 +Assets will only be published (to `/public`) if `.Permalink` or `.RelPermalink` is used.
 +
 +### Go Pipes
 +
 +For improved readability, the Hugo Pipes examples of this documentation will be written using [Go Pipes](/templates/introduction/#pipes):
 +```go-html-template
 +{{ $style := resources.Get "sass/main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
 +<link rel="stylesheet" href="{{ $style.Permalink }}">
 +```
 +
 +### Method aliases
 +
 +Each Hugo Pipes `resources` transformation method uses a __camelCased__ alias (`toCSS` for `resources.ToCSS`).
 +Non-transformation methods deprived of such aliases are `resources.Get`, `resources.FromString`, `resources.ExecuteAsTemplate` and `resources.Concat`.
 +
 +The example above can therefore also be written as follows:
 +```go-html-template
 +{{ $style := resources.Get "sass/main.scss" | toCSS | minify | fingerprint }}
 +<link rel="stylesheet" href="{{ $style.Permalink }}">
 +```
index c8136c040f8e88a55eb4f236fe0772d8de32ab2f,0000000000000000000000000000000000000000..d11ee58a90e1477791b7bc71c240ab2354e5d199
mode 100755,000000..100755
--- /dev/null
@@@ -1,27 -1,0 +1,27 @@@
- Any resource of the aforementioned types can be minifed using `resources.Minify` which takes for argument the resource object.
 +---
 +title: Asset minification
 +description: Hugo Pipes allows the minification of any CSS, JS, JSON, HTML, SVG or XML resource.
 +date: 2018-07-14
 +publishdate: 2018-07-14
 +lastmod: 2018-07-14
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 50
 +weight: 50
 +sections_weight: 50
 +draft: false
 +---
 +
 +
++Any resource of the aforementioned types can be minified using `resources.Minify` which takes for argument the resource object.
 +
 +
 +```go-html-template
 +{{ $css := resources.Get "css/main.css" }}
 +{{ $style := $css | resources.Minify }}
 +```
 +
 +Note that you can also minify the final HTML output to `/public` by running `hugo --minify`.
index 962d0ffdf2c0d0a61fced160deb19ac185303aff,0000000000000000000000000000000000000000..6fb593950e1b0235d26a6b0d0f7b775228903729
mode 100755,000000..100755
--- /dev/null
@@@ -1,70 -1,0 +1,70 @@@
-    
 +---
 +title: PostProcess
 +description: Allows delaying of resource transformations to after the build.
 +date: 2020-04-09
 +categories: [asset management]
 +keywords: []
 +menu:
 +  docs:
 +    parent: "pipes"
 +    weight: 39
 +weight: 39
 +sections_weight: 39
 +---
 +
 +Marking a resource with `resources.PostProcess` delays any transformations to after the build, typically because one or more of the steps in the transformation chain depends on the result of the build (e.g. files in `public`).{{< new-in "0.69.0" >}}
 +
 +A prime use case for this is [CSS purging with PostCSS](#css-purging-with-postcss).
 +
 +There are currently two limitations to this:
 +
 +1. This only works in `*.html` templates (i.e. templates that produces HTML files).
 +2. You cannot manipulate the values returned from the resource's methods. E.g. the `upper` in this example will not work as expected:
++
 +    ```go-html-template
 +    {{ $css := resources.Get "css/main.css" }}
 +    {{ $css = $css | resources.PostCSS | minify | fingerprint | resources.PostProcess }}
 +    {{ $css.RelPermalink | upper }}
 +    ```
 +
 +## CSS purging with PostCSS
 +
 +{{% note %}}
 +There are several ways to set up CSS purging with PostCSS in Hugo. If you have a simple project, you should consider going the simpler route and drop the use of `resources.PostProcess` and just extract keywords from the templates. See the [Tailwind documentation](https://tailwindcss.com/docs/controlling-file-size/#app) for some examples.
 +{{% /note %}}
 +
 +The below configuration will write a `hugo_stats.json` file to the project root as part of the build. If you're only using this for the production build, you should consider placing it below [config/production](/getting-started/configuration/#configuration-directory).
 +
 +```toml
 +[build]
 +  writeStats = true
 +```
 +
 +```js
 +const purgecss = require('@fullhuman/postcss-purgecss')({
 +    content: [ './hugo_stats.json' ],
 +    defaultExtractor: (content) => {
 +        let els = JSON.parse(content).htmlElements;
 +        return els.tags.concat(els.classes, els.ids);
 +    }
 +});
 +
 +module.exports = {
 +    plugins: [
 +        require('tailwindcss'),
 +        require('autoprefixer'),
 +        ...(process.env.HUGO_ENVIRONMENT === 'production' ? [ purgecss ] : [])
 +    ]
 +};
 +```
 +
 +Note that in the example above, the "CSS purge step" will only be applied to the production build. This means that you need to do something like this in your head template to build and include your CSS:
 +
 +```go-html-template
 +{{ $css := resources.Get "css/main.css" }}
 +{{ $css = $css | resources.PostCSS }}
 +{{ if hugo.IsProduction }}
 +{{ $css = $css | minify | fingerprint | resources.PostProcess }}
 +{{ end }}
 +<link href="{{ $css.RelPermalink }}" rel="stylesheet" />
 +```
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..673ab28c3367a56905beed56ed4884c0632861ae
new file mode 100644 (file)
Binary files differ
index d8dffa1daeeab4c8e77d65edc11929e6f9ea989f,0000000000000000000000000000000000000000..8e413f02a8ce3237420e3d9a15c549557df84218
mode 100644,000000..100644
--- /dev/null
@@@ -1,41 -1,0 +1,41 @@@
- title: "0.72.0"
- description: "0.72.0"
 +
 +---
 +date: 2020-05-31
-       This is a rather small release, its probably main motivation being the fixes in Goldmark's [Typographer extension](https://github.com/gohugoio/hugo/commit/432885c499849efb29d3e50196f377fe0e908333).
++title: URL rewrites in dev server
++description: "Hugo 0.72.0 comes with dev server redirects and URL rewrites, Goldmark typography extension fixes, Scratch.Values."
 +categories: ["Releases"]
 +---
 +
++This is a rather small release, its probably main motivation being the fixes in Goldmark's [Typographer extension](https://github.com/gohugoio/hugo/commit/432885c499849efb29d3e50196f377fe0e908333).
 +
 +This release also adds [redirect and URL rewrite support](https://gohugo.io/getting-started/configuration/#configure-server) to the development server, with mostly Netlify-compatible configuration syntax. This is especially useful if you're building a [SPA](https://en.wikipedia.org/wiki/Single-page_application) with client-side routing.
 +
 +
 +This release represents **13 contributions by 3 contributors** to the main Hugo code base.
 +
 +Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
 +which has received **9 contributions by 6 contributors**. A special thanks to [@faraixyz](https://github.com/faraixyz), [@bep](https://github.com/bep), [@coliff](https://github.com/coliff), and [@Leon0824](https://github.com/Leon0824) for their work on the documentation site.
 +
 +
 +Hugo now has:
 +
 +* 44383+ [stars](https://github.com/gohugoio/hugo/stargazers)
 +* 437+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
 +* 327+ [themes](http://themes.gohugo.io/)
 +
 +## Enhancements
 +
 +### Other
 +
 +* Add Scratch.Values [2919a6a5](https://github.com/gohugoio/hugo/commit/2919a6a503f7b369154d6eb787023a1fe58a9ad4) [@bep](https://github.com/bep) [#7335](https://github.com/gohugoio/hugo/issues/7335)
 +* Update Goldmark to improve Typographer [432885c4](https://github.com/gohugoio/hugo/commit/432885c499849efb29d3e50196f377fe0e908333) [@bep](https://github.com/bep) [#7289](https://github.com/gohugoio/hugo/issues/7289)
 +* Add redirect support to the server [6a3e8974](https://github.com/gohugoio/hugo/commit/6a3e89743ccad58097a6dd203a63448946a2304d) [@bep](https://github.com/bep) [#7323](https://github.com/gohugoio/hugo/issues/7323)
 +
 +## Fixes
 +
 +### Other
 +
 +* Fix tag collector for nested table elements [c950c86b](https://github.com/gohugoio/hugo/commit/c950c86b4e5fb93f787ec78ca823bded9ef9fa3a) [@bep](https://github.com/bep) [#7318](https://github.com/gohugoio/hugo/issues/7318)
 +* Fix build error: my previous commits did not fix it [91520249](https://github.com/gohugoio/hugo/commit/915202494b140882d594e0542153531f6afada02) [@anthonyfok](https://github.com/anthonyfok) 
 +
 +
index 5ffb8843f153f1e748ca247a22529df04c73cea0,0000000000000000000000000000000000000000..72d0acd53de694dd53477bf59524367bdf6334a6
mode 100644,000000..100644
--- /dev/null
@@@ -1,79 -1,0 +1,77 @@@
- **Netlify** recently announced support for [HTTP/2 server push](https://www.netlify.com/blog/2017/07/18/http/2-server-push-on-netlify/), and we have now added it to the **gohugo.io** sites for the main `CSS` and `JS` bundles, along with server-side 301 redirect support. 
 +---
 +title: "HTTP/2 Server Push in Hugo"
 +date: 2017-07-24T18:36:00+02:00
 +description: >
 +    As every page in Hugo can be output to multiple formats, it is easy to create Netlify's _redirects and _headers files on the fly.
 +categories: [blog]
 +keywords: []
 +slug: "http2-server-push-in-hugo"
 +aliases: []
 +author: bep
 +images:
 +- images/gohugoio-card-1.png
 +---
 +
- ## 2. Add Template For the _headers File 
++**Netlify** recently announced support for [HTTP/2 server push](https://www.netlify.com/blog/2017/07/18/http/2-server-push-on-netlify/), and we have now added it to the **gohugo.io** sites for the main `CSS` and `JS` bundles, along with server-side 301 redirect support.
 +
 +If you navigate to https://gohugo.io and look in the Chrome developer network console, you should now see `Push` as the new source ("Initiator") for the `CSS` and `JSS`:
 +
 +{{< figure src="/images/blog/hugo-http2-push.png" caption="Network log for https://gohugo.io" >}}
 +
 +**Setting up this in Hugo was easy:**
 +
 +## 1. Configure Netlify Output Formats
 +
 +Add a new custom media type and two new output formats to `config.toml`. For more on output formats in Hugo, see [Custom Output Formats](/templates/output-formats/).
 +```bash
 +[outputs]
 +home = [ "HTML", "RSS", "REDIR", "HEADERS" ]
 +
 +[mediaTypes]
 +[mediaTypes."text/netlify"]
 +suffix = ""
 +delimiter = ""
 +
 +[outputFormats]
 +[outputFormats.REDIR]
 +mediatype = "text/netlify"
 +baseName = "_redirects"
 +isPlainText = true
 +notAlternative = true
 +[outputFormats.HEADERS]
 +mediatype = "text/netlify"
 +baseName = "_headers"
 +isPlainText = true
 +notAlternative = true
 +```
- ## 3. Add Template For the _redirects File 
++## 2. Add Template For the _headers File
 +
 +Add `layouts/index.headers`:
 +
 +```bash
 +/*
 +  X-Frame-Options: DENY
 +  X-XSS-Protection: 1; mode=block
 +  X-Content-Type-Options: nosniff
 +  Referrer-Policy: origin-when-cross-origin
 +*/
 +  Link: <{{ "dist/app.bundle.js" | relURL }}>; rel=preload; as=script
 +  Link: <{{ "dist/main.css" | relURL }}>; rel=preload; as=style
 +```
 +The template above creates both a security header definition and a HTTP/2 server push configuration.
 +
 +Also note that this is a template for the home page, so the full `Page` with its `Site` and many variables are available. You can also use `partial` to include other templates.
 +
 +
++## 3. Add Template For the _redirects File
 +Add `layouts/index.redir`:
 +```bash
 +# Netlify redirects. See https://www.netlify.com/docs/redirects/
 +{{  range $p := .Site.Pages -}}
 +{{ range .Aliases }}
 +{{  . | printf "%-35s" }}     {{ $p.RelPermalink -}}
 +{{ end -}}
 +{{- end -}}
 +```
 +The template above creates 301 redirects for your [aliases](/content-management/urls/#aliases), so you will probably want to turn off aliases in your `config.toml`: `disableAliases = true`.
 +
index 55038bc7ef46f2dd9aef8e35ec293af223878a6f,0000000000000000000000000000000000000000..2bcbff3fd17a6a00ff51e0d3a8837d58f35a6874
mode 100644,000000..100644
--- /dev/null
@@@ -1,39 -1,0 +1,39 @@@
-  
 +---
 +
 +title: 1Password Support
 +date: 2018-02-22
 +description: "Showcase: \"Compiles 400 pages in five languages in the blink of an eye.\""
 +siteURL: https://support.1password.com/
 +byline: "[Mitch Cohen](https://github.com/mitchchn), Documentation Team Lead"
 +aliases: [/showcase/1password/]
 +
 +---
 +
 +At 1Password, we used to go through a different documentation platform every month: blog engines, ebooks, wikis, site generators written in Ruby and JavaScript. Each was inadequate in its own special way. Then we found **Hugo**. We made one last switch, and we're glad we did.
 +
 +### Not all static site generators are created equal
 +
 +Finding a tool that will make your customers, writers, designers, _and_ DevOps team happy is no easy task, but we managed it with Hugo:
 +
 +**Hugo is static**. We're a security company, so we swear by static sites and use them wherever possible. We feel much safer pointing customers at HTML files than at a complicated server which needs to be hardened.
 +
 +**Hugo is Go**. We love the Go programming language at 1Password, and we were delighted to learn that Hugo used the same Go template syntax that our designers and front-end developers had already mastered.
++
 +**Hugo is FAST**. Our previous static site generator took nearly a minute to compile our (then much smaller) site. Developers might be used to this, but it wasn't cutting it for writers who wanted to see live previews of their work. Hugo did the same job in milliseconds, and to this day compiles 400 pages in five languages in the blink of an eye.
 +
 +**Hugo is flexible**. Thanks to Hugo's content and layout system, we were able to preserve our existing file and folder structure and port our entire production site in a few days. We could then create new content types that weren't possible before, like these snazzy [showcases](https://support.1password.com/explore/extension/).
 +
 +**Hugo is great for writers**. Our documentation team was already comfortable with Markdown and Git and could start creating content for Hugo with zero downtime. Once we added shortcodes, our writers were able to dress up articles with features like  [platform boxes](https://support.1password.com/get-the-apps/) with just a bit of new syntax.
 +
 +**Hugo has an amazing developer community**. Hugo updates are frequent and filled to the brim with features and fixes. As we developed the multilingual version of our site, we submitted PRs for features we needed and were helped through the process by [@bep](https://github.com/bep) and others.
 +
 +**Hugo is simple to deploy**. Hugo has just the right amount of configuration options to fit into our build system without being too complicated.
 +
 +### Tech specs
 +
 +* [1Password Support](https://support.1password.com) uses Hugo with a custom theme. It shares styles and some template code with [1Password.com](https://1password.com), which we also moved to Hugo in 2016.
 +* Code and articles live in a private GitHub repository, which is deployed to a static content server using Git hooks.
 +* Writers build and preview the site on their computers and contribute content using pull requests.
 + * We use Hugo's [multilingual support](/content-management/multilingual/) to build the site in English, Spanish, French, Italian, German, and Russian. With the help of Hugo, 1Password Support became our very first site in multiple languages.
 +* Our [contact form](https://support.1password.com/contact) is a single-page React app. We were able to integrate it with Hugo seamlessly thanks to its support for static files.
 +* The one part of the support site which is not static is our search engine, which we developed with Elasticsearch and host on AWS.
index 63f139adf4745e8d91b526ffaaa0091d67b750f1,0000000000000000000000000000000000000000..767f48269b9629573b8b2003cc646fe3528876be
mode 100644,000000..100644
--- /dev/null
@@@ -1,29 -1,0 +1,29 @@@
- Swiss [Arolla campsite](https://www.camping-arolla.com) runs the highest campsite in Europe and I'm completely re-doing their actuel Website with Hugo.
 +---
 +
 +title: Cocoon & Cosy
 +date: 2018-08-10
 +description: "Showcase: \"Emergency setup a dedicated site in an afternoon.\""
 +siteURL: https://www.cocoon-arolla.com
 +byline: "[Didier Divinerites](https://github.com/divinerites)"
 +
 +---
 +
++Swiss [Arolla campsite](https://www.camping-arolla.com) runs the highest campsite in Europe and I'm completely re-doing their actual Website with Hugo.
 +
 +But they just launch a brand new offer (luxury tents with bed and fire oven), and we couldn't wait for the proper new website for having this promoted: we needed the website up and running within 24h!
 +
 +So we decided to quickly launch a dedicated [independent web site](https://www.cocoon-arolla.com) using all the powerful tools included with [gohugo.io](https://gohugo.io) and some things we already knew & used:
 +
 +- Choose a spectacular landing theme in the rich [Hugo Themes](https://themes.gohugo.io/) collection : [Airspace Theme](https://themes.gohugo.io/airspace-hugo/) by Themefisher.
 +- Replace the main images.
 +- Add a [hugo-easy-gallery / photoswipe](https://github.com/liwenyip/hugo-easy-gallery) on the main page with attractive images.
 +- Add the promo video with a simple *vimeo* shortcode.
 +- Replace the Google Maps widget by the [OpenStreetMap](https://www.openstreetmap.org/) equivalent
 +- Use a [Zotabox](https://www.zotabox.com) contact form.
 +- Write the content in French & in English directly on the content pages, describe their services, add fun facts and true testimonies.
 +- Setup a GDPR compliant site with the new Hugo options.
 +- Use [Netlify](https://www.netlify.com) for publishing it in a breeze.
 +
 +The first version was up in 4 hours, and the polished 2 languages version was published on Netlify the next day.
 +
 +This would have been impossible to do it in such a short time without all the powerful Hugo tools and Netlify simplicity.
index bab68a54762520bc8bb9321e9467228d9ef27e38,0000000000000000000000000000000000000000..e9338a625f764d164a6379809a73c3f95b575485
mode 100644,000000..100644
--- /dev/null
@@@ -1,18 -1,0 +1,17 @@@
 +---
- - **Render speed.** We know from past experience that JavaScript-based static site generators become very slow when you have thousands of pages and images. 
- - **Feature-rich.** Our site has a long list of specialized needs and Hugo somehow manages to cover every single use case. 
- - **Composability.** Hugo's partial and shortcode systems empower us to write DRY and maintainable templates.  
- - **Simplicity.** Hugo is easy to learn (even without Go experience) and doesn't burden us with brittle dependencies. 
 +title: fireship.io
 +date: 2019-02-02
 +description: "Showcase: \"Hugo helps us create complex technical content that integrates engaging web components\""
 +siteURL: https://fireship.io
 +siteSource: https://github.com/fireship-io/fireship.io
 +byline: "[Jeff Delaney](https://github.com/codediodeio), Fireship.io Creator"
 +---
 +
 +After careful consideration of JavaScript/JSX-based static site generators, it became clear that Hugo was the only tool capable of handling our project's complex demands. Not only do we have multiple content formats and taxonomies, but we often need to customize the experience at a more granular level. The problems Hugo has solved for us include:
 +
- The site is able to achieve Lighthouse performance scores of 95+, despite the fact that it is a fully interactive PWA that ships Angular and Firebase in the JS bundle. This is made possible by (1) prerendering content with Hugo and (2) lazily embedding native web components directly in the HTML and markdown. We provide a [detailed explanation](https://youtu.be/gun8OiGtlNc) of the architecture on YouTube and can't imagine development without Hugo. 
++- **Render speed.** We know from past experience that JavaScript-based static site generators become very slow when you have thousands of pages and images.
++- **Feature-rich.** Our site has a long list of specialized needs and Hugo somehow manages to cover every single use case.
++- **Composability.** Hugo's partial and shortcode systems empower us to write DRY and maintainable templates.
++- **Simplicity.** Hugo is easy to learn (even without Go experience) and doesn't burden us with brittle dependencies.
 +
++The site is able to achieve Lighthouse performance scores of 95+, despite the fact that it is a fully interactive PWA that ships Angular and Firebase in the JS bundle. This is made possible by (1) prerendering content with Hugo and (2) lazily embedding native web components directly in the HTML and markdown. We provide a [detailed explanation](https://youtu.be/gun8OiGtlNc) of the architecture on YouTube and can't imagine development without Hugo.
index 63f9ccabff745662c5ce4e71b0a26f3399cc85e0,0000000000000000000000000000000000000000..b32879b6954f23b6c36412a3e0bf27b233e42705
mode 100644,000000..100644
--- /dev/null
@@@ -1,33 -1,0 +1,33 @@@
- - The **multilingual** content support, especially simpel to setup.
 +---
 +
 +title: Hapticmedia Blog
 +date: 2019-10-01
 +description: "Showcase: \"A simple, but powerful, multilingual blog.\""
 +siteURL: https://hapticmedia.fr/blog/en/
 +byline: "[Cyril Bonnet](https://github.com/monsieurnebo), Web Developer"
 +
 +---
 +
 +Our goal was to create a simple, effective and multilingual blog on [3D technology](https://hapticmedia.fr/blog/en/3d-technology/) that could be managed by a non-technical profile.
 +
 +## Why Hugo?
 +Hugo addresses all these needs, coupled with [Forestry.io](https://forestry.io/) for its administration via a "turnkey" interface. We have attached particular importance to SEO, and therefore to the creation of an advanced taxonomy system. Thus, each author and tag has a dedicated page, listing the related posts.
 +
 +
 +## What we liked
++- The **multilingual** content support, especially simple to setup.
 +- The **multiple environments** support (develop, staging, test, production, ...).
 +- Although a hard start with the Go language, the power of the **Hugo's templating**.
 +- The **partial layouts**, including the `internals` (e.g. social metas).
 +- The **build time**, unbeatable ⚡️⚡️⚡️.
 +
 +
 +## Tools & workflow
 +- We used the same design as **[our website](https://hapticmedia.fr/en/)**, recreated as a Hugo HTML template.
 +- **[Hugo](https://gohugo.io)** for the static website generator.
 +- **[CircleCI](https://circleci.com)** for continuous integration & deployment.
 +- **[AWS](https://aws.amazon.com/)** for web hosting.
 +- **[Forestry.io](https://forestry.io)** for the content management.
 +
 +**All of these tools allow our editor to manage the blog's content without having to worry about its technical aspect, which is managed by the developers.**
 +
index b0590a8cf863e31006638fe466647d0be906c59d,0000000000000000000000000000000000000000..5a341be8aa8d46ad8ae7b5609bb2b8963f92c4b4
mode 100644,000000..100644
--- /dev/null
@@@ -1,21 -1,0 +1,15 @@@
 +---
 +title: Linode Docs
 +date: 2018-02-12
 +description: "Showcase: \"Hugo allows us to build thousands of pages in seconds.\""
 +siteURL: https://linode.com/docs/
 +siteSource: https://github.com/linode/docs
 +---
 +
 +The documentation team at Linode has been writing guides since 2009, with the goal of helping new and experienced Linux users find the best tools and get the most out of their systems.
 +
 +As our library grew into thousands of guides, we needed a fast static site generator with intuitive templating and the flexibility to extend Markdown without constantly writing HTML and CSS.
 +
 +Hugo solved a lot of our growing pains with features like shortcodes, customizable URLs, LiveReload, and more. We have already brought our site build time down from minutes to just a few seconds, and we are excited to see what future developments in Hugo will bring.
 +
 +Thank you to all the [Hugo contributors](https://github.com/gohugoio/hugo/graphs/contributors) and  especially [@bep](https://github.com/bep) for helping us with the adoption of Hugo.
index cb520acb27b1188cf43492b0e08a0af9d85164e2,0000000000000000000000000000000000000000..092b86370064aa3680f0f854355a70a99ae9c061
mode 100644,000000..100644
--- /dev/null
@@@ -1,28 -1,0 +1,28 @@@
- From the beginning, at Pace, we were focused on solving customer needs and didn't want to over-engineer our marketing or sales. At the same time we didn't want to lock ourselves into a Wordpress, Squarespace or the like.
 +---
 +
 +title: Pace Revenue Management
 +
 +date: 2018-02-08
 +
 +description: "Showcase: \"When we came across Hugo we were blown away.\""
 +
 +siteURL: https://www.paceup.com/
 +
 +# Link to the site's Hugo source code if public and you can/want to share.
 +# Remove or leave blank if not needed/wanted.
 +
 +# Add credit to the article author. Leave blank or remove if not needed/wanted.
 +
 +---
 +
++From the beginning, at Pace, we were focused on solving customer needs and didn't want to over-engineer our marketing or sales. At the same time we didn't want to lock ourselves into a WordPress, Squarespace or the like.
 +
 +The ideal was a fast, simple, static site builder. When we came across Hugo we were blown away. Being a European company we wanted to be multi-lingual from the get-go and allow multiple team-members to collaborate and own their content. We also felt that a tech-company in 2018 should be capable of hosting its own blog in a simple way.
 +
 +Here was Hugo, that allowed us to completely separate content from layout. Our sales-team edit a markdown-file, the engineers commit and off we go -- immediately deployable or pre-viewable.
 +
 +The only other way to have all that Hugo offers is to go down the full rabbit-hole of building your own server-side React or some such. Possibly Jekyll but again very complex to work with. The alternatives come with too much work for what should be quite simple.
 +
 +**Hugo + Gulp + Netlify for the win! Don't over engineer your web presence!**
 +
 +Huge thanks to [@bep](https://github.com/bep) and [community](https://discourse.gohugo.io/) for Hugo.
index 9f80850ee54b6e768ac062f766fb96dea597d0a0,0000000000000000000000000000000000000000..a8c31cc33e76ba8d53fc6489388f2b029a127304
mode 100644,000000..100644
--- /dev/null
@@@ -1,29 -1,0 +1,29 @@@
- As our customer base and demand for marketing and communication started to grow, we needed a solution to easily grow and extend the contents of our web presence. As we do not have the need to serve dynamic content, we decided to use a static site generator. Amongst a couple of others, we tried Hugo and it became immediately clear that we'd use Hugo going forward as it compiles super-fast, is intuitive to use and offers all the features we need.  
 +---
 +
 +# A suitable title for this article.
 +title: Quiply Employee Communications App
 +
 +# Set this to the current date.
 +date: 2018-02-13
 +
 +description: "\"It became immediately clear that we'd use Hugo going forward as it compiles super-fast, is intuitive to use and offers all the features we need.\""
 +
 +# The URL to the site on the internet.
 +siteURL: https://www.quiply.com
 +
 +# Link to the site's Hugo source code if public and you can/want to share.
 +# Remove or leave blank if not needed/wanted.
 +# siteSource: https://github.com/gohugoio/hugoDocs
 +
 +# Add credit to the article author. Leave blank or remove if not needed/wanted.
 +byline: "[Sebastian Schirmer](mailto:sebastian.schirmer@quiply.com), Quiply Co-Founder"
 +
 +---
 +
 +With the launch of our Employee Communications app Quiply we created a very simple and static one-page website to showcase our product.
 +
++As our customer base and demand for marketing and communication started to grow, we needed a solution to easily grow and extend the contents of our web presence. As we do not have the need to serve dynamic content, we decided to use a static site generator. Amongst a couple of others, we tried Hugo and it became immediately clear that we'd use Hugo going forward as it compiles super-fast, is intuitive to use and offers all the features we need.
 +
 +Our website which we launched a couple of weeks ago is still growing and new content is being added constantly. By using Hugo, this can be easily done by content authors writing markdown files without always having to touch HTML or CSS code. It is available in German only for the time being, an English version is in the works.
 +
 +Huge thanks to everyone involved in making Hugo a success.
index bc3d3fd29f926cc41ffbf744ebd2c47440aec8d3,0000000000000000000000000000000000000000..fcfcb11576ae6d6dea5d4f98e09c783300e0ea26
mode 100644,000000..100644
--- /dev/null
@@@ -1,21 -1,0 +1,16 @@@
 +---
 +title: StackImpact
 +date: 2018-02-20
 +description: "\"Hugo is a perfect choice for a product website.\""
 +siteURL: https://stackimpact.com/
 +---
 +
 +After gradually handing over the control of our website to WordPress plugins, we realized that we needed to act.
 +
 +Static web sites have natural advantages such as security, performance and content versioning (e.g. with Git). Static site generators such as Hugo made static websites cool again. Importantly, the best practices of software development (e.g. peer reviews, multi-stage deployments, rollbacks) can now be easily applied to websites.
 +
 +Besides the blog and documentation sections, our website needed custom sections with own templates. Hugo supported it beautifully.
 +
 +Hugo is written in Go language and uses Go templates. StackImpact is a performance profiler that has an advanced support for Go applications. Being aware of the advantages of Go in terms of speed and productivity, this was another strong reason for choosing Hugo.
 +
 +Thanks to all Hugo contributors for making such a beautiful and fast site generator!
index 4b9823c48e3b7c4fb9097839fc80b9347e50768c,0000000000000000000000000000000000000000..06e4a65485925be66abbc578279fba85fd5d72f0
mode 100644,000000..100644
--- /dev/null
@@@ -1,22 -1,0 +1,22 @@@
- 3. Follow the instructions in the newly created page bundle. 
 +---
 +
 +title: Hugo Showcase Template
 +date: 2018-02-07
 +description: "A short description of this page."
 +siteURL: https://gohugo.io/
 +siteSource: https://github.com/gohugoio/hugoDocs
 +byline: "[bep](https://github.com/bep), Hugo Lead"
 +
 +---
 +
 +Have a **notable Hugo site[^1]**? We would love to feature it in this **Showcase Section**
 +
 +We would really appreciate if you could:
 +
 +1. Fork https://github.com/gohugoio/hugoDocs
 +2. Run `hugo new showcase/your-site` (this requires >= Hugo 0.49). This will use the archetype bundle in the [docs repo](https://github.com/gohugoio/hugoDocs/tree/master/archetypes).
++3. Follow the instructions in the newly created page bundle.
 +3. Create a new pull request in https://github.com/gohugoio/hugoDocs/pulls
 +
 +
 +[^1]: We want this to show Hugo in its best light, so this is not for the average Hugo blog. In most cases the answer to "Is my site [notable](https://www.dictionary.com/browse/notable)?" will be obvious, but if in doubt, create an [issue](https://github.com/gohugoio/hugoDocs/issues) with a link and some words, and we can discuss it. But if you have a site with an interesting Hugo story or a company site where the company itself is notable, you are most welcome.
index abbb41f4c3cad37d68212bd2e46741f3bbb48c59,0000000000000000000000000000000000000000..fb7d341df686e1c876d0642d82f2c627f0b8063a
mode 100644,000000..100644
--- /dev/null
@@@ -1,662 -1,0 +1,662 @@@
- 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:
 +---
 +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]
 +keywords: [go]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/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](https://golang.org/pkg/text/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
 +
 +Go Templates are HTML files with the addition of [variables][variables] and [functions][functions]. Go Template variables and functions are accessible within `{{ }}`.
 +
 +### Access a Predefined Variable
 +
 +A _predefined variable_ could be a variable already existing in the
 +current scope (like the `.Title` example in the [Variables]({{< relref
 +"#variables" >}}) section below) or a custom variable (like the
 +`$address` example in that same section).
 +
 +
 +```go-html-template
 +{{ .Title }}
 +{{ $address }}
 +```
 +
 +Parameters for functions are separated using spaces. The general syntax is:
 +
 +```
 +{{ FUNCTION ARG1 ARG2 .. }}
 +```
 +
 +The following example calls the `add` function with inputs of `1` and `2`:
 +
 +```go-html-template
 +{{ 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][].
 +
 +```go-html-template
 +{{ .Params.bar }}
 +```
 +
 +#### Parentheses Can be Used to Group Items Together
 +
 +```go-html-template
 +{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
 +```
 +
 +## Variables {#variables}
 +
 +Each Go Template gets a data object. In Hugo, each template is passed
 +a `Page`.  In the below example, `.Title` is one of the elements
 +accessible in that [`Page` variable][pagevars].
 +
 +With the `Page` being the default scope of a template, the `Title`
 +element in current scope (`.` -- "the **dot**") is accessible simply
 +by the dot-prefix (`.Title`):
 +
 +```go-html-template
 +<title>{{ .Title }}</title>
 +```
 +
 +Values can also be stored in custom variables and referenced later:
 +
 +{{% note %}}
 +The custom variables need to be prefixed with `$`.
 +{{% /note %}}
 +
 +```go-html-template
 +{{ $address := "123 Main St." }}
 +{{ $address }}
 +```
 +
 +{{% warning %}}
 +For Hugo v0.47 and older versions, 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 %}}
 +
 +For **Hugo v0.48** and newer, variables can be re-defined using the
 +new `=` operator (new in Go 1.11).
 +
 +Below example will work only in these newer Hugo versions. The example
 +prints "Var is Hugo Home" on the home page, and "Var is Hugo Page" on
 +all other pages:
 +
 +```go-html-template
 +{{ $var := "Hugo Page" }}
 +{{ if .IsHome }}
 +    {{ $var = "Hugo Home" }}
 +{{ end }}
 +Var is {{ $var }}
 +```
 +
 +## 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
 +
 +```go-html-template
 +{{ add 1 2 }}
 +<!-- prints 3 -->
 +```
 +
 +### Example 2: Comparing Numbers
 +
 +```go-html-template
 +{{ lt 1 2 }}
 +<!-- prints true (i.e., since 1 is less than 2) -->
 +```
 +
 +Note that both examples make use of Go Template's [math functions][].
 +
 +{{% note "Additional Boolean Operators" %}}
 +There are more boolean operators than those listed in the Hugo docs in the [Go Template documentation](https://golang.org/pkg/text/template/#hdr-Functions).
 +{{% /note %}}
 +
 +## Includes
 +
 +When including another template, you will need to pass it the data that it would
 +need to access.
 +
 +{{% note %}}
 +To pass along the current context, please remember to include a trailing **dot**.
 +{{% /note %}}
 +
 +The templates location will always be starting at the `layouts/` directory
 +within Hugo.
 +
 +### Partial
 +
 +The [`partial`][partials] function is used to include *partial* templates using
 +the syntax `{{ partial "<PATH>/<PARTIAL>.<EXTENSION>" . }}`.
 +
 +Example of including a `layouts/partials/header.html` partial:
 +
 +```go-html-template
 +{{ partial "header.html" . }}
 +```
 +
 +### Template
 +
 +The `template` function was used to include *partial* templates
 +in much older Hugo versions. Now it's useful only for calling
 +[*internal* templates][internal_templates]. The syntax is `{{ template
 +"_internal/<TEMPLATE>.<EXTENSION>" . }}`.
 +
 +{{% note %}}
 +The available **internal** templates can be found
 +[here](https://github.com/gohugoio/hugo/tree/master/tpl/tplimpl/embedded/templates).
 +{{% /note %}}
 +
 +Example of including the internal `opengraph.html` template:
 +
 +```go-html-template
 +{{ template "_internal/opengraph.html" . }}
 +```
 +
 +## Logic
 +
 +Go Templates provide the most basic iteration and conditional logic.
 +
 +### Iteration
 +
 +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 (`.`)
 +
 +```go-html-template
 +{{ range $array }}
 +    {{ . }} <!-- The . represents an element in $array -->
 +{{ end }}
 +```
 +
 +#### Example 2: Declaring a variable name for an array element's value
 +
 +```go-html-template
 +{{ range $elem_val := $array }}
 +    {{ $elem_val }}
 +{{ end }}
 +```
 +
 +#### Example 3: Declaring variable names for an array element's index _and_ value
 +
 +For an array or slice, the first declared variable will map to each
 +element's index.
 +
 +```go-html-template
 +{{ range $elem_index, $elem_val := $array }}
 +   {{ $elem_index }} -- {{ $elem_val }}
 +{{ end }}
 +```
 +
 +#### Example 4: Declaring variable names for a map element's key _and_ value
 +
 +For a map, the first declared variable will map to each map element's
 +key.
 +
 +```go-html-template
 +{{ range $elem_key, $elem_val := $map }}
 +   {{ $elem_key }} -- {{ $elem_val }}
 +{{ end }}
 +```
 +
 +#### Example 5: Conditional on empty _map_, _array_, or _slice_.
 +
 +If the _map_, _array_, or _slice_ passed into the range is zero-length then the else statement is evaluated.
 +
 +```go-html-template
 +{{ range $array }}
 +    {{ . }}
 +{{else}}
 +    <!-- This is only evaluated if $array is empty -->
 +{{ 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` (boolean)
 +- 0 (integer)
 +- any zero-length array, slice, map, or string
 +
 +#### Example 1: `with`
 +
 +It is common to write "if something exists, do this" kind of
 +statements using `with`.
 +
 +{{% note %}}
 +`with` rebinds the context `.` within its scope (just like in `range`).
 +{{% /note %}}
 +
 +It skips the block if the variable is absent, or if it evaluates to
 +"false" as explained above.
 +
 +```go-html-template
 +{{ with .Params.title }}
 +    <h4>{{ . }}</h4>
 +{{ end }}
 +```
 +
 +#### Example 2: `with` .. `else`
 +
 +Below snippet uses the "description" front-matter parameter's value if
 +set, else uses the default `.Summary` [Page variable][pagevars]:
 +
 +
 +```go-html-template
 +{{ with .Param "description" }}
 +    {{ . }}
 +{{ else }}
 +    {{ .Summary }}
 +{{ end }}
 +```
 +
 +See the [`.Param` function][param].
 +
 +#### Example 3: `if`
 +
 +An alternative (and a more verbose) way of writing `with` is using
 +`if`. Here, the `.` does not get rebinded.
 +
 +Below example is "Example 1" rewritten using `if`:
 +
 +```go-html-template
 +{{ if isset .Params "title" }}
 +    <h4>{{ index .Params "title" }}</h4>
 +{{ end }}
 +```
 +
 +#### Example 4: `if` .. `else`
 +
 +Below example is "Example 2" rewritten using `if` .. `else`, and using
 +[`isset` function][isset] + `.Params` variable (different from the
 +[`.Param` **function**][param]) instead:
 +
 +```go-html-template
 +{{ if (isset .Params "description") }}
 +    {{ index .Params "description" }}
 +{{ else }}
 +    {{ .Summary }}
 +{{ end }}
 +```
 +
 +#### Example 5: `if` .. `else if` .. `else`
 +
 +Unlike `with`, `if` can contain `else if` clauses too.
 +
 +```go-html-template
 +{{ if (isset .Params "description") }}
 +    {{ index .Params "description" }}
 +{{ else if (isset .Params "summary") }}
 +    {{ index .Params "summary" }}
 +{{ else }}
 +    {{ .Summary }}
 +{{ end }}
 +```
 +
 +#### Example 6: `and` & `or`
 +
 +```go-html-template
 +{{ if (and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")) }}
 +```
 +
 +## 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:
 +
 +```go-html-template
 +{{ shuffle (seq 1 5) }}
 +```
 +
 +
 +```go-html-template
 +{{ (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](/functions/index-function/), which is built into Go Templates:
 +
 +```go-html-template
 +{{ index .Params "disqus_url" | html }}
 +```
 +
 +### Example 3: `or` with `isset`
 +
 +```go-html-template
 +{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr") }}
 +Stuff Here
 +{{ end }}
 +```
 +
 +Could be rewritten as
 +
 +```go-html-template
 +{{ if isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" }}
 +Stuff Here
 +{{ end }}
 +```
 +
 +### Example 4: Internet Explorer Conditional Comments {#ie-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:
 +
 +```go-html-template
 +{{ "<!--[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](https://golang.org/pkg/text/template/#hdr-Examples) in the Go text/template documentation:
 +
 +```go-html-template
 +{{ `<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->` | safeHTML }}
 +```
 +
 +## Context (aka "the dot") {#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 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 >}}
 +
 +{{% 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 file="range-through-tags-w-global.html" >}}
 +<ul>
 +{{ range .Params.tags }}
 +  <li>
 +    <a href="/tags/{{ . | urlize }}">{{ . }}</a>
 +            - {{ $.Site.Title }}
 +  </li>
 +{{ end }}
 +</ul>
 +{{< /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:
 +
 +```go-html-template
 +<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:
 +
 +```go-html-template
 +<div>
 +  {{- .Title -}}
 +</div>
 +```
 +
 +Which then outputs:
 +
 +```html
 +<div>Hello, World!</div>
 +```
 +
 +Go considers the following characters _whitespace_:
 +
 +* <kbd>space</kbd>
 +* horizontal <kbd>tab</kbd>
 +* carriage <kbd>return</kbd>
 +* newline
 +
 +## Comments
 +
 +In order to keep your templates organized and share information throughout your team, you may want to add comments to your templates. There are two ways to do that with Hugo.
 +
 +### Go Templates comments
 +
 +Go Templates support `{{/*` and `*/}}` to open and close a comment block. Nothing within that block will be rendered.
 +
 +For example:
 +
 +```go-html-template
 +Bonsoir, {{/* {{ add 0 + 2 }} */}}Eliott.
 +```
 +
 +Will render `Bonsoir, Eliott.`, and not care about the syntax error (`add 0 + 2`) in the comment block.
 +
 +### HTML comments
 +
 +If you need to produce HTML comments from your templates, take a look at the [Internet Explorer conditional comments](#ie-conditional-comments) example. If you need variables to construct such HTML comments, just pipe `printf` to `safeHTML`. For example:
 +
 +```go-html-template
 +{{ printf "<!-- Our website is named: %s -->" .Site.Title | safeHTML }}
 +```
 +
 +#### HTML comments containing Go Templates
 +
 +HTML comments are by default stripped, but their content is still evaluated. That means that although the HTML comment will never render any content to the final HTML pages, code contained within the comment may fail the build process.
 +
 +{{% note %}}
 +Do **not** try to comment out Go Template code using HTML comments.
 +{{% /note %}}
 +
 +```go-html-template
 +<!-- {{ $author := "Emma Goldman" }} was a great woman. -->
 +{{ $author }}
 +```
 +
 +The templating engine will strip the content within the HTML comment, but will first evaluate any Go Template code if present within. So the above example will render `Emma Goldman`, as the `$author` variable got evaluated in the HTML comment. But the build would have failed if that code in the HTML comment had an error.
 +
 +## 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]({{< ref "front-matter.md#front-matter-formats" >}}).
 +
 +## 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 (YAML):
 +
 +```
 +---
 +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 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 >}}
 +
 +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-toggle file="config" >}}
 +params:
 +  copyrighthtml: "Copyright &#xA9; 2017 John Doe. All Rights Reserved."
 +  twitteruser: "spf13"
 +  sidebarrecentlimit: 5
 +{{< /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.
 +
 +```go-html-template
 +{{ 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 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 }}
 +{{< /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.
 +
 +```go-html-template
 +<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 file="layouts/partials/upcoming-events.html" download="upcoming-events.html" >}}
 +<h4>Upcoming Events</h4>
 +<ul class="upcoming-events">
 +{{ range where .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]: https://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]: https://golang.org/pkg/html/template/ "Godocs references for Go's html templating"
 +[gohtmltemplate]: https://golang.org/pkg/html/template/ "Godocs references for Go'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"
 +[internal_templates]: /templates/internal/
 +[relpermalink]: /variables/page/
 +[safehtml]: /functions/safehtml/
 +[sitevars]: /variables/site/
 +[pagevars]: /variables/page/
 +[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]: https://golang.org/pkg/text/template/ "Godocs page for index function"
 +[param]: /functions/param/
 +[isset]: /functions/isset/
index 02fd1cb1ac942c1eed817e85a2214c6de77af32b,0000000000000000000000000000000000000000..873f5e696ab83bf55551be808fcc3faa1977e9a1
mode 100644,000000..100644
--- /dev/null
@@@ -1,209 -1,0 +1,192 @@@
-     please attribute properly and link back. Hosted by <a href="http://servergrove.com">ServerGrove</a>.
 +---
 +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]
 +keywords: [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
 +---
 +
 +{{< youtube pjS4pOLyB7c >}}
 +
 +## 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 %}}
 +
 +{{% note %}}
 +`<PARTIAL>` including `baseof` is reserved. ([#5373](https://github.com/gohugoio/hugo/issues/5373))
 +{{% /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:
 +
 +```
 +{{ partial "header/site-header.html" . }}
 +{{ partial "footer/scripts.html" . }}
 +```
 +
 +### 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`.
 +
 +## Returning a value from a Partial
 +
 +In addition to outputting markup, partials can be used to return a value of any type. In order to return a value, a partial must include a lone `return` statement.
 +
 +### Example GetFeatured
 +```go-html-template
 +{{/* layouts/partials/GetFeatured.html */}}
 +{{ return first . (where site.RegularPages ".Params.featured" true) }}
 +```
 +
 +```go-html-template
 +{{/* layouts/index.html */}}
 +{{ range partial "GetFeatured.html" 5 }}
 +  [...]
 +{{ end }}
 +```
 +### Example GetImage
 +```go-html-template
 +{{/* layouts/partials/GetImage.html */}}
 +{{ $image := false }}
 +{{ with .Params.gallery }}
 +  {{ $image = index . 0 }}
 +{{ end }}
 +{{ with .Params.image }}
 +  {{ $image = . }}
 +{{ end }}
 +{{ return $image }}
 +```
 +
 +```go-html-template
 +{{/* layouts/_default/single.html */}}
 +{{ with partial "GetImage.html" . }}
 +  [...]
 +{{ end }}
 +```
 +
 +{{% note %}}
 +Only one `return` statement is allowed per partial file.
 +{{% /note %}}
 +
 +## 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](https://spf13.com/):
 +
 +{{< 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 >}}
 +
 +{{% 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](https://spf13.com/):
 +
 +{{< code file="layouts/partials/footer.html" download="footer.html" >}}
 +<footer>
 +  <div>
 +    <p>
 +    &copy; 2013-14 Steve Francia.
 +    <a href="https://creativecommons.org/licenses/by/3.0/" title="Creative Commons Attribution">Some rights reserved</a>;
- <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>
++    please attribute properly and link back.
 +    </p>
 +  </div>
 +</footer>
 +{{< /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 ee179787f6fa14ca8b7498798c55c732692c5dd8,0000000000000000000000000000000000000000..0eba974703b0be8bad4b15754922e4437e95743d
mode 100644,000000..100644
--- /dev/null
@@@ -1,92 -1,0 +1,92 @@@
- Hugo ships with its own [RSS 2.0 template](#the-embedded-rss-xml). The embedded template will be sufficient for most use cases.
 +---
 +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
 +keywords: [rss, xml, templates]
 +categories: [templates]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 150
 +weight: 150
 +sections_weight: 150
 +draft: false
 +toc: true
 +---
 +
 +## RSS Template Lookup Order
 +
 +See [Template Lookup Order](/templates/lookup-order/) for the complete reference.
 +
 +{{% note "Hugo Ships with an RSS Template" %}}
++Hugo ships with its own [RSS 2.0 template](#the-embedded-rssxml). The embedded template will be sufficient for most use cases.
 +{{% /note %}}
 +
 +RSS pages are of the type `Page` and have all the [page variables](/variables/page/) available to use in the templates.
 +
 +### Section RSS
 +
 +A [section’s][section] RSS will be rendered at `/<SECTION>/index.xml` (e.g., [https://spf13.com/project/index.xml](https://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
 +
 +The table below shows the RSS template lookup order for the different page kinds. The first listing shows the lookup order when running with a theme (`demoTheme`).
 +
 +{{< datatable-filtered "output" "layouts" "OutputFormat == RSS" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
 +
 +## 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:
 +
 +```toml
 +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:
 +
 +https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml
 +
 +## Reference your RSS Feed in `<head>`
 +
 +In your `header.html` template, you can specify your RSS feed in your `<head></head>` tag using Hugo's [Output Formats][Output Formats] like this:
 +
 +```go-html-template
 +{{ range .AlternativeOutputFormats -}}
 +    {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
 +{{ end -}}
 +```
 +
 +If you only want the RSS link, you can query the formats:
 +
 +```go-html-template
 +{{ with .OutputFormats.Get "rss" -}}
 +    {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
 +{{ end -}}
 +```
 +
 +Either of the two snippets above will generate the below `link` tag on the site homepage for RSS output:
 +
 +```html
 +<link rel="alternate" type="application/rss+xml" href="https://example.com/index.xml" title="Site Title">
 +```
 +
 +_We are assuming `BaseURL` to be `https://example.com/` and `$.Site.Title` to be `"Site Title"` in this example._
 +
 +[config]: /getting-started/configuration/
 +[embedded]: #the-embedded-rss-xml
 +[RSS 2.0]: https://cyber.harvard.edu/rss/rss.html "RSS 2.0 Specification"
 +[section]: /content-management/sections/
 +[Output Formats]: /templates/output-formats/#link-to-output-formats
index 7f8a92d34874d1affa5b169c3ede65c6d1c01800,0000000000000000000000000000000000000000..56600e1f0d860499973342946c351d00c28bb410
mode 100644,000000..100644
--- /dev/null
@@@ -1,34 -1,0 +1,34 @@@
- * [Hokus CMS](https://github.com/julianoappelklein/hokus). Hokus CMS is an open source, multiplatform, easy to use, desktop application for Hugo. Build from simple to complex user interfaces for Hugo websites by choosing from a dozen ready-to-use components — all for free, with no vendor lock-in.
 +---
 +title: Frontend Interfaces with Hugo
 +linktitle: Frontends
 +description: Do you prefer a graphical user interface over a text editor? Give these frontends a try.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [developer tools]
 +keywords: [frontend,gui]
 +menu:
 +  docs:
 +    parent: "tools"
 +    weight: 40
 +weight: 40
 +sections_weight: 40
 +draft: false
 +aliases: []
 +toc: false
 +---
 +
 +* [enwrite](https://github.com/zzamboni/enwrite). Enwrite enables evernote-powered, statically generated blogs and websites. Now posting to your blog or updating your website is as easy as writing a new note in Evernote!
 +* [Lipi](https://github.com/SohanChy/Lipi). Lipi is a native GUI frontend written in Java to manage your Hugo websites.
 +* [Netlify CMS](https://netlifycms.org). Netlify CMS is an open source, serverless solution for managing Git based content in static sites, and it works on any platform that can host static sites. A [Hugo/Netlify CMS starter](https://github.com/netlify-templates/one-click-hugo-cms) is available to get new projects running quickly.
++* [Hokus CMS](https://github.com/julianoappelklein/hokus). Hokus CMS is an open source, multi-platform, easy to use, desktop application for Hugo. Build from simple to complex user interfaces for Hugo websites by choosing from a dozen ready-to-use components — all for free, with no vendor lock-in.
 +
 +
 +## Commercial Services
 +
 +* [Appernetic.io](https://appernetic.io) is a Hugo Static Site Generator as a Service that is easy to use for non-technical users.
 +    * **Features:** inline PageDown editor, visual tree view, image upload and digital asset management with Cloudinary, site preview, continuous integration with GitHub, atomic deploy and hosting, Git and Hugo integration, autosave, custom domain, project syncing, theme cloning and management. Developers have complete control over the source code and can manage it with GitHub’s deceptively simple workflow.
 +* [DATOCMS](https://www.datocms.com) DatoCMS is a fully customizable administrative area for your static websites. Use your favorite website generator, let your clients publish new content independently, and the host the site anywhere you like.
 +* [Forestry.io](https://forestry.io/). Forestry is a git-backed CMS for Hugo, Gatsby, Jekyll and VuePress websites with support for GitHub, GitLab, Bitbucket and Azure Devops. Forestry provides a nice user interface to edit and model content for non technical editors. It supports S3, Cloudinary and Netlify Large Media integrations for storing media. Every time an update is made via the CMS, Forestry will commit changes back to your repo and vice-versa.
 +* [Netlify.com](https://www.netlify.com). Netlify builds, deploys, and hosts your static website or app (Hugo, Jekyll, etc). Netlify offers a drag-and-drop interface and automatic deployments from GitHub or Bitbucket.
 +    * **Features:** global CDN, atomic deploys, ultra-fast DNS, instant cache invalidation, high availability, automated hosting, Git integration, form submission hooks, authentication providers, and custom domains. Developers have complete control over the source code and can manage it with GitHub or Bitbucket's deceptively simple workflow.
index 3dd334bef3b346d7d7169d9bd4761670d0791072,0000000000000000000000000000000000000000..481ef1bac78a3e12091fb841a8b7aec34c6ecdf3
mode 100644,000000..100644
--- /dev/null
@@@ -1,87 -1,0 +1,87 @@@
- - [dokuwiki-to-hugo](https://github.com/wgroeneveld/dokuwiki-to-hugo) - Migrates your dokuwiki source pages from [DokuWiki syntax](https://www.dokuwiki.org/wiki:syntax) to Hugo Markdown syntax. Includes extra's like the TODO plugin. Written with extensibility in mind using python 3. Also generates a TOML header for each page. Designed to copypaste the wiki directory into your /content directory.
 +---
 +title: Migrate to Hugo
 +linktitle: Migrations
 +description: A list of community-developed tools for migrating from your existing static site generator or content management system to Hugo.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +keywords: [migrations,jekyll,wordpress,drupal,ghost,contentful]
 +menu:
 +  docs:
 +    parent: "tools"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/developer-tools/migrations/,/developer-tools/migrated/]
 +toc: true
 +---
 +
 +This section highlights some projects around Hugo that are independently developed. These tools try to extend the functionality of our static site generator or help you to get started.
 +
 +{{% note %}}
 +Do you know or maintain a similar project around Hugo? Feel free to open a [pull request](https://github.com/gohugoio/hugoDocs/pulls) on GitHub if you think it should be added.
 +{{% /note %}}
 +
 +Take a look at this list of migration tools if you currently use other blogging tools like Jekyll or WordPress but intend to switch to Hugo instead. They'll take care to export your content into Hugo-friendly formats.
 +
 +## Jekyll
 +
 +Alternatively, you can use the new [Jekyll import command](/commands/hugo_import_jekyll/).
 +
 +- [JekyllToHugo](https://github.com/SenjinDarashiva/JekyllToHugo) - A Small script for converting Jekyll blog posts to a Hugo site.
 +- [ConvertToHugo](https://github.com/coderzh/ConvertToHugo) - Convert your blog from Jekyll to Hugo.
 +
 +## Ghost
 +
 +- [ghostToHugo](https://github.com/jbarone/ghostToHugo) - Convert Ghost blog posts and export them to Hugo.
 +
 +## Octopress
 +
 +- [octohug](https://github.com/codebrane/octohug) - Octopress to Hugo migrator.
 +
 +## DokuWiki
 +
- - [exitwp-for-hugo](https://github.com/wooni005/exitwp-for-hugo) - A python script which works with the xml export from Wordpress and converts Wordpress pages and posts to Markdown and YAML for hugo.
++- [dokuwiki-to-hugo](https://github.com/wgroeneveld/dokuwiki-to-hugo) - Migrates your DokuWiki source pages from [DokuWiki syntax](https://www.dokuwiki.org/wiki:syntax) to Hugo Markdown syntax. Includes extra's like the TODO plugin. Written with extensibility in mind using python 3. Also generates a TOML header for each page. Designed to copypaste the wiki directory into your /content directory.
 +
 +## WordPress
 +
 +- [wordpress-to-hugo-exporter](https://github.com/SchumacherFM/wordpress-to-hugo-exporter) - A one-click WordPress plugin that converts all posts, pages, taxonomies, metadata, and settings to Markdown and YAML which can be dropped into Hugo. (Note: If you have trouble using this plugin, you can [export your site for Jekyll](https://wordpress.org/plugins/jekyll-exporter/) and use Hugo's built in Jekyll converter listed above.)
- - [wordhugopress](https://github.com/nantipov/wordhugopress) - A small utility written in Java, exports the entire WordPress site from the database and resource (e.g. images) files stored locally or remotelly. Therefore, migration from the backup files is possible. Supports merging of the multiple WordPress sites into a single Hugo one.
++- [exitwp-for-hugo](https://github.com/wooni005/exitwp-for-hugo) - A python script which works with the xml export from WordPress and converts WordPress pages and posts to Markdown and YAML for hugo.
 +- [blog2md](https://github.com/palaniraja/blog2md) - Works with [exported xml](https://en.support.wordpress.com/export/) file of your free YOUR-TLD.wordpress.com website. It also saves approved comments to `YOUR-POST-NAME-comments.md` file along with posts.
- - [medium-to-hugo](https://github.com/bgadrian/medium-to-hugo) - CLI tool written in Go to export medium posts into a Hugo compatible Markdown format. Tags and images are included. All images will be downloaded locally and linked appropriately. 
++- [wordhugopress](https://github.com/nantipov/wordhugopress) - A small utility written in Java, exports the entire WordPress site from the database and resource (e.g. images) files stored locally or remotely. Therefore, migration from the backup files is possible. Supports merging of the multiple WordPress sites into a single Hugo one.
 +
 +## Medium
 +
 +- [medium2md](https://github.com/gautamdhameja/medium-2-md) - A simple Medium to Hugo exporter able to import stories in one command, including Front Matter.
- - [blog2md](https://github.com/palaniraja/blog2md) - Works with [exported xml](https://support.google.com/blogger/answer/41387?hl=en) file of your YOUR-TLD.blogspot.com website. It also saves comments to `YOUR-POST-NAME-comments.md` file along with posts. 
++- [medium-to-hugo](https://github.com/bgadrian/medium-to-hugo) - CLI tool written in Go to export medium posts into a Hugo compatible Markdown format. Tags and images are included. All images will be downloaded locally and linked appropriately.
 +
 +## Tumblr
 +
 +- [tumblr-importr](https://github.com/carlmjohnson/tumblr-importr) - An importer that uses the Tumblr API to create a Hugo static site.
 +- [tumblr2hugomarkdown](https://github.com/Wysie/tumblr2hugomarkdown) - Export all your Tumblr content to Hugo Markdown files with preserved original formatting.
 +- [Tumblr to Hugo](https://github.com/jipiboily/tumblr-to-hugo) - A migration tool that converts each of your Tumblr posts to a content file with a proper title and path. Furthermore, "Tumblr to Hugo" creates a CSV file with the original URL and the new path on Hugo, to help you setup the redirections.
 +
 +## Drupal
 +
 +- [drupal2hugo](https://github.com/danapsimer/drupal2hugo) - Convert a Drupal site to Hugo.
 +
 +## Joomla
 +
 +- [hugojoomla](https://github.com/davetcc/hugojoomla) - This utility written in Java takes a Joomla database and converts all the content into Markdown files. It changes any URLs that are in Joomla's internal format and converts them to a suitable form.
 +
 +## Blogger
 +
 +- [blogimport](https://github.com/natefinch/blogimport) - A tool to import from Blogger posts to Hugo.
 +- [blogger-to-hugo](https://bitbucket.org/petraszd/blogger-to-hugo) - Another tool to import Blogger posts to Hugo. It also downloads embedded images so they will be stored locally.
- - [BlogML2Hugo](https://github.com/jijiechen/BlogML2Hugo) - A tool that helps you convert BlogML xml file to Hugo markdown files. Users need to take care of links to attachments and images by themselves. This helps the blogs that export BlogML files (e.g. BlogEngine.NET) tramsform to hugo sites easily.
++- [blog2md](https://github.com/palaniraja/blog2md) - Works with [exported xml](https://support.google.com/blogger/answer/41387?hl=en) file of your YOUR-TLD.blogspot.com website. It also saves comments to `YOUR-POST-NAME-comments.md` file along with posts.
 +- [BloggerToHugo](https://github.com/huanlin/blogger-to-hugo) - Yet another tool to import Blogger posts to Hugo. For Windows platform only, and .NET Framework 4.5 is required. See README.md before using this tool.
 +
 +## Contentful
 +
 +- [contentful2hugo](https://github.com/ArnoNuyts/contentful2hugo) - A tool to create content-files for Hugo from content on [Contentful](https://www.contentful.com/).
 +
 +
 +## BlogML
 +
++- [BlogML2Hugo](https://github.com/jijiechen/BlogML2Hugo) - A tool that helps you convert BlogML xml file to Hugo markdown files. Users need to take care of links to attachments and images by themselves. This helps the blogs that export BlogML files (e.g. BlogEngine.NET) transform to hugo sites easily.
index f51498b1fa34ce8e9426b16199489b5760846195,0000000000000000000000000000000000000000..dec87d72c56c14b9f8d557f30c85ca57712c524c
mode 100644,000000..100644
--- /dev/null
@@@ -1,35 -1,0 +1,35 @@@
- * [hugofastsearch](https://gist.github.com/cmod/5410eae147e4318164258742dd053993). A usability and speed update to "Github Gist for Fuse.js integration" — global, keyboard-optimized search. 
 +---
 +title: Search for your Hugo Website
 +linktitle: Search
 +description: See some of the open-source and commercial search options for your newly created Hugo website.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-26
 +categories: [developer tools]
 +keywords: [search,tools]
 +menu:
 +  docs:
 +    parent: "tools"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +aliases: []
 +toc: true
 +---
 +
 +A static website with a dynamic search function? Yes, Hugo provides an alternative to embeddable scripts from Google or other search engines for static websites. Hugo allows you to provide your visitors with a custom search function by indexing your content files directly.
 +
 +* [GitHub Gist for Hugo Workflow](https://gist.github.com/sebz/efddfc8fdcb6b480f567). This gist contains a simple workflow to create a search index for your static website. It uses a simple Grunt script to index all your content files and [lunr.js](https://lunrjs.com/) to serve the search results.
 +* [hugo-elasticsearch](https://www.npmjs.com/package/hugo-elasticsearch). Generate [Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html) indexes for Hugo static sites by parsing front matter. Hugo-Elasticsearch will generate a newline delimited JSON (NDJSON) file that can be bulk uploaded into Elasticsearch using any one of the available [clients](https://www.elastic.co/guide/en/elasticsearch/client/index.html).
 +* [hugo-lunr](https://www.npmjs.com/package/hugo-lunr). A simple way to add site search to your static Hugo site using [lunr.js](https://lunrjs.com/). Hugo-lunr will create an index file of any html and markdown documents in your Hugo project.
 +* [hugo-lunr-zh](https://www.npmjs.com/package/hugo-lunr-zh). A bit like Hugo-lunr, but Hugo-lunr-zh can help you separate the Chinese keywords.
 +* [Github Gist for Fuse.js integration](https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae). This gist demonstrates how to leverage Hugo's existing build time processing to generate a searchable JSON index used by [Fuse.js](https://fusejs.io/) on the client side. Although this gist uses Fuse.js for fuzzy matching, any client side search tool capable of reading JSON indexes will work. Does not require npm, grunt or other build-time tools except Hugo!
 +* [hugo-search-index](https://www.npmjs.com/package/hugo-search-index). A library containing Gulp tasks and a prebuilt browser script that implements search. Gulp generates a search index from project markdown files.
++* [hugofastsearch](https://gist.github.com/cmod/5410eae147e4318164258742dd053993). A usability and speed update to "GitHub Gist for Fuse.js integration" — global, keyboard-optimized search.
 +
 +## Commercial Search Services
 +
 +* [Algolia](https://www.algolia.com/)'s Search API makes it easy to deliver a great search experience in your apps and websites. Algolia Search provides hosted full-text, numerical, faceted, and geolocalized search.
 +* [Bonsai](https://www.bonsai.io) is a fully-managed hosted Elasticsearch service that is fast, reliable, and simple to set up. Easily ingest your docs from Hugo into Elasticsearch following [this guide from the docs](https://docs.bonsai.io/docs/hugo).
 +* [ExpertRec](https://www.expertrec.com/) is a hosted search-as-a-service solution that is fast and scalable. Set-up and integration is extremely easy and takes only a few minutes. The search settings can be modified without coding using a dashboard.
index 3b0e937258164603b474e0fe97dd7dcf1de149b6,0000000000000000000000000000000000000000..3170dc7d848924dc6c7d5848ee0f09c32082e2a3
mode 100644,000000..100644
--- /dev/null
@@@ -1,26 -1,0 +1,23 @@@
- title: Troubleshoot 
 +---
- weight: 1     
++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: 1
++weight: 1
 +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 46f3e8cd552c46e8fc93917b646c76f401df1a72,0000000000000000000000000000000000000000..1934bc5e5ddf6b0fad9095a93c732ac13dcfce1c
mode 100644,000000..100644
--- /dev/null
@@@ -1,56 -1,0 +1,56 @@@
- Is your markdown file [in draft mode](https://gohugo.io/content-management/front-matter/#front-matter-variables)? When testing, run `hugo server` with the `-D` or `--buildDrafts` [switch](https://gohugo.io/getting-started/usage/#draft-future-and-expired-content). 
 +---
 +title: Frequently Asked Questions
 +linktitle: FAQ
 +description: Solutions to some common Hugo problems.
 +date: 2018-02-10
 +categories: [troubleshooting]
 +menu:
 +  docs:
 +    parent: "troubleshooting"
 +keywords: [faqs]
 +weight: 2
 +toc: true
 +aliases: [/faq/]
 +---
 +
 +{{% note %}}
 +**Note:** The answers/solutions presented below are short, and may not be enough to solve your problem. Visit [Hugo Discourse](https://discourse.gohugo.io/) and use the search. It that does not help, start a new topic and ask your questions.
 +{{% /note %}}
 +
 +## I can't see my content!
 +
++Is your markdown file [in draft mode](https://gohugo.io/content-management/front-matter/#front-matter-variables)? When testing, run `hugo server` with the `-D` or `--buildDrafts` [switch](https://gohugo.io/getting-started/usage/#draft-future-and-expired-content).
 +
 +## Can I set configuration variables via OS environment?
 +
 +Yes you can! See [Configure with Environment Variables](/getting-started/configuration/#configure-with-environment-variables).
 +
 +## How do I schedule posts?
 +
 +1. Set `publishDate` in the page [Front Matter](/content-management/front-matter/) to a date in the future.
 +2. Build and publish at intervals.
 +
 +How to automate the "publish at intervals" part depends on your situation:
 +
 +* If you deploy from your own PC/server, you can automate with [Cron](https://en.wikipedia.org/wiki/Cron) or similar.
 +* If your site is hosted on a service similar to [Netlify](https://www.netlify.com/) you can use a service such as [ifttt](https://ifttt.com/date_and_time) to schedule the updates.
 +
 +Also see this Twitter thread:
 +
 +{{< tweet 962380712027590657 >}}
 +
 +## Can I use the latest Hugo version on Netlify?
 +
 +Yes you can! Read [this](/hosting-and-deployment/hosting-on-netlify/#configure-hugo-version-in-netlify).
 +
 +## I get "TOCSS ... this feature is not available in your current Hugo version"
 +
 +If you process `SCSS` or `SASS` to `CSS` in your Hugo project, you need the Hugo `extended` version, or else you may see this error message:
 +
 +```bash
 +error: failed to transform resource: TOCSS: failed to transform "scss/main.scss" (text/x-scss): this feature is not available in your current Hugo version
 +```
 +
 +We release two set of binaries for technical reasons. The extended version is not what you get by default for some installation methods. On the [release page](https://github.com/gohugoio/hugo/releases), look for archives with `extended` in the name. To build `hugo-extended`, use `go install --tags extended`
 +
 +To confirm, run `hugo version` and look for the word `extended`.
index 51cd5475648257d078917b1c3ff3c4a0374da2d5,0000000000000000000000000000000000000000..1769fa688d12dbd980090e94c20782af0498eb04
mode 100644,000000..100644
--- /dev/null
@@@ -1,54 -1,0 +1,54 @@@
- .File.ContentBaseName 
 +---
 +title: File Variables
 +linktitle:
 +description: "You can access filesystem-related data for a content file in the `.File` variable."
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [variables and params]
 +keywords: [files]
 +draft: false
 +menu:
 +  docs:
 +    parent: "variables"
 +    weight: 40
 +weight: 40
 +sections_weight: 40
 +aliases: [/variables/file-variables/]
 +toc: false
 +---
 +
 +{{% note "Rendering Local Files" %}}
 +For information on creating shortcodes and templates that tap into Hugo's file-related feature set, see [Local File Templates](/templates/files/).
 +{{% /note %}}
 +
 +The `.File` object contains the following fields:
 +
 +.File.Path
 +: the original relative path of the page, relative to the content dir (e.g., `posts/foo.en.md`)
 +
 +.File.LogicalName
 +: the name of the content file that represents a page (e.g., `foo.en.md`)
 +
 +.File.TranslationBaseName
 +: the filename without extension or optional language identifier (e.g., `foo`)
 +
-   
++.File.ContentBaseName
 +: is a either TranslationBaseName or name of containing folder if file is a leaf bundle.
++
 +.File.BaseFileName
 +: the filename without extension (e.g., `foo.en`)
 +
 +.File.Ext
 +: the file extension of the content file (e.g., `md`); this can also be called using `.File.Extension` as well. Note that it is *only* the extension without `.`.
 +
 +.File.Lang
 +: the language associated with the given file if Hugo's [Multilingual features][multilingual] are enabled (e.g., `en`)
 +
 +.File.Dir
 +: given the path `content/posts/dir1/dir2/`, the relative directory path of the content file will be returned (e.g., `posts/dir1/dir2/`). Note that the path separator (`\` or `/`) could be dependent on the operating system.
 +
 +.File.UniqueID
 +: the MD5-checksum of the content file's path.
 +
 +[Multilingual]: /content-management/multilingual/
index 0de5bd794240153ac495e4297f0450217973bb01,0000000000000000000000000000000000000000..7b1e6601f533a77a49cfb99545fd7e092735d2ff
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,49 @@@
- Page's `.Hugo` is deprecated and will be removed in a future release. Use the global `hugo` function.  
 +---
 +title: Hugo-specific Variables
 +linktitle: Hugo Variables
 +description: The `.Hugo` variable provides easy access to Hugo-related data.
 +date: 2017-03-12
 +publishdate: 2017-03-12
 +lastmod: 2017-03-12
 +categories: [variables and params]
 +keywords: [hugo,generator]
 +draft: false
 +menu:
 +  docs:
 +    parent: "variables"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +aliases: []
 +toc: false
 +wip: false
 +---
 +
 +{{% warning "Deprecated" %}}
++Page's `.Hugo` is deprecated and will be removed in a future release. Use the global `hugo` function.
 +For example: `hugo.Generator`.
 +{{% /warning %}}
 +
 +It contains the following fields:
 +
 +.Hugo.Generator
 +: `<meta>` tag for the version of Hugo that generated the site. `.Hugo.Generator` outputs a *complete* HTML tag; e.g. `<meta name="generator" content="Hugo 0.18" />`
 +
 +.Hugo.Version
 +: the current version of the Hugo binary you are using e.g. `0.13-DEV`<br>
 +
 +.Hugo.Environment
 +: the current running environment as defined through the `--environment` cli tag.
 +
 +.Hugo.CommitHash
 +: the git commit hash of the current Hugo binary e.g. `0e8bed9ccffba0df554728b46c5bbf6d78ae5247`
 +
 +.Hugo.BuildDate
 +: the compile date of the current Hugo binary formatted with RFC 3339 e.g. `2002-10-02T10:00:00-05:00`<br>
 +
 +
 +
 +{{% note "Use the Hugo Generator Tag" %}}
 +We highly recommend using `.Hugo.Generator` in your website's `<head>`. `.Hugo.Generator` is included by default in all themes hosted on [themes.gohugo.io](https://themes.gohugo.io). The generator tag allows the Hugo team to track the usage and popularity of Hugo.
 +{{% /note %}}
 +
index 109810803ff6f4ad1a43d1412f08fe9a39b96785,0000000000000000000000000000000000000000..eac45d20ac81bc9ce3c441d114e5226999662c9d
mode 100644,000000..100644
--- /dev/null
@@@ -1,731 -1,0 +1,731 @@@
-       title = "Switching from Wordpress to Hugo"
 +[[article]]
 +      title = "A visit to the Workshop: Hugo/Unix/Vim integration"
 +      url = "https://blog.afoolishmanifesto.com/posts/hugo-unix-vim-integration/"
 +      author = "fREW Schmidt"
 +      date = "2017-07-22"
 +
 +[[article]]
 +      title = "Hugo Easy Gallery - Automagical PhotoSwipe image gallery with a one-line shortcode"
 +      url = "https://www.liwen.id.au/heg/"
 +      author = "Li-Wen Yip"
 +      date = "2017-03-25"
 +
 +[[article]]
 +      title = "Automagical Image Gallery in Hugo with PhotoSwipe and jQuery"
 +      url = "https://www.liwen.id.au/photoswipe/"
 +      author = "Li-Wen Yip"
 +      date = "2017-03-04"
 +
 +[[article]]
 +      title = "Adding Isso Comments to Hugo"
 +      url = "https://stiobhart.net/2017-02-24-isso-comments/"
 +      author = "Stíobhart Matulevicz"
 +      date = "2017-02-24"
 +
 +[[article]]
 +      title = "Hugo Tutorial: How to Build & Host a (Very Fast) Static E-Commerce Site"
 +      url = "https://snipcart.com/blog/hugo-tutorial-static-site-ecommerce"
 +      author = "Snipcart"
 +      date = "2017-02-23"
 +
 +[[article]]
 +      title = "How to Password Protect a Hugo Site"
 +      url = "https://www.aerobatic.com/blog/password-protect-a-hugo-site/"
 +      author = "Aerobatic"
 +      date = "2017-02-19"
 +
 +[[article]]
-       title = "Building our site: From Django & Wordpress to a static generator (Part I)"
++      title = "Switching from WordPress to Hugo"
 +      url = "http://schnuddelhuddel.de/switching-from-wordpress-to-hugo/"
 +      author = "Mario Martelli"
 +      date = "2017-02-19"
 +
 +[[article]]
 +      title = "Zero to HTTP/2 with AWS and Hugo"
 +      url = "https://habd.as/zero-to-http-2-aws-hugo/"
 +      author = "Josh Habdas"
 +      date = "2017-02-16"
 +
 +[[article]]
 +      title = "Deploy a Hugo site to Aerobatic with CircleCI"
 +      url = "https://www.aerobatic.com/blog/hugo-github-circleci/"
 +      author = "Aerobatic"
 +      date = "2017-02-14"
 +
 +[[article]]
 +      title = "NPM scripts for building and deploying Hugo site"
 +      url = "https://www.aerobatic.com/blog/hugo-npm-buildtool-setup/"
 +      author = "Aerobatic"
 +      date = "2017-02-12"
 +
 +[[article]]
 +      title = "Getting started with Hugo and the plain-blog theme, on NearlyFreeSpeech.Net"
 +      url = "https://www.penwatch.net/cms/get_started_plain_blog/"
 +      author = "Li-aung “Lewis” Yip"
 +      date = "2017-02-12"
 +
 +[[article]]
 +      title = "Choose Hugo over Jekyll"
 +      url = "https://habd.as/choose-hugo-over-jekyll/"
 +      author = "Josh Habdas"
 +      date = "2017-02-10"
 +
 +[[article]]
 +      title = "Build a Hugo site using Cloud9 IDE and host on App Engine"
 +      url = "https://loyall.ch/lab/2017/01/build-a-static-website-with-cloud9-hugo-and-app-engine/"
 +      author = "Pascal Aubort"
 +      date = "2017-02-05"
 +
 +[[article]]
 +      title = "Hugo Continuous Deployment with Bitbucket Pipelines and Aerobatic"
 +      url = "https://www.aerobatic.com/blog/hugo-bitbucket-pipelines/"
 +      author = "Aerobatic"
 +      date = "2017-02-04"
 +
 +[[article]]
 +      title = "How to use Firebase to host a Hugo site"
 +      url = "https://code.selfmadefighter.com/post/static-site-firebase/"
 +      author = "Andrew Cuga"
 +      date= "2017-02-04"
 +
 +[[article]]
 +      title = "A publishing workflow for teams using static site generators"
 +      url = "https://www.keybits.net/post/publishing-workflow-for-teams-using-static-site-generators/"
 +      author = "Tom Atkins"
 +      date = "2017-01-02"
 +
 +[[article]]
 +      title = "How To Dynamically Use Google Fonts In A Hugo Website"
 +      url = "https://stoned.io/web-development/hugo/How-To-Dynamically-Use-Google-Fonts-In-A-Hugo-Website/"
 +      author = "Hash Borgir"
 +      date = "2016-10-27"
 +
 +[[article]]
 +      title = "Embedding Facebook In A Hugo Template"
 +      url = "https://stoned.io/web-development/hugo/Embedding-Facebook-In-A-Hugo-Template/"
 +      author = "Hash Borgir"
 +      date = "2016-10-22"
 +
 +[[article]]
 +      title = "通过 Gitlab-cl 将 Hugo blog 自动部署至 GitHub <small>(Chinese, Continuous integration)</small>"
 +      url = "https://zetaoyang.github.io/post/2016/10/17/gitlab-cl.html"
 +      author = "Zetao Yang"
 +      date = "2016-10-17"
 +
 +[[article]]
 +      title = "A Step-by-Step Guide: Hugo on Netlify"
 +      url = "https://www.netlify.com/blog/2016/09/21/a-step-by-step-guide-hugo-on-netlify/"
 +      author = "Eli Williamson"
 +      date = "2016-09-21"
 +
 +[[article]]
++      title = "Building our site: From Django & WordPress to a static generator (Part I)"
 +      url = "https://tryolabs.com/blog/2016/09/20/building-our-site-django-wordpress-to-static-part-i/"
 +      author = "Alan Descoins"
 +      date = "2016-09-20"
 +
 +[[article]]
 +      title = "Webseitenmaschine - Statische Websites mit Hugo erzeugen <small>(German, $)</small>"
 +      url = "http://www.heise.de/ct/ausgabe/2016-12-Statische-Websites-mit-Hugo-erzeugen-3211704.html"
 +      author = "Christian Helmbold"
 +      date = "2016-05-27"
 +
 +[[article]]
 +      title = "Cómo hacer sitios web estáticos con Hugo y Go - Platzi <small>(Video tutorial)</small>"
 +      url = "https://www.youtube.com/watch?v=qaXXpdiCHXE"
 +      author = "Verónica López"
 +      date = "2016-04-06"
 +
 +[[article]]
 +      title = "CDNOverview: A CDN comparison site made with Hugo"
 +      url = "https://www.cloakfusion.com/cdnoverview-cdn-comparison-site-made-hugo/"
 +      author = "Thijs de Zoete"
 +      date = "2016-02-23"
 +
 +[[article]]
 +      title = "Hugo: A Modern WebSite Engine That Just Works"
 +      url = "https://github.com/shekhargulati/52-technologies-in-2016/blob/master/07-hugo/README.md"
 +      author = "Shekhar Gulati"
 +      date = "2016-02-14"
 +
 +[[article]]
 +      title = "Minify Hugo Generated HTML"
 +      url = "http://ratson.name/blog/minify-hugo-generated-html/"
 +      author = "Ratson"
 +      date = "2016-02-02"
 +
 +[[article]]
 +      title = "<span lang='ja'>HugoのデプロイをWerckerからCircle CIに変更した</span> - log"
 +      url = "http://log.deprode.net/logs/2016-01-17/"
 +      author = "Deprode"
 +      date = "2016-01-17"
 +
 +[[article]]
 +      title = "Static site generators: el futuro de las webs estáticas<br>(Hugo, Jekyll, Flask y otros)"
 +      url = "http://sitelabs.es/static-site-generators-futuro-las-webs-estaticas/"
 +      author = "Eneko Sarasola"
 +      date = "2016-01-09"
 +
 +[[article]]
 +      title = "Writing a Lambda Function for Hugo"
 +      url = "https://blog.jolexa.net/post/writing-a-lambda-function-for-hugo/"
 +      author = "Jeremy Olexa"
 +      date = "2016-01-01"
 +
 +[[article]]
 +      title = "Ein Blog mit Hugo erstellen - Tutorial <small>(Deutsch/German)</small>"
 +      url = "http://privat.albicker.org/tags/hugo.html"
 +      author = "Bernhard Albicker"
 +      date = "2015-12-30"
 +
 +[[article]]
 +      title = "How to host Hugo static website generator on AWS Lambda"
 +      url = "http://bezdelev.com/post/hugo-aws-lambda-static-website/"
 +      author = "Ilya Bezdelev"
 +      date = "2015-12-15"
 +
 +[[article]]
 +      title = "Migrating from Pelican to Hugo"
 +      url = "http://www.softinio.com/post/migrating-from-pelican-to-hugo/"
 +      author = "Salar Rahmanian"
 +      date = "2015-11-29"
 +
 +[[article]]
 +      title = "Static Website Generators Reviewed: Jekyll, Middleman, Roots, Hugo"
 +      url = "http://www.smashingmagazine.com/2015/11/static-website-generators-jekyll-middleman-roots-hugo-review/"
 +      author = "Mathias Biilmann Christensen"
 +      date = "2015-11-16"
 +
 +[[article]]
 +      title = "How To Deploy a Hugo Site to Production with Git Hooks on Ubuntu 14.04"
 +      url = "https://www.digitalocean.com/community/tutorials/how-to-deploy-a-hugo-site-to-production-with-git-hooks-on-ubuntu-14-04"
 +      author = "Justin Ellingwood"
 +      date = "2015-11-12"
 +
 +[[article]]
 +      title = "How To Install and Use Hugo, a Static Site Generator, on Ubuntu 14.04"
 +      url = "https://www.digitalocean.com/community/tutorials/how-to-install-and-use-hugo-a-static-site-generator-on-ubuntu-14-04"
 +      author = "Justin Ellingwood"
 +      date = "2015-11-09"
 +
 +[[article]]
 +      title = "Switching from Wordpress to Hugo"
 +      url = "http://justinfx.com/2015/11/08/switching-from-wordpress-to-hugo/"
 +      author = "Justin Israel"
 +      date = "2015-11-08"
 +
 +[[article]]
 +      title = "Hands-on Experience with Hugo as a Static Site Generator"
 +      url = "http://usersnap.com/blog/hands-on-experience-with-hugo-static-site-generator/"
 +      author = "Thomas Peham"
 +      date = "2015-10-15"
 +
 +[[article]]
 +      title = "Statische Webseites mit Hugo erstellen/Vortrag mit Foliensatz (deutsch)"
 +      url = "http://sfd.koelnerlinuxtreffen.de/2015/HaraldWeidner/"
 +      author = "Harald Weidner"
 +      date = "2015-09-19"
 +
 +[[article]]
 +      title = "Moving from WordPress to Hugo"
 +      url = "http://abhipandey.com/2015/09/moving-to-hugo/"
 +      author = "Abhishek Pandey"
 +      date = "2015-09-15"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>通过webhook将Hugo自动部署至GitHub Pages和GitCafe Pages</span> <small>(Automated&nbsp;deployment)</small>"
 +      url = "http://blog.coderzh.com/2015/09/13/use-webhook-automated-deploy-hugo/"
 +      author = "CoderZh"
 +      date = "2015-09-13"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>使用hugo搭建个人博客站点</span> <small>(Using Hugo to build a personal blog site)</small>"
 +      url = "http://blog.coderzh.com/2015/08/29/hugo/"
 +      author = "CoderZh"
 +      date = "2015-08-29"
 +
 +[[article]]
 +      title = "Good-Bye Wordpress, Hello Hugo! <small>(German)</small>"
 +      url = "http://blog.arminhanisch.de/2015/08/blog-migration-zu-hugo/"
 +      author = "Armin Hanisch"
 +      date = "2015-08-18"
 +
 +[[article]]
 +      title = "Générer votre site web statique avec Hugo <small>(Generate your static site with Hugo)<small>"
 +      url = "http://www.linux-pratique.com/?p=191"
 +      author = "Benoît Benedetti"
 +      date = "2015-06-26"
 +
 +[[article]]
 +      title = "<span lang='ja'>Hugo向けの新しいテーマを作った</span> <small>(I created a new theme for Hugo)<small>"
 +      url = "https://yet.unresolved.xyz/blog/2016/10/03/how-to-make-of-hugo-theme/"
 +      author = "Daisuke Tsuji"
 +      date = "2015-06-20"
 +
 +[[article]]
 +      title = "Hugo - Gerando um site com conteúdo estático. (Portuguese Brazil)"
 +      url = "http://blog.ffrizzo.com/posts/hugo/"
 +      author = "Fabiano Frizzo"
 +      date = "2015-06-02"
 +
 +[[article]]
 +      title = "An Introduction to Static Site Generators"
 +      url = "http://davidwalsh.name/introduction-static-site-generators"
 +      author = "Eduardo Bouças"
 +      date = "2015-05-20"
 +
 +[[article]]
 +      title = "Hugo Still Rules"
 +      url = "http://cheekycoder.com/2015/05/hugo-still-rules/"
 +      author = "Cheeky Coder"
 +      date = "2015-05-18"
 +
 +[[article]]
 +      title = "hugo - Static Site Generator"
 +      url = "http://gscacco.github.io/post/hugo/"
 +      author = "G Scaccoio"
 +      date = "2015-05-04"
 +
 +[[article]]
 +      title = "<span lang='ja'>WindowsでHugoを使う</span>"
 +      url = "http://ureta.net/2015/05/hugo-on-windows/"
 +      author = "<span lang='ja'>うれ太郎</span>"
 +      date = "2015-05-01"
 +
 +[[article]]
 +      title = "<span lang='ja'>Hugoのshortcodesを用いてサイトにスライドなどを埋め込む</span>"
 +      url = "http://blog.yucchiy.com/2015/04/29/hugo-shortcode/"
 +      author = "Yucchiy"
 +      date = "2015-04-29"
 +
 +[[article]]
 +      title = "<span lang='ja'>HugoとCircleCIでGitHub PagesにBlogを公開してみたら超簡単だった</span>"
 +      url = "http://hori-ryota.github.io/blog/create-blog-with-hugo-and-circleci/"
 +      author = "Hori Ryota"
 +      date = "2015-04-17"
 +
 +[[article]]
 +      title = "10 Best Static Site Generators"
 +      url = "http://beebom.com/2015/04/best-static-site-generators"
 +      author = "Aniruddha Mysore"
 +      date = "2015-04-06"
 +
 +[[article]]
 +      title = "Goodbye WordPress; Hello Hugo"
 +      url = "http://willwarren.com/2015/04/05/goodbye-wordpress-hello-hugo/"
 +      author = "Will Warren"
 +      date = "2015-04-05"
 +
 +[[article]]
 +      title = "Static Websites with Hugo on Google Cloud Storage"
 +      url = "http://www.moxie.io/post/static-websites-with-hugo-on-google-cloud-storage/"
 +      author = "Moxie Input/Output"
 +      date = "2015-04-02"
 +
 +[[article]]
 +      title = "De nuevo iniciando un blog"
 +      url = "https://alvarolizama.net/"
 +      author = "Alvaro Lizama"
 +      date = "2015-03-29"
 +
 +[[article]]
 +      title = "We moved our blog from Posthaven to Hugo after only three posts. Why?"
 +      url = "http://blog.hypriot.com/post/moved-from-posthaven-to-hugo/"
 +      author = "Hypriot"
 +      date = "2015-03-27"
 +
 +[[article]]
 +      title = "Top Static Site Generators in 2015"
 +      url = "http://superdevresources.com/static-site-generators-2015/"
 +      author = "Kanishk Kunal"
 +      date = "2015-03-12"
 +
 +[[article]]
 +      title = "Moving to Hugo"
 +      url = "http://abiosoft.com/moving-to-hugo/"
 +      author = "Abiola Ibrahim"
 +      date = "2015-03-08"
 +
 +[[article]]
 +      title = "Migrating a blog (yes, this one!) from Wordpress to Hugo"
 +      url = "http://justindunham.net/migrating-from-wordpress-to-hugo/"
 +      author = "Justin Dunham"
 +      date = "2015-02-13"
 +
 +[[article]]
 +      title = "<span lang='ja'>blogをoctopressからHugoに乗り換えたメモ</span>"
 +      url = "http://blog.jigyakkuma.org/2015/02/11/hugo/"
 +      author = "jigyakkuma"
 +      date = "2015-02-11"
 +
 +[[article]]
 +      title = "<span lang='ja'>Hugoでブログをつくった</span>"
 +      url = "http://porgy13.github.io/post/new-hugo-blog/"
 +      author = "porgy13"
 +      date = "2015-02-07"
 +
 +[[article]]
 +      title = "<span lang='ja'>Hugoにブログを移行した</span>"
 +      url = "http://keichi.net/post/first/"
 +      author = "Keichi Takahashi"
 +      date = "2015-02-04"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>Hugo静态网站生成器中文教程</span>"
 +      url = "http://nanshu.wang/post/2015-01-31/"
 +      author = "Nanshu Wang"
 +      date = "2015-01-31"
 +
 +[[article]]
 +      title = "<span lang='ja'>Hugo + Github Pages + Wercker CI = ¥0(無料)<br>でコマンド 1 発(自動化)でサイト<br>・ブログを公開・運営・分析・収益化</span>"
 +      url = "http://qiita.com/yoheimuta/items/8a619cac356bed89a4c9"
 +      author = "Yohei Yoshimuta"
 +      date = "2015-01-31"
 +
 +[[article]]
 +      title = "Running Hugo websites on anynines"
 +      url = "http://blog.anynines.com/running-hugo-websites-on-anynines/"
 +      author = "Julian Weber"
 +      date = "2015-01-30"
 +
 +[[article]]
 +      title = "MiddlemanからHugoへ移行した"
 +      url = "http://re-dzine.net/2015/01/hugo/"
 +      author = "Haruki Konishi"
 +      date = "2015-01-21"
 +
 +[[article]]
 +      title = "WordPress から Hugo に乗り換えました"
 +      url = "http://rakuishi.com/archives/wordpress-to-hugo/"
 +      author = "rakuishi"
 +      date = "2015-01-20"
 +
 +[[article]]
 +      title = "HUGOを使ってサイトを立ち上げる方法"
 +      url = "http://qiita.com/syui/items/869538099551f24acbbf"
 +      author = "Syui"
 +      date = "2015-01-17"
 +
 +[[article]]
 +      title = "<span lang='ja'>Jekyllが許されるのは小学生までだよね</span>"
 +      url = "http://t32k.me/mol/log/hugo/"
 +      author = "Ishimoto Koji"
 +      date = "2015-01-16"
 +
 +[[article]]
 +      title = "Getting started with Hugo"
 +      url = "http://anthonyfok.org/post/getting-started-with-hugo/"
 +      author = "Anthony Fok"
 +      date = "2015-01-12"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>把这个博客静态化了</span> <small>(Migrate to Hugo)</small>"
 +      url = "http://lich-eng.com/2015/01/03/migrate-to-hugo/"
 +      author = "Li Cheng"
 +      date = "2015-01-03"
 +
 +[[article]]
 +      title = "Porting my blog with Hugo"
 +      url = "http://blog.srackham.com/posts/porting-my-blog-with-hugo/"
 +      author = "Stuart Rackham"
 +      date = "2014-12-30"
 +
 +[[article]]
 +      title = "Hugoを使ってみたときのメモ"
 +      url = "http://machortz.github.io/posts/usinghugo/"
 +      author = "Machortz"
 +      date = "2014-12-29"
 +
 +[[article]]
 +      title = "OctopressからHugoへ移行した"
 +      url = "http://deeeet.com/writing/2014/12/25/hugo/"
 +      author = "Taichi Nakashima"
 +      date = "2014-12-25"
 +
 +[[article]]
 +      title = "Migrating to Hugo From Octopress"
 +      url = "http://nathanleclaire.com/blog/2014/12/22/migrating-to-hugo-from-octopress/"
 +      author = "Nathan LeClaire"
 +      date = "2014-12-22"
 +
 +[[article]]
 +      title = "Dynamic Pages with GoHugo.io"
 +      url = "http://cyrillschumacher.com/2014/12/21/dynamic-pages-with-gohugo.io/"
 +      author = "Cyrill Schumacher"
 +      date = "2014-12-21"
 +
 +[[article]]
 +      title = "6 Static Blog Generators That Aren’t Jekyll"
 +      url = "http://www.sitepoint.com/6-static-blog-generators-arent-jekyll/"
 +      author = "David Turnbull"
 +      date = "2014-12-08"
 +
 +[[article]]
 +      title = "Travel Blogging Setup"
 +      url = "http://www.stou.dk/2014/11/travel-blogging-setup/"
 +      author = "Rasmus Stougaard"
 +      date = "2014-11-23"
 +
 +[[article]]
 +      title = "Hosting A Hugo Website Behind Nginx"
 +      url = "http://www.bigbeeconsultants.co.uk/blog/hosting-hugo-website-behind-nginx"
 +      author = "Rick Beton"
 +      date = "2014-11-20"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>使用Hugo搭建免费个人Blog</span> <small>(How to use Hugo)</small>"
 +      url = "http://ulricqin.com/post/how-to-use-hugo/"
 +      author = "Ulric Qin <span lang='zh-CN'>秦晓辉</span>"
 +      date = "2014-11-11"
 +
 +[[article]]
 +      title = "Built in Speed and Built for Speed by Hugo"
 +      url = "http://cheekycoder.com/2014/10/built-for-speed-by-hugo/"
 +      author = "Cheeky Coder"
 +      date = "2014-10-30"
 +
 +[[article]]
 +      title = "Hugo para crear sitios web estáticos"
 +      url = "http://www.webbizarro.com/noticias/1076/hugo-para-crear-sitios-web-estaticos/"
 +      author = "Web Bizarro"
 +      date = "2014-08-19"
 +
 +[[article]]
 +      title = "Going with hugo"
 +      url = "http://www.markuseliasson.se/article/going-with-hugo/"
 +      author = "Markus Eliasson"
 +      date = "2014-08-18"
 +
 +[[article]]
 +      title = "Benchmarking Jekyll, Hugo and Wintersmith"
 +      url = "http://fredrikloch.me/post/2014-08-12-Jekyll-and-its-alternatives-from-a-site-generation-point-of-view/"
 +      author = "Fredrik Loch"
 +      date = "2014-08-12"
 +
 +[[article]]
 +      title = "Goodbye Octopress, Hello Hugo!"
 +      url = "http://andreimihu.com/blog/2014/08/11/goodbye-octopress-hello-hugo/"
 +      author = "Andrei Mihu"
 +      date = "2014-08-11"
 +
 +[[article]]
 +      title = "Beautiful sites for Open Source projects"
 +      url = "http://beautifulopen.com/2014/08/09/hugo/"
 +      author = "Beautiful Open"
 +      date = "2014-08-09"
 +
 +[[article]]
 +      title = "Hugo: Beyond the Defaults"
 +      url = "http://npf.io/2014/08/hugo-beyond-the-defaults/"
 +      author = "Nate Finch"
 +      date = "2014-08-08"
 +
 +[[article]]
 +      title = "First Impressions of Hugo"
 +      url = "https://peteraba.com/blog/first-impressions-of-hugo/"
 +      author = "Peter Aba"
 +      date = "2014-06-06"
 +
 +[[article]]
 +      title = "New Site Workflow"
 +      url = "http://vurt.co.uk/post/new_website/"
 +      author = "Giles Paterson"
 +      date = "2014-08-05"
 +
 +[[article]]
 +      title = "How I Learned to Stop Worrying and Love the (Static) Web"
 +      url = "http://cognition.ca/post/about-hugo/"
 +      author = "Joshua McKenty"
 +      date = "2014-08-04"
 +
 +[[article]]
 +      title = "Hugo - Static Site Generator"
 +      url = "http://kenwoo.io/blog/hugo---static-site-generator/"
 +      author = "Kenny Woo"
 +      date = "2014-08-03"
 +
 +[[article]]
 +      title = "Hugo Is Friggin' Awesome"
 +      url = "http://npf.io/2014/08/hugo-is-awesome/"
 +      author = "Nate Finch"
 +      date = "2014-08-01"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>再次搬家</span> <small>(Move from WordPress to Hugo)</small>"
 +      url = "http://www.chingli.com/misc/move-from-wordpress-to-hugo/"
 +      author = "<span lang='zh-CN'>青砾</span> (chingli)"
 +      date = "2014-07-12"
 +
 +[[article]]
 +      title = "Embedding Gists in Hugo"
 +      url = "http://danmux.com/posts/embedded_gists/"
 +      author = "Dan Mull"
 +      date = "2014-07-05"
 +
 +[[article]]
 +      title = "An Introduction To Hugo"
 +      url = "http://www.cirrushosting.com/web-hosting-blog/an-introduction-to-hugo/"
 +      author = "Dan Silber"
 +      date = "2014-07-01"
 +
 +[[article]]
 +      title = "Moving to Hugo"
 +      url = "http://danmux.com/posts/hugo_based_blog/"
 +      author = "Dan Mull"
 +      date = "2014-05-29"
 +
 +[[article]]
 +      title = "<span lang='zh-CN'>开源之静态站点生成器排行榜</span><br><small>(Leaderboard of open-source static website generators)</small>"
 +      url = "http://code.csdn.net/news/2819909"
 +      author = "CSDN.net"
 +      date = "2014-05-23"
 +
 +[[article]]
 +      title = "Finally, a satisfying and effective blog setup"
 +      url = "http://michaelwhatcott.com/now-powered-by-hugo/"
 +      author = "Michael Whatcott"
 +      date = "2014-05-20"
 +
 +[[article]]
 +      title = "Hugo from scratch"
 +      url = "http://zackofalltrades.com/notes/2014/05/hugo-from-scratch/"
 +      author = "Zack Williams"
 +      date = "2014-05-18"
 +
 +[[article]]
 +      title = "Why I switched away from Jekyll"
 +      url = "http://www.jakejanuzelli.com/why-I-switched-away-from-jekyll/"
 +      author = "Jake Januzelli"
 +      date = "2014-05-10"
 +
 +[[article]]
 +      title = "Welcome our new blog"
 +      url = "http://blog.ninya.io/posts/welcome-our-new-blog/"
 +      author = "Ninya.io"
 +      date = "2014-04-11"
 +
 +[[article]]
 +      title = "Mission Not Accomplished"
 +      url = "http://johnsto.co.uk/blog/mission-not-accomplished/"
 +      author = "Dave Johnston"
 +      date = "2014-04-03"
 +
 +[[article]]
 +      title = "Hugo - A Static Site Builder in Go"
 +      url = "http://deepfriedcode.com/post/hugo/"
 +      author = "Deep Fried Code"
 +      date = "2014-03-30"
 +
 +[[article]]
 +      title = "Adventures in Angular Podcast"
 +      url = "http://devchat.tv/adventures-in-angular/003-aia-gdes"
 +      author = "Matias Niemela"
 +      date = "2014-03-28"
 +
 +[[article]]
 +      title = "Hugo"
 +      url = "http://bra.am/post/hugo/"
 +      author = "bra.am"
 +      date = "2014-03-23"
 +
 +[[article]]
 +      title = "Converting Blogger To Markdown"
 +      url = "http://trishagee.github.io/project/atom-to-hugo/"
 +      author = "Trisha Gee"
 +      date = "2014-03-20"
 +
 +[[article]]
 +      title = "Moving to Hugo Static Web Pages"
 +      url = "http://tepid.org/tech/hugo-web/"
 +      author = "Tobias Weingartner"
 +      date = "2014-03-16"
 +
 +[[article]]
 +      title = "New Blog Engine: Hugo"
 +      url = "https://blog.afoolishmanifesto.com/posts/hugo/"
 +      author = "fREW Schmidt"
 +      date = "2014-03-15"
 +
 +[[article]]
 +      title = "Hugo + gulp.js = Huggle"
 +      url = "http://ktmud.github.io/huggle/en/intro/)"
 +      author = "Jesse Yang <span lang='zh-CN'>杨建超</span>"
 +      date = "2014-03-08"
 +
 +[[article]]
 +      title = "Powered by Hugo"
 +      url = "http://kieranhealy.org/blog/archives/2014/02/24/powered-by-hugo/"
 +      author = "Kieran Healy"
 +      date = "2014-02-24"
 +
 +[[article]]
 +      title = "<span lang='ja'>静的サイトを素早く構築するために<br>GoLangで作られたジェネレータHugo</span>"
 +      url = "http://hamasyou.com/blog/2014/02/21/hugo/"
 +      author = "<div lang='ja' style='line-height: 1.1;'>Shogo Hamada<br>濱田章吾</div>"
 +      date = "2014-02-21"
 +
 +[[article]]
 +      title = "Latest Roundup of Useful Tools For Developers"
 +      url = "http://codegeekz.com/latest-roundup-of-useful-tools-for-developers/"
 +      author = "CodeGeekz"
 +      date = "2014-02-13"
 +
 +[[article]]
 +      title = "Hugo: Static Site Generator written in Go"
 +      url = "http://www.braveterry.com/2014/02/06/hugo-static-site-generator-written-in-go/"
 +      author = "Brave Terry"
 +      date = "2014-02-06"
 +
 +[[article]]
 +      title = "10 Useful HTML5 Tools for Web Designers and Developers"
 +      url = "http://designdizzy.com/10-useful-html5-tools-for-web-designers-and-developers/"
 +      author = "Design Dizzy"
 +      date = "2014-02-04"
 +
 +[[article]]
 +      title = "Hugo – Fast, Flexible Static Site Generator"
 +      url = "http://cube3x.com/hugo-fast-flexible-static-site-generator/"
 +      author = "Joby Joseph"
 +      date = "2014-01-18"
 +
 +[[article]]
 +      title = "Hugo: A new way to build static website"
 +      url = "http://www.w3update.com/opensource/hugo-a-new-way-to-build-static-website.html"
 +      author = "w3update"
 +      date = "2014-01-17"
 +
 +[[article]]
 +      title = "Xaprb now uses Hugo"
 +      url = "http://xaprb.com/blog/2014/01/15/using-hugo/"
 +      author = "Baron Schwartz"
 +      date = "2014-01-15"
 +
 +[[article]]
 +      title = "New jQuery Plugins And Resources That Web Designers Need"
 +      url = "http://www.designyourway.net/blog/resources/new-jquery-plugins-and-resources-that-web-designers-need/"
 +      author = "Design Your Way"
 +      date = "2014-01-01"
 +
 +[[article]]
 +      title = "On Blog Construction"
 +      url = "http://alexla.sh/post/on-blog-construction/"
 +      author = "Alexander Lash"
 +      date = "2013-12-27"
 +
 +[[article]]
 +      title = "Hugo"
 +      url = "http://onethingwell.org/post/69070926608/hugo"
 +      author = "One Thing Well"
 +      date = "2013-12-05"
 +
 +[[article]]
 +      title = "In Praise Of Hugo"
 +      url = "http://sound-guru.com/blog/post/hello-world/"
 +      author = "sound-guru.com"
 +      date = "2013-10-19"
 +
 +[[article]]
 +      title = "Hosting a blog on S3 and Cloudfront"
 +      url = "http://www.danesparza.net/2013/07/hosting-a-blog-on-s3-and-cloudfront/"
 +      author = "Dan Esparza"
 +      date = "2013-07-24"
index 6a0714c1d426037535056b5329a670a5651a98e7,0000000000000000000000000000000000000000..daac3cbabaedf43f731042e97da95055f0479da2
mode 100644,000000..100644
--- /dev/null
@@@ -1,31 -1,0 +1,31 @@@
- HUGO_VERSION = "0.71.1"
 +[build]
 +publish = "public"
 +command = "hugo --gc --minify"
 +
 +[context.production.environment]
- HUGO_VERSION = "0.71.1"
++HUGO_VERSION = "0.72.0"
 +HUGO_ENV = "production"
 +HUGO_ENABLEGITINFO = "true"
 +
 +[context.split1]
 +command = "hugo --gc --minify --enableGitInfo"
 +
 +[context.split1.environment]
- HUGO_VERSION = "0.71.1"
++HUGO_VERSION = "0.72.0"
 +HUGO_ENV = "production"
 +
 +[context.deploy-preview]
 +command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
 +
 +[context.deploy-preview.environment]
- HUGO_VERSION = "0.71.1"
++HUGO_VERSION = "0.72.0"
 +
 +[context.branch-deploy]
 +command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
 +
 +[context.branch-deploy.environment]
++HUGO_VERSION = "0.72.0"
 +
 +[context.next.environment]
 +HUGO_ENABLEGITINFO = "true"
 +
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2c9364c35c9f2aa56b4da2d4fda7864155067dbf
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..95df22ec1dc74d82233fed0a8f6d99b361514488
new file mode 100644 (file)
Binary files differ