hugo/docs/content/templates/sitemap.md
Jack Taylor 90d3fbf1da tplimpl: Add translation links to the default sitemap template
For pages with translations, add links with hreflang attributes to the
default sitemap template. This helps Google to show the correct
language page in its search results. The syntax used is based on
Google's example at [1].

Also update the sitemap template docs to reflect the changes in the
default template.

[1]
https://support.google.com/webmasters/answer/2620865?hl=en&topic=2370587&ctx=topic

Fixes #2569
2017-04-22 22:37:14 +02:00

2.5 KiB
Raw Blame History

aliases lastmod date linktitle menu next notoc prev title weight
/layout/sitemap/
2015-12-10 2014-05-07 Sitemap
main
parent
layout
/templates/404 true /templates/rss Sitemap Template 95

A single Sitemap template is used to generate the sitemap.xml file. Hugo automatically comes with this template file. No work is needed on the users' part unless they want to customize sitemap.xml.

A sitemap is a Page and have all the page variables available to use in this template along with Sitemap-specific ones:

.Sitemap.ChangeFreq The page change frequency
.Sitemap.Priority The priority of the page
.Sitemap.Filename The sitemap filename

If provided, Hugo will use /layouts/sitemap.xml instead of the internal one.

Hugos sitemap.xml

This template uses the version 0.9 of the Sitemap Protocol with Google's hreflang attributes for linking to translated content.

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  {{ range .Data.Pages }}
  <url>
    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
  </url>
  {{ end }}
</urlset>

Important: Hugo will automatically add the following header line to this file on render. Please don't include this in the template as it's not valid HTML.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

Configuring sitemap.xml

Defaults for <changefreq>, <priority> and filename values can be set in the site's config file, e.g.:

[sitemap]
  changefreq = "monthly"
  priority = 0.5
  filename = "sitemap.xml"

The same fields can be specified in an individual page's front matter in order to override the value for that page.