Personaliza el mapa del sitio en el sitio web de Hugo

En este tutorial aprenderemos a deshabilitar o personalizar sitemap.xml para el sitio web de Hugo.

Índice
  1. Visión de conjunto
  2. Deshabilitar sitemap.xml
    1. Deshabilitar usando config.toml
    2. Deshabilitar usando la línea de comando
  3. Personalizar mapa del sitio.xml
    1. Excluir páginas de taxonomía de sitemap.xml
    2. Excluir páginas específicas de sitemap.xml
    3. Excluir taxonomía y páginas específicas de sitemap.xml
  4. Resumen

Visión de conjunto

Cuando genera un sitio web utilizando Hugo Static Site Builder. Hay pocos puntos para entender sobre sitemap.xml:-

  • Hugo fuera de la caja crea un sitemap.xml basado en el protocolo Sitemap v0.9.
  • El archivo sitemap.xml contiene entradas para estos tipo de paginas:-
    • residencia es la página de inicio del sitio web, por ejemplo https://example.com/
    • sección son todas las carpetas en el directorio de contenido $hugo/content/*.*
    • página son todas las páginas en el directorio de contenido $hugo/content/*.*.
    • término de taxonomía por ejemplo URL /categories , /tags
    • taxonomía por ejemplo URL /categories/*.*, /tags/*.*

aquí un ejemplo sitemap.xml incluyendo todo tipo de páginas :-

sitemap.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <!-- <kind>home</kind> -->
    <loc>https://example.com/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
  <url>
    <!-- <kind>section</kind> -->
    <loc>https://example.com/hugo/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
  <url>
    <!--  <kind>page</kind> -->
    <loc>https://example.com/hugo/sitemap-hugo/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
  <url>
    <!-- <kind>taxonomyTerm</kind> -->
    <loc>https://example.com/categories/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
  <url>
    <!--  <kind>taxonomyTerm</kind> -->
    <loc>https://example.com/tags/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
  <url>
    <!--  <kind>taxonomy</kind> -->
    <loc>https://example.com/categories/hugo/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
  <url>
    <!--  <kind>taxonomy</kind> -->
    <loc>https://example.com/tags/hugo-defaults/</loc>
    <lastmod>2020-06-04T00:00:00+00:00</lastmod>
  </url>
</urlset>

Deshabilitar sitemap.xml

Hay dos formas de deshabilitar la generación de sitemap.xml

Deshabilitar usando config.toml

Este enfoque se recomienda cuando desea deshabilitar sitemap.xml permanentemente cada vez que construyes tu sitio web.

Añade el "sitemap" valor en disableKinds variable de configuración en su archivo de configuración.

config.toml
title = "Hugo example site"
baseurl = "https://www.example.com"

disableKinds = ["sitemap"]

[taxonomies]
    category = "categories"
    tag = "tags"

Puede deshabilitar varios tipos de página dando valores separados por comas en disableKinds configuración.
Por ejemplo, a continuación se muestra un ejemplo para deshabilitar la generación de sitemap.xml , RSS Feed y robots.txt archivos todos juntos.

config.toml
title = "Hugo example site"
baseurl = "https://www.example.com"

disableKinds = ["sitemap", "RSS", "robotsTXT"]

[taxonomies]
    category = "categories"
    tag = "tags"

Deshabilitar usando la línea de comando

Este enfoque se recomienda cuando desea deshabilitar sitemap.xml para una versión específica de su sitio web.

Para generar un sitio de Hugo sin un mapa del sitio, ejecute el siguiente comando desde la terminal:

hugo --disableKinds=sitemap

Para servir el sitio web en el entorno localhost sin un mapa del sitio, ejecute el siguiente comando desde la terminal:

hugo server --disableKinds=sitemap

Puede deshabilitar varios tipos de páginas como sitemap.xml , RSS Feed y robots.txt ejecutando el siguiente comando desde la terminal:

hugo --disableKinds=sitemap,RSS,robotsTXT

Personalizar mapa del sitio.xml

Hugo tiene una plantilla de Sitemap incorporada, pero si desea personalizar sitemap.xml luego primero copie y pegue debajo de la plantilla de mapa del sitio predeterminada de hugo en layouts/_default/sitemap.xml ubicación:-

/layouts/_default/sitiomap.xml
{{ 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="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
    <xhtml:link
                rel="alternate"
                hreflang="{{ .Language.Lang }}"
                href="{{ .Permalink }}"
                />{{ end }}
  </url>
  {{ end }}
</urlset>

Ahora hagamos cambios en el modelo anterior para cumplir con nuestros requisitos:

Excluir páginas de taxonomía de sitemap.xml

Este es el caso de uso más común en el que desea omitir páginas de taxonomía como categoría (/categoría/.) y etiquetas (/etiquetas/.) páginas sitemap.xml.

Tenga en cuenta que agregamos una condición {{ if ne .Kind "taxonomy" }} en la plantilla de mapa del sitio predeterminada para excluir páginas de taxonomía

/layouts/_default/sitiomap.xml
{{ 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 }}{{ if ne .Kind "taxonomy" }}
  <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>

Excluir páginas específicas de sitemap.xml

Este también es un caso de uso muy común en el que desea omitir ciertas páginas de sitemap.xml.

Tenga en cuenta que agregamos una condición {{ if ne .Params.sitemap_ignore true }} en la plantilla de mapa del sitio predeterminada para excluir páginas en función de sitemap_ignore bandera

/layouts/_default/sitiomap.xml
{{ 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 }}{{ if ne .Params.sitemap_ignore true }}
  <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>

Ahora cualquier página que desee excluir de sitemap.xmlagregue la siguiente propiedad en la parte superior de esta página

página-blog.md
---

...

sitemap_ignore: true
---

Excluir taxonomía y páginas específicas de sitemap.xml

Combinemos los dos últimos ejemplos en los que desea omitir páginas de taxonomía y páginas específicas basadas en sitemap_ignore bandera. yo uso a continuación sitemap.xml en mi propio sitio web.

Tenga en cuenta que hemos combinado las condiciones de los dos últimos ejemplos. {{ if and (ne .Kind "taxonomy") (ne .Params.sitemap_ignore true) }}

/layouts/_default/sitiomap.xml
{{ 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 }}{{ if and (ne .Kind "taxonomy") (ne .Params.sitemap_ignore true) }}
  <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>

Resumen

En este tutorial, aprendimos cómo personalizar sitemap.xml para su sitio web de Hugo. Si tiene otros requisitos de sitemap.xml personalización, o tiene un problema siguiendo el tutorial. Por favor comenta, intentaré solucionar tu problema lo antes posible.

Si quieres conocer otros artículos parecidos a Personaliza el mapa del sitio en el sitio web de Hugo puedes visitar la categoría Tutoriales.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas