Traduzione dell’articolo Generate a sitemap using Laravel
Se stai sviluppando il tuo sito con Laravel probabilmente avrai l’esigenza di posizionarlo su Google e sugli altri motori di ricerca. Una sitemap contribuisce al posizionamento fornendo a Google una “mappa” delle URL per migliorare l’indicizzazione dei contenuti.
Nella sitemap non farai altro che elencare, in modo gerarchico, le URL del tuo sito: ad esempio se il tuo sito è multilingua, la sitemap dovrà contenere tutte le URL per ogni lingua.
Per approfondire il discorso ti consiglio di leggere le seguenti linee guida di Google:
- Che cosa sono le Sitemap?
- Fomati e linee guida per le Sitemap
- [Siti multiregionali e multilingue](Siti multiregionali e multilingue)
- Consenti a Google di visualizzare la lingua corretta per gli utenti
- Come consentire a Google di visualizzare la lingua corretta o l’URL locale
Package
Per creare le tue sitemap ti presento un package molto interessante: laravel-sitemap.
Installazione
Per installare il package apri il file composer.json e aggiungi la seguente istruzione nell’array require:
"roumen/sitemap": "dev-master"
Ora dalla riga di comando lancia il seguente comando:
composer update
Aggiungi al service provider il package:
'RoumenSitemapSitemapServiceProvider',
Pubblica il file di configurazione con il seguente comando artisan. (OPZIONALE)
php artisan config:publish roumen/sitemap
Bene, l’installazione è completata. Ora vediamo come usare il package per generare sitemap.
Generare Sitemap Dinamiche
Una sitemap viene generata dinamicamente ad ogni chiamata dell’URL http://domain.com/sitemap. Ogni volta che viene chiamata questa URL, il package si occuperà di recuperare tutte le URL del sito e ritornare la sitemap in XML o in un altro formato supportato. Per una migliore ottimizzazione del sistema il package permette di effettuare un caching della sitemap per uno specifico periodo di tempo.
Per definire la sitemap dobbiamo indicare una route specifica /sitemap
File:
Directory:
Puoi aggiungere il seguente codice direttamente all’interno di routes.php
o in un altro file per una migliore separazione del codice.
Route::get(‘sitemap’, function(){
// crea il nuovo oggetto
$sitemap = App::make(“sitemap”);
// imposta la cache (key (string), la durata è in minuti
$sitemap->setCache(‘laravel.sitemap’, 3600);
// gli elementi vanno in un nested array in questo formato
$translations= array(
array(
‘url’=>’http://domain.com/en/topic’,
‘language’=>’en’
),
array(
‘url’=>’http://domain.com/topic’,
‘language’=>’hr’
)
);
// assumiamo che di default il sito sia croato
$sitemap->add(
‘http://domain.com/topic’, // loc
‘2012-08-25T20:10:00+02:00’, // datetime modified
1.0, // priority from 0.0 to 1.0
‘daily’, // frequency
null, // title
null, // images array() (url|caption)
$translations // translations array() (url|language)
);
return $sitemap->render(‘xml’);
});
E’ tutto! Adatta il codice di sopra al tuo sito includendo tutte le URL e rispettando la stessa sintassi, e avrai la tua sitemap.
Su GitHub puoi trovare diversi esempi che potranno guidarti ulteriormente all’utilizzo del plugin.
Spero che questo articolo ti sia stato utile, ora puoi generare la sitemap per il tuo sito 🙂