Parliamo del progetto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: generare una sitemap

Integrazione con PrestaSitemapBundle Sonata Extra si integra con PrestaSitemapBundle per generare un file sitemap.xml. La generazione copre immagini, articoli e pagine di contenuto dell’applicazione. Il processo è completamente automatizzato e include il su...

Integrazione con PrestaSitemapBundle

Sonata Extra si integra con PrestaSitemapBundle per generare un file sitemap.xml. La generazione copre immagini, articoli e pagine di contenuto dell’applicazione. Il processo è completamente automatizzato e include il supporto per i collegamenti multilingue.

Estendere la sitemap

Gli utenti che desiderano personalizzare ulteriormente la mappa del sito, in particolare aggiungendo risorse supplementari dai controller Symfony, sono incoraggiati a consultare la documentazione ufficiale del « PrestaSitemapBundle ». Questa documentazione offre istruzioni dettagliate ed esempi su come utilizzare efficacemente il bundle per estendere le funzionalità della mappa del sito nelle applicazioni basate su Symfony.

La documentazione ufficiale permette in particolare di:

  • Comprendere le funzionalità principali del "PrestaSitemapBundle".
  • Imparare ad aggiungere URL o risorse personalizzate alla mappa del sito.
  • Implementare configurazioni adatte ai siti più complessi.

Configurazione di base

Prendiamo un sito disponibile in quattro lingue: https://my-website.dev/{en,fr,es,it}. Ogni locale dispone della propria versione della mappa del sito.

Per un volume di contenuti moderato, puoi utilizzare la generazione al volo di PrestaSitemapBundle. Adatta i parametri al tuo progetto:

# 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

È tutto.

Con un grande volume di articoli, preferite una generazione pianificata su disco. Posizionate i file generati in una cartella pubblica dedicata: public/sitemaps/Ogni lingua avrà la sua rispettiva cartella quindi:

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

Rimuovere la rotta se si disattiva la generazione al volo:

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

Collegati al tuo shell ed esegui i comandi di generazione. PrestaSitemapBundle espone già il comando di generazione; basta fornirgli il contesto HTTP e la directory di output:

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

Declina quindi il comando per ogni locale in uno script automatizzabile:

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

Esegui questo script con cron o il tuo pianificatore abituale. Ecco il risultato:

❯ 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

L'ultima cosa è creare il tuo file robots.txt per puntare ai tuoi sitemap.

# 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

Controllare il risultato generato

Flusso di generazione della sitemap Sonata Extra

Dopo la generazione, controlla il codice HTTP, la validità XML, gli URL canonici e i link hreflang. Il file robots.txt deve fare riferimento all'URL pubblico della sitemap, senza bloccare le risorse necessarie al rendering.

Condividi questo articolo