29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Extensions / eZ Publish : Google Sitemap Generator / eZ Publish 3.x : Extension Googlesitemaps





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : Google Sitemap Generator

Table des matières

  1. Générateur de fichier sitemap pour Google
  2. Générateur de fichier sitemap pour Google (eZ Publish 3.x)

eZ Publish 3.x : Extension Googlesitemaps

Date de publication: le samedi 26 novembre 2011 à 12h35
Dernière modification: par Pascal BOYER le samedi 26 novembre 2011 à 15h01

Googlesitemaps : comment référencer son site eZ publish

La contribution GoogleSiteMaps permet de créer automatiquement un fichier XML à destination des robots d'indexation de google tel que googlebot par exemple. Le but de ce fichier XML est de renseigner de façon précise et personnalisée les robots sur les URI de notre site que nous souhaitons qu'ils visitent et donc indexent. Mais également de leur indiquer la fréquence à laquelle nous souhaitons qu'ils reviennent visiter ces URI.

Une documentation exhaustive sur le fonctionnement des fichiers Sitemap est fournie par google à cette adresse: Utilisation du protocole Sitemap .
Le premier paragraphe de cette documentation, Présentation générale, explique très bien ce à quoi sert un fichier Sitemap et surtout ce à quoi il ne sert pas.

Un autre site, entièrement dédié au protocole Sitemap : sitemap.org

:
Yahoo! et Microsoft ont adopté le protocole de Google:  techno.branchez-vous.com

:
Une extension améliorée et très configurable existe pour les versions 4 d'eZ Publish: googlesitemapgenerator

Googlesitemaps : compte google obligatoire !

En effet, lorsqu'on se rend sur la page Outils pour les webmasters on peut lire au bas de la page:

eZ Publish 3.x : extension google sitemap generator

Googlesitemaps : télécharger

Googlesitemaps : installer

Une fois l'archive googlesitemaps.zip téléchargée, nous devons la dézipper dans le répertoire extension/:

unzip -d /usr/local/www/extension/ googlesitemaps.zip

Archive:  googlesitemaps.zip
   creating: /usr/local/www/extension/googlesitemaps/
   creating: /usr/local/www/extension/googlesitemaps/addon/
  inflating: /usr/local/www/extension/googlesitemaps/addon/sitemap.php
   creating: /usr/local/www/extension/googlesitemaps/autoloads/
  inflating: /usr/local/www/extension/googlesitemaps/autoloads/ezextlinkfixoperator.php
  inflating: /usr/local/www/extension/googlesitemaps/autoloads/eztemplateautoload.php
   creating: /usr/local/www/extension/googlesitemaps/design/
   creating: /usr/local/www/extension/googlesitemaps/design/standard/
   creating: /usr/local/www/extension/googlesitemaps/design/standard/templates/
  inflating: /usr/local/www/extension/googlesitemaps/design/standard/templates/googlesitemap_pagelayout.tpl
   creating: /usr/local/www/extension/googlesitemaps/design/standard/templates/node/
   creating: /usr/local/www/extension/googlesitemaps/design/standard/templates/node/view/
  inflating: /usr/local/www/extension/googlesitemaps/design/standard/templates/node/view/googlesitemaps.tpl
  inflating: /usr/local/www/extension/googlesitemaps/install.txt
  inflating: /usr/local/www/extension/googlesitemaps/readme.txt
   creating: /usr/local/www/extension/googlesitemaps/settings/
  inflating: /usr/local/www/extension/googlesitemaps/settings/design.ini.append.php
  inflating: /usr/local/www/extension/googlesitemaps/settings/fetchalias.ini.append.php
  inflating: /usr/local/www/extension/googlesitemaps/settings/googlesitemaps.ini.append.php
  inflating: /usr/local/www/extension/googlesitemaps/settings/layout.ini.append.php
  inflating: /usr/local/www/extension/googlesitemaps/settings/site.ini.append.php

Un nouveau sous-répertoire a donc été créé:

extension/googlesitemaps/

Si besoin, on n'oublie pas de modifier les propriétaires des nouveaux fichiers et répertoires:

chown -R www-data:www-data extension/googlesitemaps/

:
www-data et www-data sont respectivement les valeurs des deux directives User et Group du fichier de configuration du serveur web Apache. L'option -R permet d'appliquer la commande chown récursivement.

:
Le seul fait d'ajouter le sous-répertoire /googlesitemaps/ dans le répertoire extension/ implique son affichage dans la liste des extensions disponibles sur le système dans l'onget Administration de l'interface d'administration:

eZ Publish 3.x : extension google sitemap generator

Fig. 1: L'extension googlesitemaps est présente (mais non activée) dans la liste des extensions disponibles sur le système

