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.
Top comments (0)