Hablemos de su proyecto
Partitech Sonata Extra Bundle

Paquete Extra Sonata: generar un sitemap

Integración con PrestaSitemapBundle Sonata Extra se integra con PrestaSitemapBundle para generar un archivo sitemap.xml. La generación cubre las imágenes, los artículos y las páginas de contenido de la aplicación. El proceso es totalmente automatizado e inc...

Integración con PrestaSitemapBundle

Sonata Extra se integra con PrestaSitemapBundle para generar un archivo sitemap.xml. La generación cubre las imágenes, los artículos y las páginas de contenido de la aplicación. El proceso es totalmente automatizado e incluye el soporte de enlaces multilingües.

Ampliar el sitemap

Los usuarios que deseen personalizar más el mapa del sitio, especialmente añadiendo recursos adicionales desde los controladores de Symfony, son alentados a consultar la documentación oficial del « PrestaSitemapBundle ». Esta documentación ofrece instrucciones detalladas y ejemplos sobre cómo usar eficazmente el bundle para ampliar las funcionalidades del mapa del sitio en aplicaciones basadas en Symfony.

La documentación oficial permite notamment de:

  • Comprender las funcionalidades principales del "PrestaSitemapBundle".
  • Aprender a agregar URL o recursos personalizados al mapa del sitio.
  • Implementar configuraciones adaptadas a sitios más complejos.

Configuración básica

Tomemos un sitio disponible en cuatro idiomas: https://my-website.dev/{en,fr,es,it}. Cada localidad dispone de su propia versión del sitemap.

Para un volumen de contenido moderado, puede utilizar la generación en tiempo real de PrestaSitemapBundle. Adapte los parámetros a su proyecto:

# config/packages/presta_sitemap.yaml
presta_sitemap:
  defaults:
    priority: 1
    changefreq: daily
    lastmod: now
# config/routes.yaml
presta_sitemap:
  resource: "@PrestaSitemapBundle/config/routing.yml"
# public/robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://my-website.dev/en/sitemap.xml
Sitemap: https://my-website.dev/fr/sitemap.xml
Sitemap: https://my-website.dev/es/sitemap.xml
Sitemap: https://my-website.dev/it/sitemap.xml

Eso es todo.

Con un gran volumen de artículos, prefiera una generación planificada en disco. Coloque los archivos generados en un directorio público dedicado: public/sitemaps/Cada idioma tendrá su propio directorio, por lo tanto:

public/sitemaps/en
public/sitemaps/fr
public/sitemaps/es
public/sitemaps/it
# config/packages/presta_sitemap.yaml
presta_sitemap:
  defaults:
    priority: 1
    changefreq: daily
    lastmod: now

Elimine la ruta si desactiva la generación en tiempo real:

# config/routes.yaml
#presta_sitemap:
#  resource: "@PrestaSitemapBundle/config/routing.yml"

Conéctese a su shell y ejecute los comandos de generación. PrestaSitemapBundle ya expone el comando de generación; solo necesita proporcionarle el contexto HTTP y el directorio de salida:

'SYMFONY_HTTP_CONTEXT_URL=""https://my-website.dev/ensymfony console presta:sitemaps:dump public/sitemaps/en/ --base-url https://my-website.dev/en `

Luego declina el comando para cada configuración regional en un script automatizable:

#!/bin/sh

SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/en" symfony console presta:sitemaps:dump public/sitemaps/en/  --base-url https://my-website.dev/sitemaps/en
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/fr" symfony console presta:sitemaps:dump public/sitemaps/fr/  --base-url https://my-website.dev/sitemaps/fr
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/es" symfony console presta:sitemaps:dump public/sitemaps/es/  --base-url https://my-website.dev/sitemaps/es
SYMFONY_HTTP_CONTEXT_URL="https://my-website.dev/it" symfony console presta:sitemaps:dump public/sitemaps/it/  --base-url https://my-website.dev/sitemaps/it

Ejecute este script con cron o su programador habitual. Aquí está el resultado:

❯ tree public/sitemaps/ -l
public/sitemaps/
├── en
│   ├── sitemap.Articles.xml
│   ├── sitemap.Medias.xml
│   ├── sitemap.Pages.xml
│   └── sitemap.xml
├── es
│   ├── sitemap.Medias.xml
│   ├── sitemap.Pages.xml
│   └── sitemap.xml
├── fr
│   ├── sitemap.Articles.xml
│   ├── sitemap.Medias.xml
│   ├── sitemap.Pages.xml
│   └── sitemap.xml
└── it
    ├── sitemap.Medias.xml
    ├── sitemap.Pages.xml
    └── sitemap.xml

Lo último es crear su archivo robots.txt para apuntar a sus sitemaps.

# public/robots.txt
User-agent: *
Disallow: /admin/
Sitemap: https://my-website.dev/sitemaps/en/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/fr/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/es/sitemap.xml
Sitemap: https://my-website.dev/sitemaps/it/sitemap.xml

Controlar el resultado generado

Flujo de generación del sitemap Sonata Extra

Después de la generación, controle el código HTTP, la validez XML, las URL canónicas y los enlaces hreflang. El archivo robots.txt debe referenciar la URL pública del sitemap, sin bloquear los recursos necesarios para la renderización.

Compartir este artículo