Googlesitemaps : activer

Il faut maintenant activer l'extension, soit à partir de l'interface d'administration, auquel cas il s'agira d'une activation générale de l'extension, c'est à dire valable pour tous les siteaccess, soit directement à partir des fichiers de configuration de surcharge.

  • Pour une surcharge générale, le fichier à configurer est settings/override/site.ini.append.php dans lequel il faut alors ajouter:
[ExtensionSettings]
ActiveExtensions[]=googlesitemaps

:
Si vous activez l'extension directement à partir de l'interface d'administration, c'est à dire en cochant l'extension puis en validant avec le bouton Appliquer les modifications (voir figure 1), alors le fichier de configuration settings/override/site.ini.append.php est automatiquement modifié.

Dans le cas de la surcharge générale et si vous renseignez le fichier settings/override/site.ini.append.php à la main, c'est à dire sans passer par l'interface d'administration, alors la nouvelle extension googlesitemaps doit apparaître sélectionnée dans l'interface d'administration sans avoir à vider les caches:

eZ Publish 3.x : extension google sitemap generator

Fig. 2: L'extension est activée si le fichier settings/override/site.ini.append.php est renseigné

  •  Si on souhaite n'activer l'extension que pour certains siteaccess, alors le fichier est settings/siteaccess/<siteaccess_public>/site.ini.append.php dans lequel il faut ajouter cette fois-ci:
[ExtensionSettings]
ActiveAccessExtensions[]=googlesitemaps

Dans ce cas, l'extension n'apparaît pas activée dans l'interface d'administration et l'on retrouve exactement le même affichage que celui présenté par la figure 1.

Ne pas oublier de vider les caches.

Googlesitemaps : paramétrer

Il y a trois fichiers importants dans cette contribution.

1°/ googlesitemap_pagelayout.tpl

Le template extension/googlesitemaps/design/standard/templates/googlesitemap_pagelayout.tpl est le template produisant l'affichage du résultat final, à savoir le contenu du fichier sitemap.xml (voir ce paragraphe ).

Le contenu de ce template doit ce limiter à ces 4 lignes:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{$module_result.content}
</urlset>

:
 Consultez cette page « Création manuelle d'un sitemap » pour connaître le contenu exact des lignes 1, 2 et 4 présentées ci-dessus.
 Pour être tout à fait conforme à la norme XML, ce fichier ne doit, en particulier, contenir aucun espace avant la ligne 1 (ce qui exclut de placer des commentaires avant cette ligne).

La ligne 3 a pour objet d'afficher le contenu du template googlesitemaps.tpl présenté ci-après.

2°/ googlesitemaps.tpl

Le template extension/googlesitemaps/design/standard/templates/node/view/googlesitemaps.tpl permet de générer l'ensemble des liens qui seront présentés par le fichier sitemap.xml.

La ligne de ce fichier qui génère les liens est la ligne 13:

<loc>{concat('http://',$siteurl,$node.url_alias|ezurl(no))|extlinkfix(del_layout)}</loc>

Concat

Cet opérateur de template est décrit ici: concat

La variable $siteurl

Cette variable contient la valeur du paramètre SiteURL de la rubrique [SiteSettings] du fichier site.ini ou de l'une de ses surcharges.

Il est tout à fait possible de supprimer cette variable afin d'écrire quelque chose comme ça:

<loc>{concat('http://www.luxpopuli.fr',$node.url_alias|ezurl(no))|extlinkfix(del_layout)}</loc>

ezurl ou ezroot

Si vous avez mis en place la réécriture des URI et supprimé l'affichage de index.php dans tous vos URI, alors vous devez remplacer ezurl par ezroot .

:
 Dans la mesure où le résultat final produit est un fichier XML et non (X)HTML, il ne faut pas que le template googlesitemaps.tpl comporte de balises <br />.
 Or on serait tenté d'ajouter une telle balise à la fin de la ligne 17, comme ceci:

16     <priority>{$priority[$depth]}</priority>
17    </url> <br />

afin d'obtenir un fichier sitemap.xml où toutes les lignes seraient les unes sous les autres (et non pas les unes à la suite des autres).

:
 Ce qui importe, ce n'est pas l'affichage direct du fichier sitemap.xml produit par votre navigateur, mais son code source. C'est ce dernier qui est lu par les robots de Google, Yahoo! et LiveSearch et doit donc respecter la syntaxe décrite par la documentation de google.
 En suivant les prescriptions de cet article, vous obtiendrez un résultat correct.

Surcharge

Pour adapter la syntaxe du template extension/googlesitemaps/design/standard/templates/node/view/googlesitemaps.tpl à son cas personnel, on peut recourir à une surcharge du template.

