Section: Générer un sitemap
« Générer un fichier zip | ^ Générer du contenu avec les vues | Autres types de vues » |
− Table des matières
jResponseSitemap permet de générer un sitemap (utilisé par les moteurs de recherche, entre autres Google).
Récupération de la réponse dans le controller :
$rep = $this->getResponse('sitemap');
Vous avez alors dans $rep une instance de l'objet jResponseSitemap
.
Restrictions d'un sitemap ¶
- Un fichier sitemap ne peut contenir que 50 000 urls.
- Un fichier index de sitemap ne peut contenir que 1000 fichiers sitemap, ce qui donne quand même un total 50 000 000 urls !
Génération manuelle ¶
La création d'un sitemap se fait par l'ajout de chacune des urls que vous voulez voir afficher dans le fichier :
$rep->addUrl($loc, $lastmod, $changefreq, $priority);
- $loc : URL de la page
- $lastmod : Date de dernière modification de la page, au format Y-m-d
- $changefreq : Fréquence probable de modification de la page (uniquement les valeurs : always, hourly, daily, weekly, monthly, yearly, never)
- $priority : Priorité de cette URL par rapport aux autres URL de votre site
Seul le paramètre $loc est obligatoire.
Exemple :
$rep->addUrl(jUrl::get('module~home:index'));
$rep->addUrl(jUrl::get('module~contact:index'), null, 'weekly', 1);
Génération automatique à partir de urls.xml ¶
- *L'automatisation du sitemap est possible uniquement en utilisant le moteur d'url significatives de jUrl.**
Une fois la réponse instanciée, il suffit d'appeler une seule méthode :
$rep->importFromUrlsXml();
return $rep;
Génération d'un index de sitemap ¶
Si vous avez vraiment un très gros site et qu'un seul fichier sitemap ne suffit pas, vous pouvez en créer plusieurs via les 2 méthodes ci-dessus et ensuite les lier dans un index de sitemap :
$rep->addSitemap($loc, $lastmod);
- $loc : URL d'un sitemap
- $lastmod : Date de dernière modification de la page, au format Y-m-d
Seul le paramètre $loc est obligatoire.
Ainsi, vous écrivez plusieurs actions qui génèrent un sitemap, et une autre action
qui va générer l'index. Pour donner l'url des sitemaps à addSitemap
, vous
pouvez utiliser jUrl::get()
.
$rep->addSitemap(jUrl::get('mymodule~sitemap:s1');
$rep->addSitemap(jUrl::get('mymodule~sitemap:s2');
$rep->addSitemap(jUrl::get('mymodule~sitemap:s3');
$rep->addSitemap(jUrl::get('mymodule~sitemap:s4');
return $rep;
s1, s2, s3 et s4 sont des actions qui génèrent des sitemaps.
Avertir les moteurs de recherche ¶
Pour donner l'adresse de votre sitemap aux moteurs de recherche, il y a la
méthode manuelle qui consiste à aller sur chacun des moteurs de recherche et de
leur fournir l'URL de votre sitemap. Ou vous pouvez utiliser la méthode
ping()
:
$sitemapurl = jUrl::get('mymodule~sitemap:index')
$url = 'http'. (empty($_SERVER['HTTPS']) ? '' : 's') .'://'. $_SERVER['HTTP_HOST'] . urlencode($sitemapurl);
// google
$rep->ping('http://www.google.com/webmasters/tools/ping?sitemap=' . $url);
// yahoo
$rep->ping('http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=YahooDemo&url=' . $url);
// Live
$rep->ping('http://webmaster.live.com/ping.aspx?siteMap='.$url);
// Ask
$rep->ping('http://submissions.ask.com/ping?sitemap=' . $url);