Table des matières
- Générateur de fichier sitemap pour Google
- 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:
Googlesitemaps : télécharger
- L'extension peut être téléchargée ici: googlesitemaps_extension
- La version de développement est également disponible: version svn
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:
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:
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:
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):
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:
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:
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:
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:
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:
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:
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