:
 La surcharge de ce template nécessite de renommer le template original. Sans cela, la règle de surcharge ne sera pas prise en compte.

Tout d'abord, on peut créer les deux répertoires suivants:

mkdir design/plain_site/override/templates/node

mkdir design/plain_site/override/templates/node/view

Si besoin, on n'oublie pas de modifier les propriétaires des nouveaux fichiers et répertoires:

chown -R www-data:www-data design/plain_site/override/templates/node

Ensuite on fait une copie du template:

cp -p extension/googlesitemaps/design/standard/templates/node/view/googlesitemaps.tpl design/plain_site/override/templates/node/view/

Puis on renomme le template original en extension/googlesitemaps/design/standard/templates/node/view/googlesitemaps.tpl_orig par exemple.

Enfin on crée la surcharge dans le fichier override.ini.append.php du siteaccess public:

[googlesitemaps]
Source=node/view/googlesitemaps.tpl
MatchFile=node/view/googlesitemaps.tpl
Subdir=templates

Ne reste plus alors qu'à vider les caches.

3°/ googlesitemaps.ini.append.php

Le fichier de configuration extension/googlesitemaps/settings/googlesitemaps.ini.append.php permet de configurer le comportement de l'extension et donc la sortie renvoyée par celle-ci.

:
 Si on configure directement le fichier extension/googlesitemaps/settings/googlesitemaps.ini.append.php alors cela vaudra pour tous les siteaccess.
 Les fichiers de configuration des extensions sont prioritaires sur ceux présents dans les siteaccess.

:
 Si on déplace ce fichier dans un siteaccess spécifique, alors on obtiendra un paramètrage valable uniquement pour ce siteaccess (voir explications ci-après).

Paramétrage spécifique à un siteaccess

  •  Commencer par déplacer (et non copier) le fichier extension/googlesitemaps/settings/googlesitemaps.ini.append.php dans un siteaccess public pour lequel on souhaite mettre en place cette extension.

mv extension/googlesitemaps/settings/googlesitemaps.ini.append.php settings/siteaccess/mon_siteaccess_public/

  •  Editer ensuite le fichier googlesitemaps.ini.append.php pour dresser la liste des identifiants des classes dont on souhaite (include), ou dont on ne souhaite pas (exclude), que les objets aient un lien dans le sitemap. En clair, le paramètre Class_Filter_Type de la rubrique [Classes] permet d'inclure ou d'exclure de la liste de liens du fichier final sitemap.xml la liste des objets dont l'identifiant de classe est contenu par le tableau Class_Filter_Array[]
[Classes]
#Class_Filter_Type=exclude
Class_Filter_Type=include
 
Class_Filter_Array[]
Class_Filter_Array[]=identifiants_de_classe_1
Class_Filter_Array[]=identifiants_de_classe_2
Class_Filter_Array[]=identifiants_de_classe_3
Class_Filter_Array[]=identifiants_de_classe_4
  •  Puis, grâce au tableau Node_Depth_ChangeFreq[], il faut définir la fréquence de passage des robots et enfin, avec le tableau Node_Depth_Priority[], indexer les noeuds en fonction de leur profondeur. Ce qui nous amène à ajouter ceci au fichier <siteaccess_public>/ googlesitemaps.ini.append.php:
[NodeSettings]
#set false to include only main node of content object in sitemap
#set true to include all nodse of content object in sitemap
Main_Node_Only=false
 
Node_Depth_ChangeFreq[]
Node_Depth_ChangeFreq[]=always
Node_Depth_ChangeFreq[]=hourly
Node_Depth_ChangeFreq[]=daily
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=monthly
Node_Depth_ChangeFreq[]=yearly
Node_Depth_ChangeFreq[]=never
 
Node_Depth_Priority[]
Node_Depth_Priority[]=1
Node_Depth_Priority[]=0.9
Node_Depth_Priority[]=0.8
Node_Depth_Priority[]=0.7
Node_Depth_Priority[]=0.6
Node_Depth_Priority[]=0.5
Node_Depth_Priority[]=0.4

always représente les noeuds de premier niveau. Ils seront visités en permanence et seront affectés de l'indice 1

hourly représente les noeuds de deuxième niveau. Ils seront visités toutes les heures et seront affectés de l'indice 0.9

et ainsi de suite...

:
 Il est impossible d'affecter la même priorité à tous les URI de votre site sans obtenir un message d'avertissement (et non d'erreur) lors de l'enregistrement par Google de votre sitemap.
 Par exemple, si l'on souhaite que les robots visitent tout le site toutes les semaines, il suffit de modifier ainsi le fichier (ce qui engendrera un message d'avertissement):

Node_Depth_ChangeFreq[]
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
Node_Depth_ChangeFreq[]=weekly
 
