Exclude taxonomy Kinds from sitemap.xml

I’m trying to exclude the taxonomies tags and categories from the sitemap.xml, but trying to exclude simply tags doesn’t work when using if eq .Data.Singular .Kind "tags".

How can I exclude one taxonomy? Or multiple taxonomies?

This is the simplified loop from layouts/_default/sitemap.html

{{ range .Data.Pages }}

{{ if eq .Data.Singular .Kind “tags” }}
{{ else }}

// function that generates xml

{{ end }}
{{ end }}

And: how could I exclude multiple taxonomies, but include one?

{{ 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">
  {{ $exclude := slice "tags" "categories" }}
  {{ range .Pages }}
    {{ if not (in $exclude .Data.Plural) }}
      <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="{{ .Language.Lang }}"
                    href="{{ .Permalink }}"
                    />{{ end }}
        <xhtml:link
                    rel="alternate"
                    hreflang="{{ .Language.Lang }}"
                    href="{{ .Permalink }}"
                    />{{ end }}
      </url>
    {{ end }}
  {{ end }}
</urlset>

It would be cleaner to define the list of taxonomies to exclude in the site configuration file:

[params]
taxonomiesExcludedFromSitemap = ["tags", "categories"]

And then:

{{ if not (in .Site.Params.taxonomiesExcludedFromSitemap .Data.Plural) }}
1 Like

Thanks, good points. I found
{{ if not (or (hasPrefix .RelPermalink "/tags") (hasPrefix .RelPermalink "/categories")) }} and was using that, but your methods are cleaner and don’t rely on reading the permalink, and/or can be set in config.toml.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.