Parlons de votre projet
Partitech Sonata Extra Bundle

Sonata Extra Bundle : générer un sitemap

Intégration avec PrestaSitemapBundle Sonata Extra s’intègre à PrestaSitemapBundle pour générer un fichier sitemap.xml. La génération couvre les images, les articles et les pages de contenu de l’application. Le processus est entièrement automatisé et inclut ...

Intégration avec PrestaSitemapBundle

Sonata Extra s’intègre à PrestaSitemapBundle pour générer un fichier sitemap.xml. La génération couvre les images, les articles et les pages de contenu de l’application. Le processus est entièrement automatisé et inclut la prise en charge des liens multilingues.

Étendre le sitemap

Les utilisateurs souhaitant personnaliser davantage le plan du site, notamment en ajoutant des ressources supplémentaires depuis les contrôleurs Symfony, sont encouragés à consulter la documentation officielle du « PrestaSitemapBundle ». Cette documentation offre des instructions détaillées et des exemples sur la manière d'utiliser efficacement le bundle pour étendre les fonctionnalités du plan du site dans les applications basées sur Symfony.

La documentation officielle permet notamment de :

  • Comprendre les fonctionnalités principales du "PrestaSitemapBundle".
  • Apprendre à ajouter des URL ou des ressources personnalisées au plan du site.
  • Mettre en œuvre des configurations adaptées aux sites plus complexes.

Configuration de base

Prenons un site disponible dans quatre langues : https://my-website.dev/{en,fr,es,it}. Chaque locale dispose de sa propre version du sitemap.

Pour un volume de contenu modéré, vous pouvez utiliser la génération à la volée de PrestaSitemapBundle. Adaptez les paramètres à votre projet :

# 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

C'est tout.

Avec un grand volume d’articles, préférez une génération planifiée sur disque. Placez les fichiers générés dans un répertoire public dédié : public/sitemaps/. Chaque langue aura son répertoire respectif donc :

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

Retirez la route si vous désactivez la génération à la volée :

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

Connectez-vous à votre shell et exécutez les commandes de génération. PrestaSitemapBundle expose déjà la commande de génération ; il suffit de lui fournir le contexte HTTP et le répertoire de sortie :

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

Déclinez ensuite la commande pour chaque locale dans un script automatisable :

#!/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

Exécutez ce script avec cron ou votre ordonnanceur habituel. Voici le résultat :

❯ 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

La dernière chose est de créer votre fichier robots.txt pour pointer vers vos 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

Contrôler le résultat généré

Flux de génération du sitemap Sonata Extra

Après génération, contrôlez le code HTTP, la validité XML, les URL canoniques et les liens hreflang. Le fichier robots.txt doit référencer l’URL publique du sitemap, sans bloquer les ressources nécessaires au rendu.

Partager cet article