Generare Sitemap con Laravel

Impariamo a generare le sitemap per il nostro sito con un package dedicato!
francesco
Marco Spada
01/06/2014 in Package

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:

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:

'Roumen\Sitemap\SitemapServiceProvider',

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 :-)