]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Merge commit '9aec42c5452b3eb224888c50ba1c3f3b68a447e9'
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 24 Sep 2023 09:54:45 +0000 (11:54 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 24 Sep 2023 09:54:45 +0000 (11:54 +0200)
18 files changed:
1  2 
docs/content/en/about/hugo-and-gdpr.md
docs/content/en/commands/hugo_gen_chromastyles.md
docs/content/en/commands/hugo_gen_doc.md
docs/content/en/commands/hugo_mod_get.md
docs/content/en/content-management/comments.md
docs/content/en/content-management/image-processing/index.md
docs/content/en/content-management/urls.md
docs/content/en/getting-started/configuration-markup.md
docs/content/en/getting-started/directory-structure.md
docs/content/en/getting-started/glossary.md
docs/content/en/hosting-and-deployment/hosting-on-firebase.md
docs/content/en/hosting-and-deployment/hosting-on-github/index.md
docs/content/en/showcase/digitalgov/featured.png
docs/content/en/templates/rss.md
docs/content/en/tools/migrations.md
docs/content/en/troubleshooting/faq.md
docs/content/en/variables/git.md
docs/netlify.toml

index d82368afc68a8d55206040ccc00eace998f6b0e0,0000000000000000000000000000000000000000..85e996f5949a3712ef1a8b64ad4efc3da6b19eb7
mode 100644,000000..100644
--- /dev/null
@@@ -1,134 -1,0 +1,134 @@@
- : 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.
 +---
 +title: Hugo and the General Data Protection Regulation
 +linkTitle: Hugo and the GDPR
 +description: About how to configure your Hugo site to meet the new regulations.
 +layout: single
 +keywords: ["GDPR", "Privacy", "Data Protection"]
 +menu:
 +  docs:
 +    parent: about
 +    weight: 60
 +weight: 60
 +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 configuration** 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 configuration (e.g. `hugo.toml`).
 +
 +{{< code-toggle file="hugo" >}}
 +[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
 +enableDNT = false
 +simple = false
 +[privacy.youtube]
 +disable = false
 +privacyEnhanced = false
 +{{< /code-toggle >}}
 +
 +## Disable all services
 +
 +An example privacy configuration that disables all the relevant services in Hugo. With this configuration, the other settings will not matter.
 +
 +{{< code-toggle file="hugo" >}}
 +[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.
 +
 +{{% note %}}
 +`useSessionStorage` is not supported when using Google Analytics v4 (gtag.js).
 +{{% /note %}}
 +
 +### 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 inline styles provided by Hugo:
 +
 + {{< code-toggle file="hugo" >}}
 +[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 inline styles provided by Hugo:
 +
 + {{< code-toggle file="hugo" >}}
 +[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
 +
 +enableDNT
 +: Enabling this for the vimeo shortcode, the Vimeo player will be blocked from tracking any session data, including all cookies and stats.
 +
 +simple
++: If simple mode is enabled, the video thumbnail is fetched from Vimeo's servers and it is overlaid 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 bcb2fbf083cfea0671a583d60bd514a04044bef6,0000000000000000000000000000000000000000..3ec890412c6630c3f57d8947293436df12992321
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,49 @@@
-       --highlightStyle string   style used for highlighting lines (see https://github.com/alecthomas/chroma) (default "bg:#ffffcc")
 +---
 +title: "hugo gen chromastyles"
 +slug: hugo_gen_chromastyles
 +url: /commands/hugo_gen_chromastyles/
 +---
 +## hugo gen chromastyles
 +
 +Generate CSS stylesheet for the Chroma code highlighter
 +
 +### Synopsis
 +
 +Generate CSS stylesheet for the Chroma code highlighter for a given style. This stylesheet is needed if markup.highlight.noClasses is disabled in config.
 +
 +See https://xyproto.github.io/splash/docs/all.html for a preview of the available styles
 +
 +```
 +hugo gen chromastyles [flags] [args]
 +```
 +
 +### Options
 +
 +```
 +  -h, --help                    help for chromastyles
++      --highlightStyle string   style used for highlighting lines (see https://github.com/alecthomas/chroma)
 +      --linesStyle string       style used for line numbers (see https://github.com/alecthomas/chroma)
 +      --style string            highlighter style (see https://xyproto.github.io/splash/docs/) (default "friendly")
 +```
 +
 +### Options inherited from parent commands
 +
 +```
 +      --clock string               set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00
 +      --config string              config file (default is hugo.yaml|json|toml)
 +      --configDir string           config dir (default "config")
 +      --debug                      debug output
 +  -d, --destination string         filesystem path to write files to
 +  -e, --environment string         build environment
 +      --ignoreVendorPaths string   ignores any _vendor for module paths matching the given Glob pattern
 +      --logLevel string            log level (debug|info|warn|error)
 +      --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
 +```
 +
 +### SEE ALSO
 +
 +* [hugo gen](/commands/hugo_gen/)      - A collection of several useful generators.
 +
index d0b01a938ad6e87e9e416f0cf523dd4a50ab1453,0000000000000000000000000000000000000000..13fb231061c891f690558ae048efae6108590336
mode 100644,000000..100644
--- /dev/null
@@@ -1,50 -1,0 +1,50 @@@
-       
 +---
 +title: "hugo gen doc"
 +slug: hugo_gen_doc
 +url: /commands/hugo_gen_doc/
 +---
 +## hugo gen doc
 +
 +Generate Markdown documentation for the Hugo CLI.
 +
 +### Synopsis
 +
 +Generate Markdown documentation for the Hugo CLI.
 +                      This command is, mostly, used to create up-to-date documentation
 +      of Hugo's command-line interface for https://gohugo.io/.
++
 +      It creates one Markdown file per command with front matter suitable
 +      for rendering in Hugo.
 +
 +```
 +hugo gen doc [flags] [args]
 +```
 +
 +### Options
 +
 +```
 +      --dir string   the directory to write the doc. (default "/tmp/hugodoc/")
 +  -h, --help         help for doc
 +```
 +
 +### Options inherited from parent commands
 +
 +```
 +      --clock string               set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00
 +      --config string              config file (default is hugo.yaml|json|toml)
 +      --configDir string           config dir (default "config")
 +      --debug                      debug output
 +  -d, --destination string         filesystem path to write files to
 +  -e, --environment string         build environment
 +      --ignoreVendorPaths string   ignores any _vendor for module paths matching the given Glob pattern
 +      --logLevel string            log level (debug|info|warn|error)
 +      --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
 +```
 +
 +### SEE ALSO
 +
 +* [hugo gen](/commands/hugo_gen/)      - A collection of several useful generators.
 +
index 784e81f44522c36c27167ee5dd9f5181f2c6d111,0000000000000000000000000000000000000000..f4803d723aa7aa1913cb39771705391ca4a8f06d
mode 100644,000000..100644
--- /dev/null
@@@ -1,70 -1,0 +1,75 @@@
- Install the latest versions of all module dependencies:
 +---
 +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 direct module dependencies:
++
++    hugo mod get
++    hugo mod get ./... (recursive)
++
++Install the latest versions of all module dependencies (direct and indirect):
 +
 +    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 --ignoreVendorPaths 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] [args]
 +```
 +
 +### Options
 +
 +```
 +  -h, --help   help for get
 +```
 +
 +### Options inherited from parent commands
 +
 +```
 +      --clock string               set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00
 +      --config string              config file (default is hugo.yaml|json|toml)
 +      --configDir string           config dir (default "config")
 +      --debug                      debug output
 +  -d, --destination string         filesystem path to write files to
 +  -e, --environment string         build environment
 +      --ignoreVendorPaths string   ignores any _vendor for module paths matching the given Glob pattern
 +      --logLevel string            log level (debug|info|warn|error)
 +      --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
 +```
 +
 +### SEE ALSO
 +
 +* [hugo mod](/commands/hugo_mod/)      - Various Hugo Modules helpers.
 +
index 751fb89bfce5589a5ff7c808268fec52785a8c1f,0000000000000000000000000000000000000000..df9453c484d08f39e25694a3e1c827444837ddc6
mode 100644,000000..100644
--- /dev/null
@@@ -1,71 -1,0 +1,72 @@@
 +---
 +title: 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.
 +keywords: [sections,content,organization]
 +categories: [project organization]
 +menu:
 +  docs:
 +    parent: content-management
 +    weight: 220
 +toc: true
 +weight: 220
 +aliases: [/extras/comments/]
 +---
 +
 +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 = "yourDisqusShortname"
 +{{</ 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](/templates/internal/#disqus) available, to render it add the following code where you want comments to appear:
 +
 +```go-html-template
 +{{ template "_internal/disqus.html" . }}
 +```
 +
 +## Alternatives
 +
 +These are some alternatives to Disqus:
 +
 +* [Cactus Comments](https://cactus.chat/docs/integrations/hugo/) (Open Source, Matrix appservice, Docker install)
 +* [Commento](https://commento.io/) (Open Source, available as a service, local install, or docker image)
++* [Giscus](https://giscus.app/) (Open source, comments system powered by GitHub Discussions)
 +* [Graph Comment](https://graphcomment.com/)
 +* [Hyvor Talk](https://talk.hyvor.com/) (Available as a service)
 +* [IntenseDebate](https://intensedebate.com/)
 +* [Isso](https://isso-comments.de/) (Self-hosted, Python) ([tutorial][issotutorial])
 +* [Muut](https://muut.com/)
 +* [Remark42](https://remark42.com/) (Open source, Golang, Easy to run docker)
 +* [ReplyBox](https://getreplybox.com/)
 +* [Staticman](https://staticman.net/)
 +* [Talkyard](https://blog-comments.talkyard.io/) (Open source, & serverless hosting)
 +* [Utterances](https://utteranc.es/) (Open source, GitHub comments widget built on GitHub issues)
 +
 +[configuration]: /getting-started/configuration/
 +[disquspartial]: /templates/internal/#disqus
 +[disqussetup]: https://disqus.com/profile/signup/
 +[forum]: https://discourse.gohugo.io
 +[front matter]: /content-management/front-matter/
 +[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 124cadc68eb014fa56ab6c2aae4460e34421fdae,0000000000000000000000000000000000000000..3e9513a7528b29e03598cff32ed7aa335963e080
mode 100644,000000..100644
--- /dev/null
@@@ -1,518 -1,0 +1,518 @@@
- When using the [`Crop`] or [`Fill`] method, the _anchor_ determines the placement of the crop box. You may specify `TopLeft`, `Top`, `TopRight`, `Left`, `Center`,`Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`.
 +---
 +title: Image processing
 +description: Resize, crop, rotate, filter, and convert images.
 +categories: [fundamentals,content management]
 +keywords: [resources, images]
 +menu:
 +  docs:
 +    parent: content-management
 +    weight: 90
 +toc: true
 +weight: 90
 +---
 +## Image resources
 +
 +To process an image you must access the file as a page resource, global resource, or remote resource.
 +
 +### Page resource
 +
 +A page resource is a file within a [page bundle]. A page bundle is a directory with an `index.md` or `_index.md` file at its root.
 +
 +```text
 +content/
 +└── posts/
 +    └── post-1/           <-- page bundle
 +        ├── index.md
 +        └── sunset.jpg    <-- page resource
 +```
 +
 +To access an image as a page resource:
 +
 +```go-html-template
 +{{ $image := .Resources.Get "sunset.jpg" }}
 +```
 +
 +### Global resource
 +
 +A global resource is a file within the `assets` directory, or within any directory [mounted] to the `assets` directory.
 +
 +```text
 +assets/
 +└── images/
 +    └── sunset.jpg    <-- global resource
 +```
 +
 +To access an image as a global resource:
 +
 +```go-html-template
 +{{ $image := resources.Get "images/sunset.jpg" }}
 +```
 +
 +### Remote resource
 +
 +A remote resource is a file on a remote server, accessible via http or https. To access an image as a remote resource:
 +
 +```go-html-template
 +{{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }}
 +```
 +
 +## Image rendering
 +
 +Once you have accessed an image as either a page resource or a global resource, render it in your templates using the `Permalink`, `RelPermalink`, `Width`, and `Height` properties.
 +
 +Example 1: Throws an error if the resource is not found.
 +
 +```go-html-template
 +{{ $image := .Resources.GetMatch "sunset.jpg" }}
 +<img src="{{ $image.RelPermalink }}" width="{{ $image.Width }}" height="{{ $image.Height }}">
 +```
 +
 +Example 2: Skips image rendering if the resource is not found.
 +
 +```go-html-template
 +{{ $image := .Resources.GetMatch "sunset.jpg" }}
 +{{ with $image }}
 +  <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 +{{ end }}
 +```
 +
 +Example 3: A more concise way to skip image rendering if the resource is not found.
 +
 +```go-html-template
 +{{ with .Resources.GetMatch "sunset.jpg" }}
 +  <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 +{{ end }}
 +```
 +
 +Example 4: Skips rendering if there's problem accessing a remote resource.
 +
 +```go-html-template
 +{{ $u := "https://gohugo.io/img/hugo-logo.png" }}
 +{{ with resources.GetRemote $u }}
 +  {{ with .Err }}
 +    {{ errorf "%s" . }}
 +  {{ else }}
 +    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 +  {{ end }}
 +{{ else }}
 +  {{ errorf "Unable to get remote resource %q" $u }}
 +{{ end }}
 +```
 +
 +## Image processing methods
 +
 +The `image` resource implements the  [`Process`],  [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods.
 +
 +{{% note %}}
 +Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the [`Exif`] method with the _original_ image to extract EXIF metadata from JPEG or TIFF images.
 +{{% /note %}}
 +
 +### Process
 +
 +{{< new-in "0.119.0" >}}
 +
 +Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`]. 
 +
 +See [Options](#image-processing-options) for available options.
 +
 +You can also use this method apply image processing that does not need any scaling, e.g. format conversions:
 +
 +```go-html-template
 +{{/* Convert the image from JPG to PNG. */}}
 +{{ $png := $jpg.Process "png" }}
 +```
 +
 +Some more examples:
 +
 +```go-html-template
 +{{/* Rotate the image 90 degrees counter-clockwise. */}}
 +{{ $image := $image.Process "r90" }}
 +
 +{{/* Scaling actions. */}}
 +{{ $image := $image.Process "resize 600x" }}
 +{{ $image := $image.Process "crop 600x400" }}
 +{{ $image := $image.Process "fit 600x400" }}
 +{{ $image := $image.Process "fill 600x400" }}
 +```
 +
 +
 +### Resize
 +
 +Resize an image to the specified width and/or height.
 +
 +If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio.
 +
 +```go-html-template
 +{{/* Resize to a width of 600px and preserve aspect ratio */}}
 +{{ $image := $image.Resize "600x" }}
 +
 +{{/* Resize to a height of 400px and preserve aspect ratio */}}
 +{{ $image := $image.Resize "x400" }}
 +
 +{{/* Resize to a width of 600px and a height of 400px */}}
 +{{ $image := $image.Resize "600x400" }}
 +```
 +
 +### Fit
 +
 +Downscale an image to fit the given dimensions while maintaining aspect ratio. You must provide both width and height.
 +
 +```go-html-template
 +{{ $image := $image.Fit "600x400" }}
 +```
 +
 +### Fill
 +
 +Crop and resize an image to match the given dimensions. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point.
 +
 +```go-html-template
 +{{ $image := $image.Fill "600x400" }}
 +```
 +
 +### Crop
 +
 +Crop an image to match the given dimensions without resizing. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point.
 +
 +```go-html-template
 +{{ $image := $image.Crop "600x400" }}
 +```
 +
 +### Filter
 +
 +Apply one or more [filters] to an image.
 +
 +```go-html-template
 +{{ $image := $image.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
 +```
 +
 +Write this in a more functional style using pipes. Hugo applies the filters in the order given.
 +
 +```go-html-template
 +{{ $image := $image | images.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
 +```
 +
 +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) }}
 +{{ $image1 := $image1.Filter $filters }}
 +{{ $image2 := $image2.Filter $filters }}
 +```
 +
 +### Colors
 +
 +{{< new-in "0.104.0" >}}
 +
 +`.Colors` returns a slice of hex strings with the dominant colors in the image using a simple histogram method.
 +
 +```go-html-template
 +{{ $colors := $image.Colors }}
 +```
 +
 +This method is fast, but if you also scale down your images, it would be good for performance to extract the colors from the scaled down image.
 +
 +
 +### EXIF
 +
 +Provides an [EXIF] object containing image metadata.
 +
 +You may access EXIF data in JPEG and TIFF images. To prevent errors when processing images without EXIF data, wrap the access in a [`with`] statement.
 +
 +```go-html-template
 +{{ with $image.Exif }}
 +  Date: {{ .Date }}
 +  Lat/Long: {{ .Lat }}/{{ .Long }}
 +  Tags:
 +  {{ range $k, $v := .Tags }}
 +    TAG: {{ $k }}: {{ $v }}
 +  {{ end }}
 +{{ end }}
 +```
 +
 +You may also access EXIF fields individually, using the [`lang.FormatNumber`] function to format the fields as needed.
 +
 +```go-html-template
 +{{ with $image.Exif }}
 +  <ul>
 +    {{ with .Date }}<li>Date: {{ .Format "January 02, 2006" }}</li>{{ end }}
 +    {{ with .Tags.ApertureValue }}<li>Aperture: {{ lang.FormatNumber 2 . }}</li>{{ end }}
 +    {{ with .Tags.BrightnessValue }}<li>Brightness: {{ lang.FormatNumber 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 }}
 +```
 +
 +#### EXIF variables
 +
 +.Date
 +: Image creation date/time. Format with the [time.Format] function.
 +
 +.Lat
 +: GPS latitude in degrees.
 +
 +.Long
 +: GPS longitude in degrees.
 +
 +.Tags
 +: A collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection in the [site configuration](#exif-data).
 +
 +## Image processing options
 +
 +The [`Resize`], [`Fit`], [`Fill`], and [`Crop`] methods accept a space-separated, case-insensitive list of options. The order of the options within the list is irrelevant.
 +
 +### Dimensions
 +
 +With the [`Resize`] method you must specify width, height, or both. The [`Fit`], [`Fill`], and [`Crop`] methods require both width and height. All dimensions are in pixels.
 +
 +```go-html-template
 +{{ $image := $image.Resize "600x" }}
 +{{ $image := $image.Resize "x400" }}
 +{{ $image := $image.Resize "600x400" }}
 +{{ $image := $image.Fit "600x400" }}
 +{{ $image := $image.Fill "600x400" }}
 +{{ $image := $image.Crop "600x400" }}
 +```
 +
 +### Rotation
 +
 +Rotates an image counter-clockwise by the given angle. Hugo performs rotation _before_ scaling. For example, if the original image is 600x400 and you wish to rotate the image 90 degrees counter-clockwise while scaling it by 50%:
 +
 +```go-html-template
 +{{ $image = $image.Resize "200x r90" }}
 +```
 +
 +In the example above, the width represents the desired width _after_ rotation.
 +
 +To rotate an image without scaling, use the dimensions of the original image:
 +
 +```go-html-template
 +{{ with .Resources.GetMatch "sunset.jpg" }}
 +  {{ with .Resize (printf "%dx%d r90" .Height .Width) }}
 +    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 +  {{ end }}
 +{{ end }}
 +```
 +
 +In the example above, on the second line, we have reversed width and height to reflect the desired dimensions _after_ rotation.
 +
 +### Anchor
 +
++When using the [`Crop`] or [`Fill`] method, the _anchor_ determines the placement of the crop box. You may specify `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`.
 +
 +The default value is `Smart`, which uses [Smartcrop] image analysis to determine the optimal placement of the crop box. You may override the default value in the [site configuration].
 +
 +For example, if you have a 400x200 image with a bird in the upper left quadrant, you can create a 200x100 thumbnail containing the bird:
 +
 +```go-html-template
 +{{ $image.Crop "200x100 TopLeft" }}
 +```
 +
 +If you apply [rotation](#rotation) when using the [`Crop`] or [`Fill`] method, specify the anchor relative to the rotated image.
 +
 +### Target format
 +
 +By default, Hugo encodes the image in the source format. You may convert the image to another format by specifying `bmp`, `gif`, `jpeg`, `jpg`, `png`, `tif`, `tiff`, or `webp`.
 +
 +```go-html-template
 +{{ $image.Resize "600x webp" }}
 +```
 +
 +To convert an image without scaling, use the dimensions of the original image:
 +
 +```go-html-template
 +{{ with .Resources.GetMatch "sunset.jpg" }}
 +  {{ with .Resize (printf "%dx%d webp" .Width .Height) }}
 +    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
 +  {{ end }}
 +{{ end }}
 +```
 +
 +### Quality
 +
 +Applicable to JPEG and WebP images, the `q` value determines the quality of the converted image. Higher values produce better quality images, while lower values produce smaller files. Set this value to a whole number between 1 and 100, inclusive.
 +
 +The default value is 75. You may override the default value in the [site configuration].
 +
 +```go-html-template
 +{{ $image.Resize "600x webp q50" }}
 +```
 +
 +### Hint
 +
 +<!-- Specifies a libwebp preset, not a libwebp image hint. -->
 +
 +Applicable to WebP images, this option corresponds to a set of predefined encoding parameters.
 +
 +Value|Example
 +:--|:--
 +`drawing`|Hand or line drawing with high-contrast details
 +`icon`|Small colorful image
 +`photo`|Outdoor photograph with natural lighting
 +`picture`|Indoor photograph such as a portrait
 +`text`|Image that is primarily text
 +
 +The default value is `photo`. You may override the default value in the [site configuration].
 +
 +```go-html-template
 +{{ $image.Resize "600x webp picture" }}
 +```
 +
 +### Background color
 +
 +When converting an image from a format that supports transparency (e.g., PNG) to a format that does _not_ support transparency (e.g., JPEG), you may specify the background color of the resulting image.
 +
 +Use either a 3-digit or a 6-digit hexadecimal color code (e.g., `#00f` or `#0000ff`).
 +
 +The default value is `#ffffff` (white). You may override the default value in the [site configuration].
 +
 +```go-html-template
 +{{ $image.Resize "600x jpg #b31280" }}
 +```
 +
 +### Resampling filter
 +
 +You may specify the resampling filter used when resizing an image. Commonly used resampling filters include:
 +
 +Filter|Description
 +:--|:--
 +`Box`|Simple and fast averaging filter appropriate for downscaling
 +`Lanczos`|High-quality resampling filter for photographic images yielding sharp results
 +`CatmullRom`|Sharp cubic filter that is faster than the Lanczos filter while providing similar results
 +`MitchellNetravali`|Cubic filter that produces smoother results with less ringing artifacts than CatmullRom
 +`Linear`|Bilinear resampling filter, produces smooth output, faster than cubic filters
 +`NearestNeighbor`|Fastest resampling filter, no antialiasing
 +
 +The default value is `Box`. You may override the default value in the [site configuration].
 +
 +```go-html-template
 +{{ $image.Resize "600x400 Lanczos" }}
 +```
 +
 +See [github.com/disintegration/imaging] for the complete list of resampling filters. If you wish to improve image quality at the expense of performance, you may wish to experiment with the alternative filters.
 +
 +## 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 Crop "250x250 center" />}}
 +
 +{{< imgproc sunset Resize "300x q10" />}}
 +
 +This is the shortcode used to generate the examples above:
 +
 +{{< code file="layouts/shortcodes/imgproc.html" >}}
 +{{< readfile file="layouts/shortcodes/imgproc.html" >}}
 +{{< /code >}}
 +
 +Call the shortcode from your Markdown like this:
 +
 +```go-html-template
 +{{</* imgproc sunset Resize "300x" /*/>}}
 +```
 +
 +{{% note %}}
 +Note the self-closing shortcode syntax above. You may call the `imgproc` shortcode with or without **inner content**.
 +{{% /note %}}
 +
 +## Imaging configuration
 +
 +### Processing options
 +
 +Define an `imaging` section in your site configuration to set the default [image processing options](#image-processing-options).
 +
 +{{< code-toggle config="imaging" />}}
 +
 +anchor
 +: See image processing options: [anchor](#anchor).
 +
 +bgColor
 +: See image processing options: [background color](#background-color).
 +
 +hint
 +: See image processing options: [hint](#hint).
 +
 +quality
 +: See image processing options: [quality](#quality).
 +
 +resampleFilter
 +: See image processing options: [resampling filter](#resampling-filter).
 +
 +### EXIF data
 +
 +Define an `imaging.exif` section in your site configuration to control the availability of EXIF data.
 +
 +{{< code-toggle file="hugo" copy=true >}}
 +[imaging.exif]
 +includeFields = ""
 +excludeFields = ""
 +disableDate = false
 +disableLatLong = false
 +{{< /code-toggle >}}
 +
 +disableDate
 +: Hugo extracts the image creation date/time into `.Date`. Set this to `true` to disable. Default is `false`.
 +
 +disableLatLong
 +: Hugo extracts the GPS latitude and longitude into `.Lat` and `.Long`. Set this to `true` to disable. Default is `false`.
 +
 +excludeFields
 +: Regular expression matching the EXIF tags to exclude from the `.Tags` collection. Default is&nbsp;`""`.
 +
 +includeFields
 +: Regular expression matching the EXIF tags to include in the `.Tags` collection. Default is&nbsp;`""`. To include all available tags, set this value to&nbsp;`".*"`.
 +
 +{{% note %}}
 +To improve performance and decrease cache size, if you set neither `excludeFields` nor `includeFields`, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`.
 +{{% /note %}}
 +
 +## Smart cropping of images
 +
 +By default, Hugo uses the [Smartcrop] library when cropping images with the `Crop` or`Fill` methods. You can set the anchor point manually, but in most cases the `Smart` option will make a good choice.
 +
 +Examples using the sunset image from above:
 +
 +{{< imgproc sunset Fill "200x200 smart" />}}
 +
 +{{< imgproc sunset Crop "200x200 smart" />}}
 +
 +## Image processing performance consideration
 +
 +Hugo caches processed images in the `resources` directory. If you include this directory in source control, Hugo will not have to regenerate the images in a CI/CD workflow (e.g., GitHub Pages, GitLab Pages, Netlify, etc.). This results in faster builds.
 +
 +If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with:
 +
 +```bash
 +hugo --gc
 +```
 +
 +[time.Format]: /functions/dateformat
 +[`anchor`]: /content-management/image-processing#anchor
 +[mounted]: /hugo-modules/configuration#module-configuration-mounts
 +[page bundle]: /content-management/page-bundles
 +[`lang.FormatNumber`]: /functions/lang
 +[filters]: /functions/images
 +[github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing>
 +[Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop>
 +[Exif]: <https://en.wikipedia.org/wiki/Exif>
 +[`Process`]: #process
 +[`Colors`]: #colors
 +[`Crop`]: #crop
 +[`Exif`]: #exif
 +[`Fill`]: #fill
 +[`Filter`]: #filter
 +[`Fit`]: #fit
 +[`Resize`]: #resize
 +[site configuration]: #processing-options
 +[`with`]: /functions/with/
index 5b8218f64ee8339878d451354842cd639dcc80ac,0000000000000000000000000000000000000000..60f9615b864a76a7c016310ec706362711e31435
mode 100644,000000..100644
--- /dev/null
@@@ -1,432 -1,0 +1,432 @@@
- │   ├── bash-in-slow-motion.md
- │   └── tls-in-a-nutshell.md
 +---
 +title: URL management
 +description: Control the structure and appearance of URLs through front matter entries and settings in your site configuration.
 +categories: [content management]
 +keywords: [aliases,redirects,permalinks,urls]
 +menu:
 +  docs:
 +    parent: content-management
 +    weight: 180
 +toc: true
 +weight: 180
 +aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
 +---
 +
 +## Overview
 +
 +By default, when Hugo renders a page, the resulting URL matches the file path within the `content` directory. For example:
 +
 +```text
 +content/posts/post-1.md → https://example.org/posts/post-1/
 +```
 +
 +You can change the structure and appearance of URLs with front matter values and site configuration options.
 +
 +## Front matter
 +
 +### `slug`
 +
 +Set the `slug` in front matter to override the last segment of the path. The `slug` value does not affect section pages.
 +
 +{{< code-toggle file="content/posts/post-1.md" copy=false fm=true >}}
 +title = 'My First Post'
 +slug = 'my-first-post'
 +{{< /code-toggle >}}
 +
 +The resulting URL will be:
 +
 +```text
 +https://example.org/posts/my-first-post/
 +```
 +
 +### `url`
 +
 +Set the `url` in front matter to override the entire path. Use this with either regular pages or section pages.
 +
 +With this front matter:
 +
 +{{< code-toggle file="content/posts/post-1.md" copy=false fm=true >}}
 +title = 'My First Article'
 +url = '/articles/my-first-article'
 +{{< /code-toggle >}}
 +
 +The resulting URL will be:
 +
 +```text
 +https://example.org/articles/my-first-article/
 +```
 +
 +If you include a file extension:
 +
 +{{< code-toggle file="content/posts/post-1.md" copy=false fm=true >}}
 +title = 'My First Article'
 +url = '/articles/my-first-article.html'
 +{{< /code-toggle >}}
 +
 +The resulting URL will be:
 +
 +```text
 +https://example.org/articles/my-first-article.html
 +```
 +
 +In a monolingual site, a `url` value with or without a leading slash is relative to the `baseURL`.
 +
 +In a multilingual site:
 +
 +- A `url` value with a leading slash is relative to the `baseURL`.
 +- A `url` value without a leading slash is relative to the `baseURL` plus the language prefix.
 +
 +Site type|Front matter `url`|Resulting URL
 +:--|:--|:--
 +monolingual|`/about`|`https://example.org/about/`
 +monolingual|`about`|`https://example.org/about/`
 +multilingual|`/about`|`https://example.org/about/`
 +multilingual|`about`|`https://example.org/de/about/`
 +
 +If you set both `slug` and `url` in front matter, the `url` value takes precedence.
 +
 +## Site configuration
 +
 +### Permalinks
 +
 +In your site configuration, define a URL pattern for each top-level section. Each URL pattern can target a given language and/or [page kind].
 +
 +Front matter `url` values override the URL patterns defined in the `permalinks` section of your site configuration.
 +
 +[page kind]: /templates/section-templates/#page-kinds
 +
 +#### Monolingual examples {#permalinks-monolingual-examples}
 +
 +With this content structure:
 +
 +```text
 +content/
 +├── posts/
- │   ├── git-for-beginners.md
- │   └── javascript-bundling-with-hugo.md
++│   ├── bash-in-slow-motion.md
++│   └── tls-in-a-nutshell.md
 +├── tutorials/
- ├── de/
- │   ├── books/
- │   │   ├── les-miserables.md
- │   │   └── the-hunchback-of-notre-dame.md
- │   └── _index.md
- └── en/
++│   ├── git-for-beginners.md
++│   └── javascript-bundling-with-hugo.md
 +└── _index.md
 +```
 +
 +Render tutorials under "training", and render the posts under "articles" with a date-base hierarchy:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +[permalinks.page]
 +posts = '/articles/:year/:month/:slug/'
 +tutorials = '/training/:slug/'
 +[permalinks.section]
 +posts = '/articles/'
 +tutorials = '/training/'
 +{{< /code-toggle >}}
 +
 +The structure of the published site will be:
 +
 +```text
 +public/
 +├── articles/
 +│   ├── 2023/
 +│   │   ├── 04/
 +│   │   │   └── bash-in-slow-motion/
 +│   │   │       └── index.html
 +│   │   └── 06/
 +│   │       └── tls-in-a-nutshell/
 +│   │           └── index.html
 +│   └── index.html
 +├── training/
 +│   ├── git-for-beginners/
 +│   │   └── index.html
 +│   ├── javascript-bundling-with-hugo/
 +│   │   └── index.html
 +│   └── index.html
 +└── index.html
 +```
 +
 +To create a date-based hierarchy for regular pages in the content root:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +[permalinks.page]
 +"/" = "/:year/:month/:slug/"
 +{{< /code-toggle >}}
 +
 +Use the same approach with taxonomy terms. For example, to omit the taxonomy segment of the URL:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +[permalinks.term]
 +'tags' = '/:slug/'
 +{{< /code-toggle >}}
 +
 +#### Multilingual example {#permalinks-multilingual-example}
 +
 +Use the `permalinks` configuration as a component of your localization strategy.
 +
 +With this content structure:
 +
 +```text
 +content/
-     │   ├── les-miserables.md
-     │   └── the-hunchback-of-notre-dame.md
++├── en/
++│   ├── books/
++│   │   ├── les-miserables.md
++│   │   └── the-hunchback-of-notre-dame.md
++│   └── _index.md
++└── es/
 +    ├── books/
- contentDir = 'content/de'
++    │   ├── les-miserables.md
++    │   └── the-hunchback-of-notre-dame.md
 +    └── _index.md
 +```
 +
 +And this site configuration:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +defaultContentLanguage = 'en'
 +defaultContentLanguageInSubdir = true
 +
 +[languages.en]
 +contentDir = 'content/en'
 +languageCode = 'en-US'
 +languageDirection = 'ltr'
 +languageName = 'English'
 +weight = 1
 +
 +[languages.en.permalinks.page]
 +books = "/books/:slug/"
 +
 +[languages.en.permalinks.section]
 +books = "/books/"
 +
 +[languages.es]
- │   ├── books/
- │   │   ├── les-miserables/
- │   │   │   └── index.html
- │   │   ├── the-hunchback-of-notre-dame/
- │   │   │   └── index.html
- │   │   └── index.html
- │   └── index.html
++contentDir = 'content/es'
 +languageCode = 'es-ES'
 +languageDirection = 'ltr'
 +languageName = 'Español'
 +weight = 2
 +
 +[languages.es.permalinks.page]
 +books = "/libros/:slug/"
 +
 +[languages.es.permalinks.section]
 +books = "/libros/"
 +{{< /code-toggle >}}
 +
 +The structure of the published site will be:
 +
 +```text
 +public/
 +├── en/
- │   ├── libros/
- │   │   ├── les-miserables/
- │   │   │   └── index.html
- │   │   ├── the-hunchback-of-notre-dame/
- │   │   │   └── index.html
- │   │   └── index.html
- │   └── index.html
++│   ├── books/
++│   │   ├── les-miserables/
++│   │   │   └── index.html
++│   │   ├── the-hunchback-of-notre-dame/
++│   │   │   └── index.html
++│   │   └── index.html
++│   └── index.html
 +├── es/
++│   ├── libros/
++│   │   ├── les-miserables/
++│   │   │   └── index.html
++│   │   ├── the-hunchback-of-notre-dame/
++│   │   │   └── index.html
++│   │   └── index.html
++│   └── index.html
 +└── index.html
 +````
 +
 +#### Tokens
 +
 +Use these tokens when defining the URL pattern. The `date` field in front matter determines the value of time-related tokens.
 +
 +`: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. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
 +
 +`:title`
 +: the content's title
 +
 +`:slug`
 +: the content's slug (or title if no slug is provided in the front matter)
 +
 +`:slugorfilename`
 +: the content's slug (or file name if no slug is provided in the front matter)
 +
 +`:filename`
 +: the content's file name (without extension)
 +
 +For time-related values, you can also use the layout string components defined in Go's [time package]. For example:
 +
 +[time package]: https://pkg.go.dev/time#pkg-constants
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +permalinks:
 +  posts: /:06/:1/:2/:title/
 +{{< /code-toggle >}}
 +
 +### Appearance
 +
 +The appearance of a URL is either ugly or pretty.
 +
 +Type|Path|URL
 +:--|:--|:--
 +ugly|content/about.md|`https://example.org/about.html`
 +pretty|content/about.md|`https://example.org/about/`
 +
 +By default, Hugo produces pretty URLs. To generate ugly URLs, change your site configuration:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +uglyURLs = true
 +{{< /code-toggle >}}
 +
 +### Post-processing
 +
 +Hugo provides two mutually exclusive configuration options to alter URLs _after_ it renders a page.
 +
 +#### Canonical URLs
 +
 +{{% note %}}
 +This is a legacy configuration option, superseded by template functions and markdown render hooks, and will likely be [removed in a future release].
 +
 +[removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
 +{{% /note %}}
 +
 +If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then prepends the `baseURL` to create absolute URLs.
 +
 +```text
 +<a href="/about"> → <a href="https://example.org/about/">
 +<img src="/a.gif"> → <img src="https://example.org/a.gif">
 +```
 +
 +This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, this is a legacy configuration option that will likely be removed in a future release.
 +
 +To enable:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +canonifyURLs = true
 +{{< /code-toggle >}}
 +
 +#### Relative URLs
 +
 +{{% note %}}
 +Do not enable this option unless you are creating a serverless site, navigable via the file system.
 +{{% /note %}}
 +
 +If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then transforms the URL to be relative to the current page.
 +
 +For example, when rendering `content/posts/post-1`:
 +
 +```text
 +<a href="/about"> → <a href="../../about">
 +<img src="/a.gif"> → <img src="../../a.gif">
 +```
 +
 +This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, do not enable this option unless you are creating a serverless site.
 +
 +To enable:
 +
 +{{< code-toggle file="hugo" copy=false >}}
 +relativeURLs = true
 +{{< /code-toggle >}}
 +
 +## Aliases
 +
 +Create redirects from old URLs to new URLs with aliases:
 +
 +- An alias with a leading slash is relative to the `baseURL`
 +- An alias without a leading slash is relative to the current directory
 +
 +### Examples {#alias-examples}
 +
 +Change the file name of an existing page, and create an alias from the previous URL to the new URL:
 +
 +{{< code-toggle file="content/posts/new-file-name.md" copy=false >}}
 +aliases = ['/posts/previous-file-name']
 +{{< /code-toggle >}}
 +
 +Each of these directory-relative aliases is equivalent to the site-relative alias above:
 +
 +- `previous-file-name`
 +- `./previous-file-name`
 +- `../posts/previous-file-name`
 +
 +You can create more than one alias to the current page:
 +
 +{{< code-toggle file="content/posts/new-file-name.md" copy=false >}}
 +aliases = ['previous-file-name','original-file-name']
 +{{< /code-toggle >}}
 +
 +In a multilingual site, use a directory-relative alias, or include the language prefix with a site-relative alias:
 +
 +{{< code-toggle file="content/posts/new-file-name.de.md" copy=false >}}
 +aliases = ['/de/posts/previous-file-name']
 +{{< /code-toggle >}}
 +
 +### How aliases work
 +
 +Using the first example above, Hugo generates the following site structure:
 +
 +```text
 +public/
 +├── posts/
 +│   ├── new-file-name/
 +│   │   └── index.html
 +│   ├── previous-file-name/
 +│   │   └── index.html
 +│   └── index.html
 +└── index.html
 +```
 +
 +The alias from the previous URL to the new URL is a client-side redirect:
 +
 +{{< code file="posts/previous-file-name/index.html" copy=false >}}
 +<!DOCTYPE html>
 +<html lang="en-us">
 +  <head>
 +    <title>https://example.org/posts/new-file-name/</title>
 +    <link rel="canonical" href="https://example.org/posts/new-file-name/">
 +    <meta name="robots" content="noindex">
 +    <meta charset="utf-8">
 +    <meta http-equiv="refresh" content="0; url=https://example.org/posts/new-file-name/">
 +  </head>
 +</html>
 +{{< /code >}}
 +
 +Collectively, the elements in the `head` section:
 +
 +- Tell search engines that the new URL is canonical
 +- Tell search engines not to index the previous URL
 +- Tell the browser to redirect to the new URL
 +
 +Hugo renders alias files before rendering pages. A new page with the previous file name will overwrite the alias, as expected.
 +
 +### Customize
 +
 +Create a new template (`layouts/alias.html`) to customize the content of the alias files. The template receives the following context:
 +
 +`Permalink`
 +: the link to the page being aliased
 +
 +`Page`
 +: the Page data for the page being aliased
index 56d3002755ea7eb05f1a4d5e0d812709353d0f3d,0000000000000000000000000000000000000000..dca2b3c5219dd4fbe1c816a78875fe5682e6b696
mode 100644,000000..100644
--- /dev/null
@@@ -1,115 -1,0 +1,115 @@@
- [Goldmark](https://github.com/yuin/goldmark/) is from Hugo 0.60 the default library used for Markdown. It's fast, it's [CommonMark](https://spec.commonmark.org/0.29/) compliant and it's very flexible.
 +---
 +title: Configure markup
 +description: Configure rendering of markup to HTML.
 +categories: [fundamentals, getting started]
 +keywords: [configuration,highlighting]
 +menu:
 +  docs:
 +    parent: getting-started
 +    weight: 50
 +weight: 50
 +slug: configuration-markup
 +toc: true
 +---
 +
 +## Default configuration
 +
 +See [Goldmark](#goldmark) for settings related to the default markdown handler in Hugo.
 +
 +Below are all markup related configuration in Hugo with their default settings:
 +
 +{{< code-toggle config="markup" />}}
 +
 +**See each section below for details.**
 +
 +## Goldmark
 +
++[Goldmark](https://github.com/yuin/goldmark/) is from Hugo 0.60 the default library used for Markdown. It's fast, it's [CommonMark](https://spec.commonmark.org/current/) compliant and it's very flexible.
 +
 +This is the default configuration:
 +
 +{{< code-toggle config="markup.goldmark" />}}
 +
 +For details on the extensions, refer to [this section](https://github.com/yuin/goldmark/#built-in-extensions) of the Goldmark documentation
 +
 +Some settings explained:
 +
 +hardWraps
 +: By default, Goldmark ignores newlines within a paragraph. Set to `true` to render newlines as `<br>` elements.
 +
 +unsafe
 +: By default, Goldmark does not render raw HTML and potentially dangerous links. If you have lots of inline HTML and/or JavaScript, you may need to turn this on.
 +
 +typographer
 +: This extension substitutes punctuations with typographic entities like [smartypants](https://daringfireball.net/projects/smartypants/).
 +
 +attribute
 +: Enable custom attribute support for titles and blocks by adding attribute lists inside single curly brackets (`{.myclass class="class1 class2" }`) and placing it _after the Markdown element it decorates_, on the same line for titles and on a new line directly below for blocks.
 +
 +Hugo supports adding attributes (e.g. CSS classes) to Markdown blocks, e.g. tables, lists, paragraphs etc.
 +
 +A blockquote with a CSS class:
 +
 +```md
 +> foo
 +> bar
 +{.myclass}
 +```
 +
 +There are some current limitations: For tables you can currently only apply it to the full table, and for lists the `ul`/`ol`-nodes only, e.g.:
 +
 +```md
 +* Fruit
 +  * Apple
 +  * Orange
 +  * Banana
 +  {.fruits}
 +* Dairy
 +  * Milk
 +  * Cheese
 +  {.dairies}
 +{.list}
 +```
 +
 +Note that attributes in [code fences](/content-management/syntax-highlighting/#highlighting-in-code-fences) must come after the opening tag, with any other highlighting processing instruction, e.g.:
 +
 +````txt
 +```go {.myclass linenos=table,hl_lines=[8,"15-17"],linenostart=199}
 +// ... code
 +```
 +````
 +
 +autoHeadingIDType ("github")
 +: The strategy used for creating auto IDs (anchor names). Available types are `github`, `github-ascii` and `blackfriday`. `github` produces GitHub-compatible IDs, `github-ascii` will drop any non-Ascii characters after accent normalization, and `blackfriday` will make the IDs compatible with Blackfriday, the default Markdown engine before Hugo 0.60. Note that if Goldmark is your default Markdown engine, this is also the strategy used in the [anchorize](/functions/anchorize/) template func.
 +
 +## Highlight
 +
 +This is the default `highlight` configuration. Note that some of these settings can be set per code block, see [Syntax Highlighting](/content-management/syntax-highlighting/).
 +
 +{{< code-toggle config="markup.highlight" />}}
 +
 +For `style`, see these galleries:
 +
 +* [Short snippets](https://xyproto.github.io/splash/docs/all.html)
 +* [Long snippets](https://xyproto.github.io/splash/docs/longer/all.html)
 +
 +For CSS, see [Generate Syntax Highlighter CSS](/content-management/syntax-highlighting/#generate-syntax-highlighter-css).
 +
 +## Table of contents
 +
 +{{< code-toggle config="markup.tableOfContents" />}}
 +
 +These settings only works for the Goldmark renderer:
 +
 +startLevel
 +: The heading level, values starting at 1 (`h1`), to start render the table of contents.
 +
 +endLevel
 +: The heading level, inclusive, to stop render the table of contents.
 +
 +ordered
 +: If `true`, generates an ordered list instead of an unordered list.
 +
 +## Markdown render hooks
 +
 +See [Markdown Render Hooks](/templates/render-hooks/).
index 676b7bd1c33fae7de583e26e16a2b69c50f4cfca,0000000000000000000000000000000000000000..ecdda25cdb983c78dcb212bb2c805c4116ef12fb
mode 100644,000000..100644
--- /dev/null
@@@ -1,91 -1,0 +1,213 @@@
- description: Hugo's CLI scaffolds a project directory structure and then takes that single directory and uses it as the input to create a complete website.
 +---
 +title: Directory structure
- ## New site scaffolding
++description: Each Hugo project is a directory, with subdirectories that contribute to the content, structure, behavior, and presentation of your site.
 +categories: [fundamentals,getting started]
 +keywords: [source, organization, directories]
 +menu:
 +  docs:
 +    parent: getting-started
 +    weight: 30
 +weight: 30
 +aliases: [/overview/source-directory/]
 +toc: true
 +---
 +
- {{< youtube sB0HLHjgQ7E >}}
++## Site skeleton
 +
- Running `hugo new site example` from the command line creates a directory structure with the following elements:
++Hugo generates a project skeleton when you create a new site. For example, this command:
 +
- example/
++```text
++hugo new site my-site
++```
++
++Creates this directory structure:
 +
 +```txt
- ├── public/
++my-site/
 +├── archetypes/
 +│   └── default.md
 +├── assets/
 +├── content/
 +├── data/
++├── i18n/
 +├── layouts/
- └── hugo.toml
 +├── static/
 +├── themes/
- ## Directory structure explained
++└── hugo.toml         <-- site configuration
 +```
 +
- The following is a high-level overview of each of the directories with links to each of their respective sections within the Hugo docs.
++Depending on requirements, you may wish to organize your site configuration into subdirectories:
++
++```txt
++my-site/
++├── archetypes/
++│   └── default.md
++├── assets/
++├── config/           <-- site configuration
++│   └── _default/
++│       └── hugo.toml
++├── content/
++├── data/
++├── i18n/
++├── layouts/
++├── static/
++└── themes/
++```
++
++When you build your site, Hugo creates a `public` directory, and typically a `resources` directory as well:
++
++```txt
++my-site/
++├── archetypes/
++│   └── default.md
++├── assets/
++├── config/       
++│   └── _default/
++│       └── hugo.toml
++├── content/
++├── data/
++├── i18n/
++├── layouts/
++├── public/       <-- created when you build your site
++├── resources/    <-- created when you build your site
++├── static/
++└── themes/
++```
++
++## Directories
++
++Each of the subdirectories contributes to the content, structure, behavior, or presentation of your site.
++
++archetypes
++: The `archetypes` directory contains templates for new content. See&nbsp;[details](/content-management/archetypes/).
++
++assets
++: The `assets` directory contains global resources typically passed through an asset pipeline. This includes resources such as images, CSS, Sass, JavaScript, and TypeScript. See&nbsp;[details](/hugo-pipes/introduction/).
++
++config
++: The `config` directory contains your site configuration, possibly split into multiple subdirectories and files. For projects with minimal configuration or projects that do not need to behave differently in different environments, a single configuration file named `hugo.toml` in the root of the project is sufficient. See&nbsp;[details](/getting-started/configuration/#configuration-directory).
++
++content
++: The `content` directory contains the markup files (typically markdown) and page resources that comprise the content of your site. See&nbsp;[details](/content-management/organization/).
 +
- [`archetypes`](/content-management/archetypes/)
- : You can create new content files in Hugo using the `hugo new content` command.
- By default, Hugo will create new content files with at least `date`, `title` (inferred from the file name), and `draft = true`. This saves time and promotes consistency for sites using multiple content types. You can create your own [archetypes] with custom preconfigured front matter fields as well.
++data
++: The `data` directory contains data files (JSON, TOML, YAML, or XML) that augment content, configuration, localization, and navigation. See&nbsp;[details](/templates/data-templates/).
 +
- [`assets`]
- : Stores all the files which need be processed by [Hugo Pipes](/hugo-pipes/). Only the files whose `.Permalink` or `.RelPermalink` are used will be published to the `public` directory.
++i18n
++: The `i18n` directory contains translation tables for multilingual sites. See&nbsp;[details](/content-management/multilingual/).
 +
- [`config`](/getting-started/configuration/)
- : Hugo ships with a large number of [configuration directives].
- The [configuration directory](/getting-started/configuration/#configuration-directory) is where those directives are stored as JSON, YAML, or TOML files. Every root setting object can stand as its own file and structured by environments.
- Projects with minimal settings and no need for environment awareness can use a single `hugo.toml` file at its root.
++layouts
++: The layouts directory contains templates to transform content, data, and resources into a complete website. See&nbsp;[details](/templates/).
 +
- Many sites may need little to no configuration, but Hugo ships with a large number of [configuration directives] for more granular directions on how you want Hugo to build your website. Note: the `config` directory is not created by default.
++public
++: The `public` directory contains the published website, generated when you run the `hugo` command. Hugo recreates this directory and its content as needed. See&nbsp;[details](/getting-started/usage/#build-your-site).
 +
- [`content`]
- : All content for your website will live inside this directory. Each top-level folder in Hugo is considered a [content section]. For example, if your site has three main sections---`blog`, `articles`, and `tutorials`---you will have three directories at `content/blog`, `content/articles`, and `content/tutorials`. Hugo uses sections to assign default [content types].
++resources
++: The `resources` directory contains cached output from Hugo's asset pipelines, generated when you run the `hugo` or `hugo server` commands. By default this cache directory includes CSS and images. Hugo recreates this directory and its content as needed.
 +
- [`data`](/templates/data-templates/)
- : This directory is used to store configuration files that can be
- used by Hugo when generating your website. You can write these files in YAML, JSON, or TOML format. In addition to the files you add to this folder, you can also create [data templates] that pull from dynamic content.
++static
++: The `static` directory contains files that will be copied to the public directory when you build your site. For example: `favicon.ico`, `robots.txt`, and files that verify site ownership. Before the introduction of [page bundles](/getting-started/glossary/#page-bundle) and [asset pipelines](/hugo-pipes/introduction/), the `static` directory was also used for images, CSS, and JavaScript. See&nbsp;[details](/content-management/static-files/).
 +
- [`layouts`]
- : Stores templates in the form of `.html` files that specify how views of your content will be rendered into a static website. Templates include [list pages][lists], your [homepage], [taxonomy templates], [partials], [single page templates][singles], and more.
++themes
++: The `themes` directory contains one or more [themes](/getting-started/glossary/#theme), each in its own subdirectory.
 +
- [`static`]
- : Stores all the static content: images, CSS, JavaScript, etc. When Hugo builds your site, all assets inside your static directory are copied over as-is. A good example of using the `static` folder is for [verifying site ownership on Google Search Console][searchconsole], where you want Hugo to copy over a complete HTML file without modifying its content.
++## Union file system
 +
- From **Hugo 0.31** you can have multiple static directories.
++Hugo creates a union file system, allowing you to mount two or more directories to the same location. For example, let's say your home directory contains a Hugo project in one directory, and shared content in another:
++
++```text
++home/
++└── user/
++    ├── my-site/            
++    │   ├── content/
++    │   │   ├── books/
++    │   │   │   ├── _index.md
++    │   │   │   ├── book-1.md
++    │   │   │   └── book-2.md
++    │   │   └── _index.md
++    │   ├── themes/
++    │   │   └── my-theme/
++    │   └── hugo.toml
++    └── shared-content/     
++        └── films/
++            ├── _index.md
++            ├── film-1.md
++            └── film-2.md
++```
++
++You can include the shared content when you build your site using mounts. In your site configuration:
++
++{{< code-toggle file=hugo copy=false >}}
++[[module.mounts]]
++source = 'content'
++target = 'content'
++
++[[module.mounts]]
++source = '/home/user/shared-content'
++target = 'content'
++{{< /code-toggle >}}
++
++{{% note %}}
++When you overlay one directory on top of another, you must mount both directories.
++
++If you think you need a symbolic link in your project directory, use Hugo's union file system instead.
++{{% /note %}}
++
++After mounting, the union file system has this structure:
++
++```text
++home/
++└── user/
++    └── my-site/
++        ├── content/
++        │   ├── books/
++        │   │   ├── _index.md
++        │   │   ├── book-1.md
++        │   │   └── book-2.md
++        │   ├── films/
++        │   │   ├── _index.md
++        │   │   ├── film-1.md
++        │   │   └── film-2.md
++        │   └── _index.md
++        ├── themes/
++        │   └── my-theme/
++        └── hugo.toml
++```
 +
 +{{% note %}}
- [`resources`]
- : Caches some files to speed up generation. Can be also used by template authors to distribute built Sass files, so you don't have to have the preprocessor installed. Note: resources directory is not created by default.
- [archetypes]: /content-management/archetypes/
- [`assets`]: /hugo-pipes/introduction#asset-directory
- [configuration directives]: /getting-started/configuration/#all-configuration-settings
- [`content`]: /content-management/organization/
- [content section]: /content-management/sections/
- [content types]: /content-management/types/
- [data templates]: /templates/data-templates/
- [homepage]: /templates/homepage/
- [`layouts`]: /templates/
- [`static`]: /content-management/static-files/
- [`resources`]: /getting-started/configuration/#configure-file-caches
- [lists]: /templates/lists/
- [pagevars]: /variables/page/
- [partials]: /templates/partials/
- [searchconsole]: https://support.google.com/webmasters/answer/9008080#zippy=%2Chtml-file-upload
- [singles]: /templates/single-page-templates/
- [taxonomies]: /content-management/taxonomies/
- [taxonomy templates]: /templates/taxonomy-templates/
- [types]: /content-management/types/
++When two or more files have the same path, the order of precedence follows the order of the mounts. For example, if the shared content directory contains `books/book-1.md`, it will be ignored because the project's content directory was mounted first.
 +{{% /note %}}
 +
++You can mount directories to `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, and `static`. See&nbsp;[details](/hugo-modules/configuration/#module-configuration-mounts).
++
++You can also mount directories from Git repositories using Hugo Modules. See&nbsp;[details](/hugo-modules/).
++
++
++## Theme skeleton
++
++Hugo generates a functional theme skeleton when you create a new theme. For example, this command:
++
++```text
++hugo new theme my-theme
++```
++
++Creates this directory structure (subdirectories not shown):
++
++```text
++my-theme/
++├── archetypes/
++├── assets/
++├── content/
++├── data/
++├── i18n/
++├── layouts/
++├── static/
++├── LICENSE
++├── README.md
++├── hugo.toml
++└── theme.toml
++```
++
++Using the union file system described above, Hugo mounts each of these directories to the corresponding location in the project. When two files have the same path, the file in the project directory takes precedence. This allows you, for example, to override a theme's template by placing a copy in the same location within the project directory.
++
++If you are simultaneously using components from two or more themes or modules, and there's a path collision, the first mount takes precedence.
index 8ff61d6b1557d0e2dc1ade3663612275fe709010,0000000000000000000000000000000000000000..834f72ec5cdfcab46c63e16233ca771f0228f86c
mode 100644,000000..100644
--- /dev/null
@@@ -1,266 -1,0 +1,266 @@@
- Like a [theme](#theme), a module is a packaged combination of [archetypes](#archetype), assets, content, data, [templates](#template), translations, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site. See [details](/hugo-modules/).
 +---
 +title: Glossary of terms
 +description: Terms commonly used throughout the documentation.
 +keywords: [glossary]
 +menu:
 +  docs:
 +    parent: getting-started
 +    weight: 60
 +weight: 60
 +type: glossary
 +---
 +
 +<!-- Use level 3 headings for each term in the glossary. -->
 +
 +### action
 +
 +See [template action](#template-action).
 +
 +### archetype
 +
 +A template for new content. See [details](/content-management/archetypes/).
 +
 +### argument
 +
 +A [scalar](#scalar), [array](#array), [slice](#slice), [map](#map), or [object](#object) passed to a [function](#function), [method](#method), or [shortcode](#shortcode).
 +
 +### array
 +
 +A numbered sequence of elements. Unlike Go's [slice](#slice) data type, an array has a fixed length. See the [Go&nbsp;documentation](https://go.dev/ref/spec#Array_types) for details.
 +
 +### bool
 +
 +See [boolean](#boolean).
 +
 +### boolean
 +
 +A data type with two possible values, either `true` or `false`.
 +
 +### branch bundle
 +
 +A [page bundle](#page-bundle) with an&nbsp;_index.md file and zero or more [resources](#resource). Analogous to a physical branch, a branch bundle may have descendants including regular pages, [leaf bundles](/getting-started/glossary/#leaf-bundle), and other branch bundles. See [details](/content-management/page-bundles/).
 +
 +### build
 +
 +To generate a static site that includes HTML files and assets such as images, CSS, and JavaScript. The build process includes rendering and resource transformations.
 +
 +### bundle
 +
 +See [page bundle](#page-bundle).
 +
 +### cache
 +
 +A software component that stores data so that future requests for the same data are faster.
 +
 +### collection
 +
 +Typically, a collection of pages, but may also refer to an [array](#array),  [slice](#slice), or [map](#map). For example, the pages within a site's "articles" section are a page collection.
 +
 +### content format
 +
 +A markup language for creating content. Typically markdown, but may also be HTML, AsciiDoc, Org, Pandoc, or reStructuredText. See [details](/content-management/formats/).
 +
 +### content type
 +
 +A classification of content inferred from the top-level directory name or the `type` set in [front matter](#front-matter). Pages in the root of the content directory, including the home page, are of type "page". Accessed via `.Page.Type` in [templates](#template). See&nbsp;[details](/content-management/types/).
 +
 +### context
 +
 +Represented by a period "." within a [template action](#template-action), context is the current location in a data structure. For example, while iterating over a [collection](#collection) of pages, the context within each iteration is the page's data structure. The context received by each template depends on template type and/or how it was called. See [details](/templates/introduction/#the-dot).
 +
 +### flag
 +
 +An option passed to a command-line program, beginning with one or two hyphens. See [details](/commands/hugo/).
 +
 +### float
 +
 +See [floating point](#floating-point).
 +
 +### floating point
 +
 +A numeric data type with a fractional component. For example, `3.14159`.
 +
 +### function
 +
 +Used within a [template action](#template-action), a function takes one or more [arguments](#argument) and returns a value. Unlike [methods](#method), functions are not associated with an [object](#object). See [details](/functions/).
 +
 +### front matter
 +
 +Metadata at the beginning of each content page, separated from the content by format-specific delimiters. See&nbsp;[details](/content-management/front-matter/).
 +
 +### int
 +
 +See [integer](#integer).
 +
 +### integer
 +
 +A numeric data type without a fractional component. For example, `42`.
 +
 +### internationalization
 +
 +Software design and development efforts that enable [localization](#localization). See the [W3C definition](https://www.w3.org/International/questions/qa-i18n). Abbreviated i18n.
 +
 +### kind
 +
 +See [page kind](#page-kind).
 +
 +### layout
 +
 +See [template](#template).
 +
 +### leaf bundle
 +
 +A [page bundle](#page-bundle) with an index.md file and zero or more [resources](#resource). Analogous to a physical leaf, a leaf bundle is at the end of a branch. Hugo ignores content (but not resources) beneath the leaf bundle. See [details](/content-management/page-bundles/).
 +
 +### list page
 +
 +Any [page kind](#page-kind) that receives a page [collection](#collection) in [context](#context). This includes the home page, [section pages](#section-page), [taxonomy pages](#taxonomy-page), and [term pages](#term-page).
 +
 +### localization
 +
 +Adaptation of a site to meet language and regional requirements. This includes translations, language-specific media, date and currency formats, etc. See [details](/content-management/multilingual/) and the [W3C definition](https://www.w3.org/International/questions/qa-i18n). Abbreviated l10n.
 +
 +### map
 +
 +An unordered group of elements, each indexed by a unique key. See the [Go&nbsp;documentation](https://go.dev/ref/spec#Map_types) for details.
 +
 +### method
 +
 +Used within a [template action](#template-action) and associated with an [object](#object), a method takes zero or more [arguments](#argument) and either returns a value or performs an action. For example, `.IsHome` is a method on the `.Page` object which returns `true` if the current page is the home page. See also [function](#function).
 +
 +### module
 +
- Any file consumed by the build process to augment or generate content, structure, behavior, or presentation. For example: images, videos, content snippets, CSS, Sass, Javascript, and data.
++Like a [theme](#theme), a module is a packaged combination of [archetypes](#archetype), assets, content, data, [templates](#template), translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site. See [details](/hugo-modules/).
 +
 +### object
 +
 +A data structure with or without associated [methods](#method).
 +
 +### page bundle
 +
 +A directory that encapsulates both content and associated [resources](#resource). There are two types of page bundles: [leaf bundles](/getting-started/glossary/#leaf-bundle) and [branch bundles](/getting-started/glossary/#branch-bundle). See [details](/content-management/page-bundles/).
 +
 +### page kind
 +
 +A classification of rendered pages, one of "home", "page", "section", "taxonomy", or "term". Accessed via `.Page.Kind` in [templates](#template). See&nbsp;[details](/templates/section-templates/#page-kinds).
 +
 +### pager
 +
 +Created during [pagination](#pagination), a pager contains a subset of a section list, and navigation links to other pagers.
 +
 +### paginate
 +
 +To split a [section](#section) list into two or more [pagers](#pager) See&nbsp;[details](/templates/pagination/).
 +
 +### pagination
 +
 +The process of [paginating](#paginate) a [section](#section) list.
 +
 +### parameter
 +
 +Typically, a user-defined key/value pair at the site or page level, but may also refer to a configuration setting or an [argument](#argument).
 +
 +### partial
 +
 +A [template](#template) called from any other template including [shortcodes](#shortcode), [render hooks](#render-hook), and other partials. A partial either renders something or returns something. A partial can also call itself, for example, to [walk](#walk) a data structure.
 +
 +### permalink
 +
 +The absolute URL of a rendered page, including scheme and host.
 +
 +### pipe
 +
 +See [pipeline](#pipeline).
 +
 +### pipeline
 +
 +Within a [template action](#template-action), a pipeline is a possibly chained sequence of values, [function](#function) calls, or [method](#method) calls. Functions and methods in the pipeline may take multiple [arguments](#argument).
 +
 +A pipeline may be *chained* by separating a sequence of commands with pipeline characters "|". In a chained pipeline, the result of each command is passed as the last argument to the following command. The output of the final command in the pipeline is the value of the pipeline. See the [Go&nbsp;documentation](https://pkg.go.dev/text/template#hdr-Pipelines) for details.
 +
 +### publish
 +
 +See [build](#build).
 +
 +### regular page
 +
 +Content with the "page" [page kind](#page-kind). See also [section page](#section-page).
 +
 +### render hook
 +
 +A [template](#template) that overrides standard markdown rendering. See [details](/templates/render-hooks/).
 +
 +### resource
 +
- Hugo supports three types of resources: page resources (located in a [page bundle](/getting-started/glossary/#page-bundle)), global resources (located in the assets directory), and remote resources (typically accessed via https).
++Any file consumed by the build process to augment or generate content, structure, behavior, or presentation. For example: images, videos, content snippets, CSS, Sass, JavaScript, and data.
 +
- An HTML file with [template actions](#template-action), located within the layouts directory of a project, theme, or module. See&nbsp;[details](/templates/).
++Hugo supports three types of resources: page resources (located in a [page bundle](/getting-started/glossary/#page-bundle)), global resources (located in the assets directory), and remote resources (typically accessed via HTTPS).
 +
 +### scalar
 +
 +A single value, one of [string](#string), [integer](#integer), [floating point](#floating-point), or [boolean](#boolean).
 +
 +### section
 +
 +A top-level content directory, or any content directory with an&nbsp;_index.md file. A content directory with an&nbsp;_index.md file is also known as a [branch bundle](/getting-started/glossary/#branch-bundle). Section templates receive one or more page [collections](#collection) in [context](#context). See [details](/content-management/sections/).
 +
 +### section page
 +
 +Content with the "section" [page kind](#page-kind). Typically a listing of [regular pages](#regular-page) and/or [section pages](#section-page) within the current [section](#section). See also [regular page](#regular-page).
 +
 +### shortcode
 +
 +A [template](#template) called from within markdown, taking zero or more [arguments](#argument). See [details](/content-management/shortcodes/).
 +
 +### slice
 +
 +A numbered sequence of elements. Unlike Go's [array](#array) data type, slices are dynamically sized. See the [Go&nbsp;documentation](https://go.dev/ref/spec#Slice_types) for details.
 +
 +### string
 +
 +A sequence of bytes. For example, `"What is 6 times 7?"`&nbsp;.
 +
 +### taxonomy
 +
 +A group of related [terms](#term) used to classify content. For example, a "colors" taxonomy might include the terms "red", "green", and "blue". See&nbsp;[details](/content-management/taxonomies/).
 +
 +### taxonomy page
 +
 +Content with the "taxonomy" [page kind](#page-kind). Typically a listing of [terms](#term) within a given [taxonomy](#taxonomy).
 +
 +### template
 +
- A packaged combination of [archetypes](#archetype), assets, content, data, [templates](#template), translations, or configuration settings. A theme may serve as the basis for a new site, or to augment an existing site. See also [module](#module).
++A file with [template actions](#template-action), located within the layouts directory of a project, theme, or module. See&nbsp;[details](/templates/).
 +
 +### template action
 +
 +A data evaluation or control structure within a [template](#template), delimited by "{{"&nbsp;and&nbsp;"}}". See the [Go&nbsp;documentation](https://pkg.go.dev/text/template#hdr-Actions) for details.
 +
 +### term
 +
 +A member of a [taxonomy](#taxonomy), used to classify content. See&nbsp;[details](/content-management/taxonomies/).
 +
 +### term page
 +
 +Content with the "term" [page kind](#page-kind). Typically a listing of [regular pages](#regular-page) and [section pages](#section-page) with a given [term](#term).
 +
 +### theme
 +
++A packaged combination of [archetypes](#archetype), assets, content, data, [templates](#template), translation tables, static files, or configuration settings. A theme may serve as the basis for a new site, or to augment an existing site. See also [module](#module).
 +
 +### token
 +
 +An identifier within a format string, beginning with a colon and replaced with a value when rendered. For example, use tokens in format strings for both [permalinks](/content-management/urls/#permalinks) and [dates](/functions/dateformat/#datetime-formatting-layouts).
 +
 +
 +### type
 +
 +See [content type](#content-type).
 +
 +### variable
 +
 +A variable initialized within a [template action](#template-action).
 +
 +### walk
 +
 +To recursively traverse a nested data structure. For example, rendering a multilevel menu.
index a5094a23f5eb27104289d4f938d5bfafa22fb496,0000000000000000000000000000000000000000..3b1ba9dcd4b2c38cbdbacc09f7405c0789388a52
mode 100644,000000..100644
--- /dev/null
@@@ -1,111 -1,0 +1,111 @@@
- Firebase script with retrive credentials, create a service account you can later manage in your GitHub settings.
 +---
 +title: Host on Firebase
 +description: You can use Firebase's free tier to host your static website; this also gives you access to Firebase's NOSQL API.
 +categories: [hosting and deployment]
 +keywords: [hosting,firebase]
 +menu:
 +  docs:
 +    parent: hosting-and-deployment
 +toc: true
 +---
 +
 +## Assumptions
 +
 +1. You have an account with [Firebase][signup]. (If you don't, you can sign up for free using your Google account.)
 +2. You have completed the [Quick Start] or have a completed Hugo website ready for deployment.
 +
 +## Initial setup
 +
 +Go to the [Firebase console][console] and create a new project (unless you already have a project). You will need to globally install `firebase-tools` (node.js):
 +
 +```txt
 +npm install -g firebase-tools
 +```
 +
 +Log in to Firebase (setup on your local machine) using `firebase login`, which opens a browser where you can select your account. Use `firebase logout` in case you are already logged in but to the wrong account.
 +
 +
 +```txt
 +firebase login
 +```
 +
 +In the root of your Hugo project, initialize the Firebase project with the `firebase init` command:
 +
 +```txt
 +firebase init
 +```
 +
 +From here:
 +
 +1. Choose Hosting in the feature question
 +2. Choose the project you just set up
 +3. Accept the default for your database rules file
 +4. Accept the default for the publish directory, which is `public`
 +5. Choose "No" in the question if you are deploying a single-page app
 +
 +## Using Firebase & GitHub CI/CD
 +
 +In new versions of Firebase, some other questions apply:
 +
 +6. Set up automatic builds and deploys with GitHub? 
 +
 +Here you will be redirected to login in your GitHub account to get permissions. Confirm.
 +
 +7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository) 
 +
 +Include the repository you will use in the format above (Account/Repo)
++Firebase script with retrieve credentials, create a service account you can later manage in your GitHub settings.
 +
 +8. Set up the workflow to run a build script before every deploy? 
 +
 +Here is your opportunity to include some commands before you run the deploy.
 +
 +9. Set up automatic deployment to your site's live channel when a PR is merged? 
 +
 +You can let in the default option (main)
 +
 +After that Firebase has been set in your project with CI/CD. After that run:
 +
 +```
 +hugo && firebase deploy
 +```
 +
 +With this you will have the app initialized manually. After that you can manage and fix your GitHub workflow from: https://github.com/your-account/your-repo/actions
 +
 +Don't forget to update your static pages before push!
 +
 +## Manual deploy
 +
 +To deploy your Hugo site, execute the `firebase deploy` command, and your site will be up in no time:
 +
 +```txt
 +hugo && firebase deploy
 +```
 +
 +## CI setup (other tools)
 +
 +You can generate a deploy token using
 +
 +```txt
 +firebase login:ci
 +```
 +
 +You can also set up your CI and add the token to a private variable like `$FIREBASE_DEPLOY_TOKEN`.
 +
 +{{% note %}}
 +This is a private secret and it should not appear in a public repository. Make sure you understand your chosen CI and that it's not visible to others.
 +{{% /note %}}
 +
 +You can then add a step in your build to do the deployment using the token:
 +
 +```txt
 +firebase deploy --token $FIREBASE_DEPLOY_TOKEN
 +```
 +
 +## Reference links
 +
 +* [Firebase CLI Reference](https://firebase.google.com/docs/cli/#administrative_commands)
 +
 +[console]: https://console.firebase.google.com/
 +[Quick Start]: /getting-started/quick-start/
 +[signup]: https://console.firebase.google.com/
index bfb16dc811a721612de3bae00abbb99d0282ea4c,0000000000000000000000000000000000000000..4dc88faf14bc50a05135c95135423f551c830629
mode 100644,000000..100644
--- /dev/null
@@@ -1,191 -1,0 +1,191 @@@
- description: Deploy Hugo as a GitHub Pages project or personal/organizational site and automate the whole process with Github Actions
 +---
 +title: Host on GitHub Pages
++description: Deploy Hugo as a GitHub Pages project or personal/organizational site and automate the whole process with GitHub Actions
 +categories: [hosting and deployment]
 +keywords: [github,git,deployment,hosting]
 +menu:
 +  docs:
 +    parent: hosting-and-deployment
 +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 and automating development workflows and build with GitHub Actions.
 +
 +## Prerequisites
 +
 +1. [Create a GitHub account]
 +2. [Install Git]
 +3. [Create a Hugo site] and test it locally with `hugo server`.
 +
 +[Create a GitHub account]: https://github.com/signup
 +[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
 +[Create a Hugo site]: /getting-started/quick-start/
 +
 +## Types of sites
 +
 +There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub. User and organization sites are connected to a specific account on GitHub.com.
 +
 +{{% note %}}
 +See the [GitHub Pages documentation] to understand the requirements for repository ownership and naming.
 +
 +[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
 +{{% /note %}}
 +
 +
 +[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
 +
 +## Procedure
 +
 +Step 1
 +: Create a GitHub repository.
 +
 +Step 2
 +: Push your local repository to GitHub.
 +
 +Step 3
 +: Visit your GitHub repository. From the main menu choose **Settings**&nbsp;>&nbsp;**Pages**. In then center of your screen you will see this:
 +
 +![screen capture](gh-pages-1.png)
 +{style="max-width: 280px"}
 +
 +Step 4
 +: Change the **Source** to `GitHub Actions`. The change is immediate; you do not have to press a Save button.
 +
 +![screen capture](gh-pages-2.png)
 +{style="max-width: 280px"}
 +
 +Step 5
 +: Create an empty file in your local repository.
 +
 +```text
 +.github/workflows/hugo.yaml
 +```
 +
 +Step 6
 +: Copy and paste the YAML below into the file you created. Change the branch name and Hugo version as needed.
 +
 +{{< code file=".github/workflows/hugo.yaml" >}}
 +# Sample workflow for building and deploying a Hugo site to GitHub Pages
 +name: Deploy Hugo site to Pages
 +
 +on:
 +  # Runs on pushes targeting the default branch
 +  push:
 +    branches:
 +      - main
 +
 +  # Allows you to run this workflow manually from the Actions tab
 +  workflow_dispatch:
 +
 +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
 +permissions:
 +  contents: read
 +  pages: write
 +  id-token: write
 +
 +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
 +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
 +concurrency:
 +  group: "pages"
 +  cancel-in-progress: false
 +
 +# Default to bash
 +defaults:
 +  run:
 +    shell: bash
 +
 +jobs:
 +  # Build job
 +  build:
 +    runs-on: ubuntu-latest
 +    env:
 +      HUGO_VERSION: 0.115.4
 +    steps:
 +      - name: Install Hugo CLI
 +        run: |
 +          wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
 +          && sudo dpkg -i ${{ runner.temp }}/hugo.deb
 +      - name: Install Dart Sass
 +        run: sudo snap install dart-sass
 +      - name: Checkout
 +        uses: actions/checkout@v3
 +        with:
 +          submodules: recursive
 +          fetch-depth: 0
 +      - name: Setup Pages
 +        id: pages
 +        uses: actions/configure-pages@v3
 +      - name: Install Node.js dependencies
 +        run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
 +      - name: Build with Hugo
 +        env:
 +          # For maximum backward compatibility with Hugo modules
 +          HUGO_ENVIRONMENT: production
 +          HUGO_ENV: production
 +        run: |
 +          hugo \
 +            --gc \
 +            --minify \
 +            --baseURL "${{ steps.pages.outputs.base_url }}/"
 +      - name: Upload artifact
 +        uses: actions/upload-pages-artifact@v1
 +        with:
 +          path: ./public
 +
 +  # Deployment job
 +  deploy:
 +    environment:
 +      name: github-pages
 +      url: ${{ steps.deployment.outputs.page_url }}
 +    runs-on: ubuntu-latest
 +    needs: build
 +    steps:
 +      - name: Deploy to GitHub Pages
 +        id: deployment
 +        uses: actions/deploy-pages@v2
 +{{< /code >}}
 +
 +Step 7
 +: Commit the change to your local repository with a commit message of something like "Add workflow", and push to GitHub.
 +
 +Step 8
 +: From GitHub's main menu, choose **Actions**. You will see something like this:
 +
 +![screen capture](gh-pages-3.png)
 +{style="max-width: 350px"}
 +
 +Step 9
 +: When GitHub has finished building and deploying your site, the color of the status indicator will change to green.
 +
 +![screen capture](gh-pages-4.png)
 +{style="max-width: 350px"}
 +
 +Step 10
 +: Click on the commit message as shown above. You will see this:
 +
 +![screen capture](gh-pages-5.png)
 +{style="max-width: 611px"}
 +
 +Under the deploy step, you will see a link to your live site.
 +
 +In the future, whenever you push a change from your local repository, GitHub will rebuild your site and deploy the changes.
 +
 +## Customize the workflow
 +
 +The example workflow above includes this step, which typically takes 10&#8209;15 seconds:
 +
 +```yaml
 +- name: Install Dart Sass
 +  run: sudo snap install dart-sass
 +```
 +
 +You may remove this step if your site, themes, and modules do not transpile Sass to CSS using the [Dart Sass] transpiler.
 +
 +[Dart Sass]: /hugo-pipes/transpile-sass-to-css/#dart-sass
 +
 +## Additional resources
 +
 +- [Learn more about GitHub Actions](https://docs.github.com/en/actions)
 +- [Caching dependencies to speed up workflows](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows)
 +- [Manage a custom domain for your GitHub Pages site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages)
index 5663180f91aef1a85758ffb0c2c84ea9c8178c3e,0000000000000000000000000000000000000000..7d065dce912bc10c242b83a9fc6cd376f339e1df
mode 100644,000000..100644
Binary files differ
index 90b5155adf831bb8696d4271ec69a3ad3f9c3b79,0000000000000000000000000000000000000000..0250e8f54bd85e8d8fa460d08d4d76998e4adbaa
mode 100644,000000..100644
--- /dev/null
@@@ -1,85 -1,0 +1,91 @@@
- description: Hugo ships with its own RSS 2.0 template that requires almost no configuration, or you can create your own RSS templates.
 +---
 +title: RSS templates
- ## RSS template lookup order
++description: Use the built-in RSS template, or create your own.
 +keywords: [rss, xml, templates]
 +categories: [templates]
 +menu:
 +  docs:
 +    parent: templates
 +    weight: 160
 +weight: 160
 +toc: true
 +---
 +
- See [Template Lookup Order](/templates/lookup-order/) for the complete reference.
++## Configuration
 +
- {{% note %}}
- Hugo ships with its own [RSS 2.0 template](#the-embedded-rssxml-template). 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
++By default, when you build your site, Hugo generates RSS feeds for home, section, taxonomy, and term pages. Control feed generation in your site configuration. For example, to generate feeds for home and section pages, but not for taxonomy and term pages:
 +
- 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`).
++{{< code-toggle file=hugo copy=false >}}
++[outputs]
++home = ['html', 'rss']
++section = ['html', 'rss']
++taxonomy = ['html']
++term = ['html']
++{{< /code-toggle >}}
 +
- {{< datatable-filtered "output" "layouts" "OutputFormat == RSS" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
++To disable feed generation for all [page kinds]:
 +
- ## Configure RSS
++{{< code-toggle file=hugo copy=false >}}
++disableKinds = ['rss']
++{{< /code-toggle >}}
 +
- 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 configuration file.
++By default, the number of items in each feed is unlimited. Change this as needed in your site configuration:
 +
- The following values will also be included in the RSS output if specified:
++{{< code-toggle file=hugo copy=false >}}
++[services.rss]
++limit = 42
++{{< /code-toggle >}}
 +
- {{< code-toggle file="hugo" >}}
- languageCode = "en-us"
- copyright = "This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License."
++Set `limit` to `-1` to generate an unlimited number of items per feed.
 +
-     name = "My Name Here"
++The built-in RSS template will render the following values, if present, from your site configuration:
 +
++{{< code-toggle file=hugo copy=false >}}
++copyright = '© 2023 ABC Widgets, Inc.'
 +[author]
- ## The embedded rss.xml template
- 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>`
++name = 'John Doe'
++email = 'jdoe@example.org'
 +{{< /code-toggle >}}
 +
- 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:
++## Include feed reference
 +
- {{ range .AlternativeOutputFormats -}}
-     {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
- {{ end -}}
++To include a feed reference in the `head` element of your rendered pages, place this within the `head` element of your templates:
 +
 +```go-html-template
- If you only want the RSS link, you can query the formats:
++{{ with .OutputFormats.Get "rss" -}}
++  {{ printf `<link rel=%q type=%q href=%q title=%q>` .Rel .MediaType.Type .Permalink site.Title | safeHTML }}
++{{ end }}
 +```
 +
- ```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 -}}
++Hugo will render this to:
 +
- 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.org/index.xml" title="ABC Widgets">
 +```
 +
- ```html
- <link rel="alternate" type="application/rss+xml" href="https://example.com/index.xml" title="Site Title">
++## Custom templates
 +
- _We are assuming `BaseURL` to be `https://example.com/` and `$.Site.Title` to be `"Site Title"` in this example._
++Override Hugo's [built-in RSS template] by creating one or more of your own, following the naming conventions as shown in the [template lookup order table].
++
++For example, to use different templates for home, section, taxonomy, and term pages:
++
++```text
++layouts/
++└── _default/
++    ├── home.rss.xml
++    ├── section.rss.xml
++    ├── taxonomy.rss.xml
++    └── term.rss.xml
 +```
 +
- [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
++RSS templates receive the `.Page` and `.Site` objects in context.
++
++[built-in RSS template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml
++[page kinds]: /getting-started/glossary/#page-kind
++[template lookup order table]: #template-lookup-order
++
++## Template lookup order
++
++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" >}}
index 6ef605ec65093a5cd667de55f5cd8d2d08e6657a,0000000000000000000000000000000000000000..8ba01f927d065cad4ef5d2be17af62f294d0844d
mode 100644,000000..100644
--- /dev/null
@@@ -1,80 -1,0 +1,76 @@@
- ## Ghost
- - [ghostToHugo](https://github.com/jbarone/ghostToHugo) - Convert Ghost blog posts and export them to Hugo.
 +---
 +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.
 +keywords: [migrations, jekyll, wordpress, drupal, ghost, contentful]
 +menu:
 +  docs:
 +    parent: developer-tools
 +    weight: 50
 +weight: 50
 +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/fredrikloch/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.
 +
 +## Octopress
 +
 +- [octohug](https://github.com/codebrane/octohug) - Octopress to Hugo migrator.
 +
 +## DokuWiki
 +
 +- [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.)
 +- [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.
 +- [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.
 +- [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://pypi.org/project/blogger-to-hugo/) - Another tool to import Blogger posts to Hugo. It also downloads embedded images so they will be stored locally.
 +- [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
 +
 +- [contentful-hugo](https://github.com/ModiiMedia/contentful-hugo) - 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 c854b273d62825010d2c8f21059a938ac7ac19dd,0000000000000000000000000000000000000000..1ec788ab85d25385ab9a2c8d76567b48d6be30cb
mode 100644,000000..100644
--- /dev/null
@@@ -1,62 -1,0 +1,62 @@@
-   * Use a service such as [ifttt](https://ifttt.com/date_and_time) to schedule the updates
 +---
 +title: Frequently asked questions
 +linkTitle: Frequently asked questions
 +description: Solutions to some common Hugo problems.
 +categories: [troubleshooting]
 +menu:
 +  docs:
 +    parent: troubleshooting
 +    weight: 20
 +weight: 20
 +keywords: [faqs]
 +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](/content-management/front-matter/#front-matter-variables)? When testing, run `hugo server` with the `-D` or `--buildDrafts` [switch](/getting-started/usage/#draft-future-and-expired-content).
 +
 +Is your Markdown file part of a [leaf bundle](/content-management/page-bundles/)? If there is an `index.md` file in the same or any parent directory then other Markdown files will not be rendered as individual pages.
 +
 +## 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 datetime in the future. If you want the creation and publication datetime to be the same, it's also sufficient to only set `date`[^date-hierarchy].
 +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:
- Yes you can! Read [this](/hosting-and-deployment/hosting-on-netlify/#configure-hugo-version-in-netlify).
++  * Use a service such as [ifttt](https://ifttt.com/date_and_time) to schedule the updates; or
 +  * Set up a deploy hook which you can run with a cron service to deploy your site at intervals, such as [cron-job.org](https://cron-job.org/) (both Netlify and Cloudflare Pages support deploy hooks)
 +
 +Also see this Twitter thread:
 +
 +{{< tweet user="ChrisShort" id="962380712027590657" >}}
 +
 +[^date-hierarchy]: See [Configure Dates](/getting-started/configuration/#configure-dates) for the order in which the different date variables are complemented by each other when not explicitly set.
 +
 +## Can I use the latest Hugo version on Netlify?
 +
++[Yes you can](/hosting-and-deployment/hosting-on-netlify/#configure-hugo-version-in-netlify)!.
 +
 +## I get "... this feature is not available in your current Hugo version"
 +
 +If you process `SCSS` or `Sass` to `CSS` in your Hugo project with `libsass` as the transpiler or if you convert images to the `webp` format, you need the Hugo `extended` version, or else you may see an error message similar to the below:
 +
 +```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 0804f6a32043dda7e0740896d5aaa967d86b94c3,0000000000000000000000000000000000000000..4c412efddec49215d7abd344a90b8c404c164e03
mode 100644,000000..100644
--- /dev/null
@@@ -1,51 -1,0 +1,72 @@@
- 3. The `.GitInfo` feature must be enabled in your Hugo project by passing `--enableGitInfo` flag on the command line or by setting `enableGitInfo` to `true` in your [site's configuration file][configuration].
 +---
 +title: Git variables
 +linkTitle: Git variables
 +description: Get the last Git revision information for every content file.
 +categories: [variables and parameters]
 +keywords: [git]
 +menu:
 +  docs:
 +    parent: variables
 +    weight: 70
 +weight: 70
 +aliases: [/extras/gitinfo/]
 +---
 +
 +{{% note %}}
 +Hugo's Git integrations should be fairly performant but *can* increase your build time. This will depend on the size of your Git history.
 +{{% /note %}}
 +
 +## `.GitInfo` prerequisites
 +
 +1. The Hugo site must be in a Git-enabled directory.
 +2. The Git executable must be installed and in your system `PATH`.
++3. The `.GitInfo` feature must be enabled in your Hugo project by passing `--enableGitInfo` flag on the command line or by setting `enableGitInfo` to `true` in your [site's configuration file][configuration]. 
 +
 +## The `.GitInfo` object
 +
 +The `GitInfo` object contains the following fields:
 +
 +.AbbreviatedHash
 +: the abbreviated commit hash (e.g., `866cbcc`)
 +
 +.AuthorName
 +: the author's name, respecting [`.mailmap`](https://git-scm.com/docs/gitmailmap)
 +
 +.AuthorEmail
 +: the author's email address, respecting [`.mailmap`](https://git-scm.com/docs/gitmailmap)
 +
 +.AuthorDate
 +: the author date
 +
 +.Hash
 +: the commit hash (e.g., `866cbccdab588b9908887ffd3b4f2667e94090c3`)
 +
 +.Subject
 +: commit message subject (e.g., `tpl: Add custom index function`)
 +
 +## `.Lastmod`
 +
 +If the `.GitInfo` feature is enabled, `.Lastmod` (on `Page`) is fetched from Git i.e. `.GitInfo.AuthorDate`. This behavior can be changed by adding your own [front matter configuration for dates](/getting-started/configuration/#configure-front-matter).
 +
 +[configuration]: /getting-started/configuration/
++
++## Hosting considerations
++
++On the site host, your repository must be "deep-cloned," so the returned `.GitInfo` data will be accurate. Otherwise, your site may display only data from your latest commit. Where it's not possible to configure a host's cloning depth, you must handle this through CI/CD (*e.g.*, a 
++GitHub Action or GitLab CI/CD). See the following table:
++
++| Hosting service | Clone depth | Configurable? |
++| :-------------- | :---------- | :-----------: |
++| Cloudflare Pages | Shallow | ✔️ [^CFP] |
++| DigitalOcean App Platform | Deep | ❌ |
++| GitHub Pages | Shallow | ✔️ [^GHP] |
++| GitLab Pages | Shallow | ✔️ [^GLP] |
++| Netlify | Deep | ❌ |
++| Render | Shallow | ❌ |
++| Vercel | Shallow | ❌ |
++
++[^CFP]: To configure a Cloudflare Pages site for deep cloning, preface the site's normal Hugo build command with `git fetch --unshallow &&` (*e.g.*, `git fetch --unshallow && hugo`).
++
++[^GHP]: You can configure the GitHub Action to do a deep clone by specifying `fetch-depth: 0` in the applicable "checkout" step of your workflow file, as shown in the Hugo documentation's [example workflow file](/hosting-and-deployment/hosting-on-github/#procedure).
++
++[^GLP]: You can configure the GitLab Runner's clone depth [as explained in the GitLab documentation](https://docs.gitlab.com/ee/ci/large_repositories/#shallow-cloning); see also the Hugo documentation's [example workflow file](https://gohugo.io/hosting-and-deployment/hosting-on-gitlab/#configure-gitlab-cicd).
index 11a307b5235f702f0669054d869692cf123e8cca,0000000000000000000000000000000000000000..a29a2ce96ae752d0ec33f123537d830b7e70c407
mode 100644,000000..100644
--- /dev/null
@@@ -1,30 -1,0 +1,30 @@@
- publish = "public"
- command = "hugo --gc --minify"
 +[build]
- [build.environment]
-   HUGO_VERSION = "0.117.0"
++  publish = "public"
++  command = "hugo --gc --minify"
 +
- HUGO_ENV = "production"
- HUGO_ENABLEGITINFO = "true"
++  [build.environment]
++    HUGO_VERSION = "0.118.2"
 +
 +[context.production.environment]
- command = "hugo --gc --minify --enableGitInfo"
++  HUGO_ENV           = "production"
++  HUGO_ENABLEGITINFO = "true"
 +
 +[context.split1]
- [context.split1.environment]
- HUGO_ENV = "production"
++  command = "hugo --gc --minify --enableGitInfo"
 +
- command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
++  [context.split1.environment]
++    HUGO_ENV = "production"
 +
 +[context.deploy-preview]
- command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
++  command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
 +
 +[context.branch-deploy]
- HUGO_ENABLEGITINFO = "true"
++  command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
 +
 +[context.next.environment]
- from = "/npmjs/*"
- to = "/npmjs/"
- status = 200
++  HUGO_ENABLEGITINFO = "true"
 +
 +[[redirects]]
++  from   = "/npmjs/*"
++  to     = "/npmjs/"
++  status = 200