Raccourcis : Contenu - rubriques - sous rubriques
EN FR

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