dr.Brain

doctor Brain

мир глазами веб-разработчика

Hugo: карта сайта

шаблон карты сайта (sitemap.xml) для hugo

dr.Brain

время чтения 2 мин.

Photo by Cris Ovalle on Unsplash

Hugo поставляется со встроенным шаблоном карты сайта, соответствующим протоколу версии 0.9, если нет необходимости модифицировать sitemap.xml, никакой работы со стороны пользователя не требуется. Тем не менее, при необходимости переопределить шаблон карты сайта можно.

Карта сайта (sitemap), является страницей (Page) и поэтому может использовать все переменные, доступные для страницы, а также переменные, специфичные только для карты сайта:

  1. .Sitemap.ChangeFreq - частота обновления страницы,
  2. .Sitemap.Priority - приоритет страницы,
  3. .Sitemap.Filename - наименование файла карты сайта.

Если создан файл /layouts/sitemap.xml или layouts/_default/sitemap.xml, он будет использоваться вместо встроенного в ядро Hugo шаблона карты сайта.

Для многоязычных сайтов создается индексный файл карты сайта, который можно заместить файлом layouts/sitemapindex.xml или layouts/_default/sitemapindex.xml.

Вот пример шаблона карты сайта, соответствующий 0.9 версии протокола Sitemap:

{{ 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>{{ .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>

А это пример шаблона индексного файла для многоязычного сайта:

{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	{{ range . }}
	<sitemap>
	   	<loc>{{ .SitemapAbsURL }}</loc>
		{{ if not .LastChange.IsZero }}
	   	<lastmod>{{ .LastChange.Format "2006-01-02T15:04:05-07:00" | safeHTML }}</lastmod>
		{{ end }}
	</sitemap>
	{{ end }}
</sitemapindex>

Для того, чтобы задать параметры конфигурации карты сайта (sitemap.xml), значения переменных карты сайта устанавливаются в файле конфигурации.

Например, для config.toml, это будет выглядеть так:

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

Для config.yaml:`

sitemap:
  changefreq: monthly
  filename: sitemap.xml
  priority: 0.5

Для config.json:

{
   "sitemap": {
      "changefreq": "monthly",
      "filename": "sitemap.xml",
      "priority": 0.5
   }
}

Так же, переменные карты сайта могут быть переопределены в отдельных файлах шаблонах, в этом случае они заменят значения, указанные в конфигурационном файле, во врем рендеринга.


Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.