Node_Depth_Priority[]
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1
Node_Depth_Priority[]=1

:
 Il est nécessaire d'avoir autant de lignes pour ces deux tableaux que de profondeur de noeud.

Cette remarque implique que chaque ligne du fichier final sitemap.xml commençant par http://...... doit obligatoirement se terminer par une des valeurs du tableau Node_Depth_ChangeFreq[] suivie d'une des valeurs du tableau Node_Depth_Priority[].

Si tel n'est pas le cas alors il manque des lignes au fichier googlesitemaps.ini.append.php

  Googlesitemaps : tester

Puisque l'on vient de modifier un fichier de configuration il est nécessaire de vider les caches. Une fois fait, on teste l'URI suivante:

http://www.entre-lac-et-montagne.com/layout/set/googlesitemap/content/view/googlesitemaps/2

qui doit renvoyer quelque chose comme ça:

eZ Publish 3.x : extension google sitemap generator

Fig. 3: Résultat de l'affichage du fichier sitemap.xml par un navigateur

Voici le code source de cette même page (ce que lisent les robots de Google, Yahoo! et LiveSearch):

eZ Publish 3.x : extension google sitemap generator

Fig. 4: Résultat de l'affichage du code source du fichier sitemap.xml par un navigateur

Traducteur d'URI

Pour que l'outil de Google de gestion des fichiers sitemap.xml fonctionne, il faut lui donner un URI pointant vers un fichier sitemap.xml, c'est à dire un URI ressemblant à ceci:

http://www.entre-lac-et-montagne.com/sitemap.xml

Comme nous ne disposons pas d'un tel URI, toute l'astuce va consister, grâce à l'emploi du traducteur d'URI fourni par eZ Publish, à faire en sorte que l'URI:

http://www.entre-lac-et-montagne.com/sitemap.xml

renvoie exactement la même chose que l'URI:

http://www.entre-lac-et-montagne.com/layout/set/googlesitemap/content/view/googlesitemaps/2

Voici l'emplacement du traducteur d'URI:

eZ Publish 3.x : extension google sitemap generator

Fig. 5: L'interface du traducteur d'URI de eZ publish

Dans le premier champ du premier cadre, on indique l'URI virtuel:

/sitemap.xml

et dans le deuxième champ l'URI système, c'est à dire le véritable URI:

layout/set/googlesitemap/content/view/googlesitemaps/2

En image cela donne ceci:

eZ Publish 3.x : extension google sitemap generator

Fig. 6: Comment renseigner le système de redirection d'URI

Une fois les deux champs remplis, il faut valider en cliquant sur le bouton Ajouter. Cette opération va alors engendrer l'affichage d'un nouveau cadre:

eZ Publish 3.x : extension google sitemap generator

Fig. 7: Liste des traductions personnalisées d'URI

Il n'est pas nécessaire de cliquer sur le bouton Appliquer les modifications pour contrôler que désormais l'URI:

http://www.entre-lac-et-montagne.com/sitemap.xml

renvoie bien la même chose que l'URI:

http://www.entre-lac-et-montagne.com/layout/set/googlesitemap/content/view/googlesitemaps/2

Renseigner google

Après avoir correctement renseigné Google, voici ce que l'on doit obtenir:

eZ Publish 3.x : extension google sitemap generator

Fig. 8: Interface de gestion des fichiers sitemap.xml sur le site de google

:
 Comme l'indique la capture d'écran ci-dessus, l'URI du site que j'ai indiqué est http://entre-lac-et-montagne.com
 Or, les URI renvoyés présents dans le fichier sitemap.xml sont tous de la forme http:// www.entre-lac-et-montagne.com/.... Ceci constitue une erreur et sera signalé par google (voir capture d'écran ci-dessous).

:
 Il est très important de contrôler, pendant les premières minutes, la valeur du champ État du plan Sitemap (voir figure 6 ci-dessus) car c'est lui qui vous indiquera si la procédure s'est correctement achevée.

Voici ce qu'indique ce champ consécutivement à un problème:

eZ Publish 3.x : extension google sitemap generator

Fig. 9: Message d'erreur suite à un problème rencontré dans la gestion du fichier sitemap.xml

:
 Si l'enregistrement de votre sitemap conduit l'outil de google à vous renvoyer un message d'erreur, consultez alors cette page: les messages d'erreurs

Et maintenant, lorsque tout se déroule bien:

eZ Publish 3.x : extension google sitemap generator

Fig. 10: Une procédure qui se déroule normalement jusqu'à son terme.

Pense bête

Penser à la procédure de vérification du site qui consiste à ajouter une ligne entre les balises <head></head> du template pagelayout.tpl afin que google puisse s'assurer que nous sommes bien le propriétaire du site.

Commentaires