Prestashop 1.5.6 & Google sitemap XML : message d’erreur “Date non valide”

Vous avez peut-être été confronté à ce message d’erreur après avoir soumis à Google votre sitemap Prestashop : “Date non valide”? Késako ? Voilà la solution pour corriger ce bug dans le module “gsitemap” de Prestashop 1.5.

Tout d’abord il vous faut savoir que votre fichier sitemap doit avoir des dates au format TDZ (Time Zone Designator). C’est-à-dire qu’il faut normalement, si vous utilisez les heures dans vos dates (ce que fait PS), spécifier la zone de temps, à savoir GMT+1 pour la France par exemple.

Vos dates doivent donc être au format “2013-11-01T15:56:52+01:00” et non “2013-11-01 15:56:52”. Vous voyez la différence ? un + 01:00 a été ajouté pour spécifier la zone de temps en fonction de la géographie de votre service.

La doc de Google nous indique pourtant :

Votre sitemap contient une ou plusieurs dates incorrectes.

Le problème peut provenir du format de la date ou de la date elle-même. Les dates doivent respecter le codage de date et d’heure W3C (vous pouvez cependant omettre la partie correspondant à l’heure). Exemple :

2005-02-21  
2005-02-21T18:00:15+00:00

Spécifier l’heure est optionnel (par défaut, l’heure est 00:00:00Z), mais si vous le faites, vous devez également spécifier un fuseau horaire.

Donc comment réparer cette erreur me direz-vous ? Simplement en modifiant le module gsitemap. Pour ce faire, il vous faut éditer le fichier modules/gsitemap/gsitemap.php avec votre éditeur texte favori (notpad++, bbedit, sublimtext par exemple). Et à la ligne 619, dans la fonction _addSitemapNode, ajouter ces 2 lignes :

date_default_timezone_set('Europe/Paris');
$last_mod = date('Y-m-d\TH:i:sP', strtotime($last_mod));

Ce qui aura pour effet de reformater la date et l’heure dans le node loc pour la balise lastmode.

xml-sitemap-prestashop

 

Il ne vous reste plus qu’à générer de nouveau votre sitemap et vous n’aurez plus le problème de “Date non valide”.

Bon référencement et bonnes ventes…

Sources :

 

4.89 avg. rating (96% score) - 9 votes