[Hugo]: Sitemap.xml
Anastasiia_Berest
Posted on March 18, 2023
Hi. Today I will show you my Hugo template for generation Sitemap.xml.
First what you must do is go to: layouts/_default and create sitemap.xml. The code inside look like this:
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
{{ range .Data.Pages }}
<url>
<loc>{{ .RelPermalink }}</loc>
{{ if not .Lastmod.IsZero }}
<lastmod>
{{ safeHTML ( .Lastmod.Format "20018-01-02T15:04:05-07:00" ) }}
</lastmod>
{{ end }}
{{ with .Sitemap.ChangeFreq }}
<changefreq>{{ . }}</changefreq>
{{ end }}
{{ if ge .Sitemap.Priority 0.0 }}
{{ if eq .RelPermalink .Site.BaseURL }}
<priority> 1 </priority>
{{ end }}
{{ $urlCheck := .RelPermalink | relURL }}
{{ $urlSub2 := findRE "([^/]+).*" .RelPermalink 1 }}
{{ $urlSubFix := replaceRE "[^/]*?((?:/[^/]*?){2})$" "$1" .RelPermalink }}
{{ if eq $urlCheck $urlSubFix }}
<priority> 0.8 </priority>
{{ end }}
{{ if not ( eq .RelPermalink .Site.BaseURL | or ( eq $urlCheck $urlSubFix )) }}
<priority> 0.6 </priority>
{{ end }}
{{ end }}
{{ if .IsTranslated }}{{ range .Translations }}
<xhtml:link
rel="alternate"
hreflang="{{ .Lang }}"
href="{{ .RelPermalink }}"
/>{{ end }}
<xhtml:link
rel="alternate"
hreflang="{{ .Lang }}"
href="{{ .RelPermalink }}"
/>{{ end }}
</url>
{{ end }}
</urlset>
Don't forgot paste inside root folder in file config.toml this code:
[sitemap]
ChangeFreq = "daily"
Priority = 0.6
Weight = [["main", "1"], ["sub2", "0.8"], ["sub3", "0.6"]]
enableRobotsTXT = true
The result sitemap looks like this:
We have for main page priority index 1, for pages level 1, like /section/ - priority 0.8 and for pages level 2, like /section/posts - priority 0.6.
$urlSubFix - check url like /section/posts/ and save only /posts/ (priority 0.6) and for url like /section/ it saves /section/ (priority 0.8), it makes the pattern in $urlSubFix regexp.
Hugo SSG official documentation for sitemap.
Posted on March 18, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.