Archives du mot-clé Joomla

Bloguer en plusieurs langues

RSSJe tiens ce blogue en français et en anglais depuis le mois d’octobre passé, je vous fais donc part de mon retour sur expérience du blogage (eh oui, ça se dit!) en deux langues, ce que ça implique et ce que ça peut vous rapporter.

La raison principale pour laquelle on peut se décider à écrire des articles en deux langues est bien simple et inanime : rejoindre un plus large auditoire. Surtout dans notre cas, nous les francophones! Écrire uniquement des articles en français nous « limite » aux visiteurs québécois, belges, suisses, marocains, tunisiens et surtout (voire principalement), français.

Ainsi que 24 autres pays. C’est à dire environ 180 millions de personnes dans le monde entier, certainement moins car ces gens n’ont pas tous Internet, et ne s’intéressent certainement pas tous aux sujets que vous abordez sur votre blogue … voilà qui réduit considérablement l’échantillon.

Tandis que l’anglais, avec « seulement » 300 à 400 millions de locuteurs natifs dans le monde, mais une masse écrasante de gens qui l’ont adopté comme langue secondaire. Je déteste l’anglais, mais force est de reconnaître que c’est LA langue internationale. Indubitablement, bloguer également en anglais vous ouvre sur un potentiel infiniment plus grand. Par exemple, ce blogue reçoit environ autant de visites sur ses pages en anglais que sur celles en français. On peut assez facilement en déduire que si ce blogue n’était qu’en français, je pourrais simplement diviser le traffic par deux…

De plus, si vous vous adonnez aux réseaux sociaux tels que Twitter, ou Facebook, bloguer en anglais vous permettra d’ouvrir votre réseau à de nombreux anglophones. Dans le même ordre d’idée, bloguer en anglais vous aidera à travailler à l’international, si tel est votre désir. En effet, si bloguer peut être un outil puissant pour prouver vos compétences, profitez de votre vitrine internationale (Internet) pour toucher le plus de gens. Même pour vos clients potentiels francophones, vous montrez une ouverture sur le monde ainsi que votre compétence, à plusieurs niveaux : parler de ce qui vous passionne ne vous gêne pas, peu importe la langue.

Cependant, je pense que plusieurs se lancent dans le blogage multilingue les yeux fermés, sans penser à ce que ça implique. Si un blogue demande pas mal de travail au départ, le tenir en deux langues (voire plus), ça signifie doubler littéralement votre charge de travail. Encore faut-il bien se débrouiller en anglais (ou autre langue). Pour ma part, je me débrouille pas si mal, mais comme la plupart du monde je ne saurais pas écrire un classique de littérature en anglais, disons-le comme ça. Ça veut dire que je me bute souvent à trouver le mot qui convient pour exprimer telle ou telle pensée, chose qui, en français, ne m’a évidemment posé aucune embuche. De plus, on se rend vite compte qu’on dispose d’un vocabulaire assez restreint, on réutilise souvent les mêmes mots, faute de synonymes sous la main. Tout ça pour dire qu’en plus de doubler la charge de travail de rédaction, bloguer en deux langues peut en plus vous forcer à ouvrir des bouquins – ce qui n’est pas une mauvaise chose du tout, mais encore du temps de travail supplémentaire.

Ce n’est pas tout. Si vous vous adonnez au référencement de votre blogue, eh bien il faudra également mettre un peu de temps sur vos pages anglophones. Ceci n’est cependant pas dénué d’avantages, puisque posséder du contenu en anglais vous ouvre les portes à diverses plateformes anglophones où vous pouvez joyeusement poser vos backlinks : annuaires anglophones, digg-likes, forums & blogues anglophones en dofollow, etc. Inutile de dire qu’il y a beaucoup plus de marge de manœuvre à ce sujet dans l’univers anglophone que l’univers francophone.

En supplément à cet article, je désire passer en revue quelques solutions CMS pour tenir un blogue multilingue.

Joomla! : Avec le composant Joomfish, vous pouvez traduire toutes vos pages plutôt facilement. Ça fonctionne assez bien, mais si votre référencement dans google vous importe, vous ne serez sans doute pas très contents de ne pas avoir de contrôle sur la réécriture des URL pour chacune des langues : l’originale est utilisée pour toutes les pages traduites, ce qui n’est pas forcément très cool pour le positionnement de celles-ci sur les SERPs. C’est une des raisons majeures pour lesquelles j’ai migré de Joomla! à Drupal.

WordPress : Chez WordPress, ce n’est pas tellement mieux. Certains composants vous permettent de gérer la traduction de certaines pages, mais pour une raison majeure dont je ne me rapelle plus, ce n’est vraiment pas très intéressant. Je sais c’est con, mais j’ai oublié. Le seul moyen que j’ai trouvé pour avoir quelque chose de propre et SEO-Friendly, c’est de créer un clone du blogue et d’y rédiger des articles en anglais, mais ils ne sont pas liés donc c’est pas très efficace…

** EDIT : C’est (désormais?) possible avec le super module WPML! À essayer!

Drupal : Avec le module Internationalization (I18N), vous pouvez créer des pages distinctes pour chaque traduction (et les lier ensemble), tout en contrôlant tous les aspects du référencement (métas, titres, URLs, et j’en passe). C’est vraiment génial mais ça m’a paru très ardu à mettre en place… Je fais des backups souvent car je ne suis pas trop sûr que je retrouverais comment ;)

Pour conclure, je dirais que le blogage multilingue apporte beaucoup de choses bien à votre blogue, mais il faut être prêt à effectuer le travail imposant que cela implique. Comme dans bien des histoires de Web, la pensée magique n’est qu’un mirage! Et vous, qu’en pensez-vous?

Une petite pause!

Je vais m’offrir une petite pause de quelques semaines afin de faire migrer ce blogue vers Drupal; vraiment, je suis pissed off de Joomla qui n’est pas très très bien côté SEO.

Malgré le fait que je me sois donné un maximum de mal pour le patcher, il reste énormément de défauts à ce site, presqu’irrémédiables. Je profiterai de la migration pour compléter certains articles, finir d’en traduire d’autres, et revoir la mise en page de ce site dont les besoins ont légèrement changé!

Alors avec tout ça … on se revoit en avril!

I do follow!

Les commentaires de ce blog sont maintenant en DOFOLLOW!

Mais qu’est-ce que le dofollow?!

Lorsqu’on fait un lien vers un autre site, il est possible de donner l’attribut nofollow. Cela indique à Google de suivre le lien mais de n’accorder aucune importance à ce lien. C’est fâcheux, car l’un des principaux avantages que quelqu’un d’autre fasse un lien vers votre site, c’est que ça vous apporte un précieux backlink supplémentaire, et cela vous rend plus important aux yeux de Google; ce qu’empêche malheureusement le nofollow.

Le fait est que plus il y a de liens sortants (en dofollow) dans une page donnée, plus l’importance de chacun est divisée. C’est pourquoi bien des bloggeurs auront tendance à ne donner aucune importance aux liens de ceux qui commentent, afin de ne pas réduire l’importance de leurs propres liens vers des pages internes.

D’un autre côté, si un visiteur fait un commentaire pertinent, consistant et contribue grâce à cela au contenu de votre site, la moindre des choses est de le récompenser avec un backlink gratuit qui n’est pas en nofollow. On ne se cachera pas, beaucoup de gens rédigent des commentaires à la volée juste pour ça, quoique ça puisse souvent être une bonne motivation pour certains de faire un commentaire intéressant qu’ils auraient gardé sinon pour eux. Il ne faut pas oublier qu’il s’agit de contenu ajouté gratuitement par la personne qui commente. En gros, c’est un échange de bons services.

Il ne faut pas trop exagérer, par exemple utiliser comme pseudo des ancres de texte afin d’améliorer directement son référencement (ex : poker texas hold’em), mais ça peut être toléré, même si plusieurs éditeurs de blogues considèrent ça comme un manque de respect flagrant.

Pour ma part, si des gens commentent, si c’est un commentaire raisonnablement intéressant, je validerai toujours.

Si vous avez un blogue WordPress, voici comment faire pour mettre vos commentaires en dofollow.

Pour Joomla!, si vous utilisez !JoomlaComments, il est possible faire un petit hack manuel pour mettre les liens des commentaires en dofollow.

Edit : C’est pas parce que je permets le dofollow dans les commentaires qu’il faut me prendre pour un con : les commentaires du genre "Merci bon article" point barre, y’a peu de chances pour que je laisse le lien. Moi quand je spamme les blogues des autres, je me force un peu le cul pour écrire plusieurs lignes quelque chose qui a du bon sens…

!JoomlaComments en dofollow

!JoomlaComments est un composant assez bien connu qui sert, comme vous vous en doutez, à gérer des commentaires sur un site Joomla!. Par défaut, les liens des commentaires sont en nofollow et il n’est pas possible de paramétrer ce détail assez important.

Donc, si par hasard vous désirez mettre les liens des commentaires en dofollow, il vous faut effectuer un petit hack au coeur du script lui-même :

Ouvrez le fichier /components/com_comments/joscomment/comment.class.php et chercher « nofollow », ce qui devrait vous amener aux alentours de la ligne 2293 à ceci :

$website = «  « ;

Il vu suffit d’enlever l’attribut « nofollow » :

$website = «  « ;

C’est tout! C’est à parier que dans les versions futures de !Joomlacomments, on pourra peut-être bien paramétrer le do/nofollow.

 

Plugin Joomla! pour des espaces insécables dans le contenu

Voici un petit plugin pour Joomla 1.5.x qui permet de remplacer automatiquement les espaces sécables par des espaces insécables dans un article.

Ce plugin s’adresse surtout à ceux qui désirent pousser l’obsession (l’observation) des règles typographiques jusqu’au bout. Selon ces règles, plusieurs caractères ne doivent pas être coupés par un retour de ligne.

Note : Un article est en préparation pour spécifier les différents types de règles typographiques selon les pays (avec sources).

Le plugin place simplement l’entité HTML   à la place des espaces sécables pour les caractères concernés. Lors de la rédaction de votre article, vous devez tout de même écrire une espace normale, sans quoi le plugin prendra pour acquis que vous ne désirez pas mettre d’espace du tout.

Notez qu’au Québec, il ne faut pas insérer d’espace avant le point d’exclamation et le point d’interrogation; je les ai quand même inclus au cas où des cousins de la francophonie aimeraient se servir du plugin.

Vous pouvez constater ce plugin en action sur ce blog. Ce n’est rien de très compliqué, mais c’est quand même utile.

Groupes d’utilisateurs personnalisés Joomla! + Community Builder

Il n’existe pas encore de fonctionnalité implémentée dans Joomla pour avoir des groupes d’utilisateurs personnalisés selon votre besoin. Vous êtes obligés de vous en tenir aux groupes par défaut, à moins d’utiliser JaCL (commercial), ce qui n’est pas toujours acceptable, dépendamment du projet.

Si vous utilisez Community Builder, et que vous souhaitez avoir différents groupes d’utilisateurs possédant chacun des onglets (et des champs, donc) propres à eux, il existe une solution.

Il est possible d’attribuer un onglet spécialement à un groupe d’utilisateurs; il suffit de répartir judicieusement les champs de profiles selon les onglets, pour pouvoir afficher ou ne pas afficher un onglet, dépendament du groupe auquel appartient l’utilisateur.

Cet article vous montre comment appliquer un hack manuel à Joomla 1.5.x pour permettre l’utilisation de groupes différents et personnalisés pour Community Builder.

Je préfère vous conseiller dès maintenant de faire des copies de sauvegarde de tous les fichiers que vous allez modifier, car c’est vraiment de la bidouille!

Les versions de Joomla et CB utilisées pour l’exemple sont Joomla! 1.5.9 et Community Builder 1.2 RC4.

Créer des groupes personnalisés dans Joomla

La première étape consiste à créer des groupes personnalisés dans Joomla. Pour le besoin de l’article, disons que nous réalisons un site pour une communauté comprenant deux groupes d’utilisateurs : des employeurs et des personnes qui cherchent un emploi.

Cette unique partie est tirée de la documentation Joomla, réintégrée ici dans le souci de faire un tutoriel vraiment complet (ne suivez cependant pas les instruction sur la page de documentation, elles ne sont plus à jour).

Le bidouillage commence en force ici : il faut modifier la base de données, puis exécuter un script pour la restructurer correctement. Je n’expliquerai ici pas trop comment fonctionne la table qui contient les groupes d’utilisateurs dans Joomla; je me bornerai à expliquer comment la modifier à notre guise.

Accédez à votre base de données (avec l’outil PHPmyAdmin dans mon cas). Trouvez la table des groupes, qui s’apelle « jos_core_acl_aro_groups ». Par défaut, le préfixe de table est « jos », mais vérifiez cette information et remplacez le préfixe « jos » par le vôtre s’il est différent. Dans tous les exemples nous utiliserons « jos » comme préfixe; n’oubliez pas de le changer partout!

Insérer groupes personnalisés

Donc dans PHPmyAdmin, j’accède à la table « jos_core_acl_aro_groups ». Cette table contient tous mes groupes d’utilisateurs. Nous allons donc insérer deux nouveaux groupes : un pour les employés et un pour les employeurs (ou ce qui vous conviendra). Ce qui est important, c’est de correctement spécifier comme parent_id le id du groupe d’utilisateurs parent. Dans notre cas, ce sera simplement Registered (id : 18). Donc nous insérons ces deux groupes, en spécifiant uniquement le parent_id.

Nos groupes sont insérés, mais incorrectement hiérarchisés car cette table utilise un système de hiérarchisation qui repose sur une borne gauche et droite (nombres), qui selon certains calculs permettent de spécifier quel groupe est imbriqué dans quel groupe. Pas de panique : on a un script pour regénérer les bonnes bornes pour nos deux nouveaux groupes.

Créez un fichier nommé rebuild.php, placez-le à la racine de votre site Joomla, en mettant ceci dedans :

mysql_connect("localhost", "NOM_DUTILISATEUR_BD", "MOT_DE_PASSE_BD") or
die("Could not connect: " . mysql_error());
mysql_select_db("NOM_DELA_BD");
// 0-> parent_id in Joomla this is the value of the parent_id field of the Root record
// 1-> start the left tree at 1
rebuild_tree ( 0 , 1);

function rebuild_tree($parent_id, $left) {

// the right value of this node is the left value + 1
$right = $left+1;

// get all children of this node
$result = mysql_query(‘SELECT id FROM jos_core_acl_aro_groups ‘.
‘WHERE parent_id= »‘.$parent_id.’ »;’);
while ($row = mysql_fetch_array($result)) {
// recursive execution of this function for each
// child of this node
// $right is the current right value, which is
// incremented by the rebuild_tree function
$right = rebuild_tree($row['id'], $right);
}

// we’ve got the left value, and now that we’ve processed
// the children of this node we also know the right value
mysql_query(‘UPDATE jos_core_acl_aro_groups SET lft=’.$left.’, rgt=’.
$right.’ WHERE id= »‘.$parent_id.’ »;’);

// return the right value of this node + 1
return $right+1;
}
?>

…en changeant bien sûr « NOM_DUTILISATEUR », « MOT_DE_PASSE_BD » et « NOM_DE_LA_BD » par le nom d’utilisateur, le mot de passe et le nom de la BD.

Lancez le script dans votre navigateur, en accédant la page rebuild.php. Normalement, vous ne devriez rien remarquer, le script n’écrit aucune confirmation (donc une page blanche). Allez vérifier de quoi ça a l’air dans la base de données si vous comprenez un peu le système de structure hiérarchique des groupes, sinon faites-vous confiance et passez à l’étape suivante.

Configurer bornes correctes pour les groupes

Un indice : normalement vos deux nouveaux groupes devraient maintenant avoir une nouvelle valeur, autre que zéro, pour les colonnes « lft » et « rgt ». Sinon, je crois bien que vous avez dû mal spécifier les informations de connexion à la base de données, ou bien vous avez mal changé les noms des tables dans les requêtes.

Configurer le groupe de l'utilisateur

Un autre bon moyen de vérifier si tout est en ordre serait de vous rendre dans la Gestion des utilisateurs (Administration Joomla), sélectionnez un utilisateur et vérifiez que vous pouvez lui attribuer les groupes personnalisés que vous venez de créer.

Comment distribuer les profils appartenant aux groupes d’utilisateurs correspondants?

Le principe est simple : Il est possible, dans Community Builder, d’attribuer un groupe d’utilisateurs à un onglet.

Pour continuer l’exemple, rendez-vous dans la page composant de Community Builder, cliquez sur Tab Management et créez deux nouveaux onglets :

« Historique d’entreprise » : Attribuez cet onglet au groupe « Employeur », et n’oubliez pas de le publier.

« Expériences d’emploi » : Attribuez cet onglet au groupe « Employé », et n’oubliez pas de le publier.

Chaque groupe d’utilisateur personnalisé possède maintenant un onglet juste pour lui. Comme les onglets ne s’afficheront pas s’ils ne contiennent pas de champs, allez maintenant dans Field Management, et créez pour chacun de ces deux nouveaux onglets un champs (du même nom que l’onglet, on va dire), en n’oubliant pas de les placer chacun d’eux dans l’onglet correspondant.

Il est maintenant temps de s’attaquer à une problématique plutôt désagréable. Nous avons certes créé les deux groupes personnalisés d’utilisateurs, mais il n’existe en réalité dans Joomla que 3 niveaux d’accès : « publique », « enregistré » et « spécial ». Ces niveaux s’embriquent, c’est à dire que l’utilisateur « spécial » possède aussi les droits de l’utilisateur « enregistré ». Ça nous cause un certain problème, car nous souhaitons, dans cet exemple, que chaque utilisateur ait ses propres onglets, sans aucun mélange!

Par exemple, l’employeur possède dans son profil un onglet pour décrire l’historique de son entreprise, mais l’employé n’a pas besoin de cet onglet! Forcément, l’un des deux groupes aura plus de droits que l’autre, il faut donc trouver un moyen de les rendre réellement indépendants l’un de l’autre.

Il existe une solution un peu « broche à foin » : il faut appliquer un hack aux fichiers de Community Builder pour que les onglets soient réellement bien répartis. C’est maintenant que la chirurgie à coeur ouvert commence, n’oubliez pas de faire une copie de sauvegarde du fichier avant toute modification! Les numéros de ligne de code sont donnés pour la version CB 1.2 RC4, si vous possédez une version antérieure, recherchez les mêmes lignes mais leur emplacement peut avoir changé. Il y aura trois remplacements à faire, notez que nous laissons l’ancienne ligne en commenté dans le fichier.

Ouvrez le fichier [VOTRE SITE]/administrator/components/com_comprofiler/comprofiler.class.php

Cherchez cette ligne de code (ligne 3036) :

. « \n AND t.useraccessgroupid IN (« .implode(‘,’,getChildGIDS(userGID( $_CB_framework->myId() ))). ») »;

Remplacez-là par ceci :

// . « \n AND t.useraccessgroupid IN (« .implode(‘,’,getChildGIDS(userGID( $_CB_framework->myId() ))). ») »
. « \n AND (t.useraccessgroupid = « .$user->gid. » OR t.useraccessgroupid = -2) AND t.enabled = 1″

Cherchez cette ligne de code (ligne 3493) :

$sql .= « \n AND t.useraccessgroupid IN ( » . implode(‘,’,getChildGIDS(userGID( $_CB_framework->myId() ))) . « ) »;

Remplacez-là par ceci :

// $sql .= « \n AND t.useraccessgroupid IN ( » . implode(‘,’,getChildGIDS(userGID( $_CB_framework->myId() ))) . « ) »;
$sql .= « \n AND (t.useraccessgroupid = « .$user->gid. » OR t.useraccessgroupid = -2) AND t.enabled = 1″;

Cherchez cette ligne de code (ligne 3550) :

$where[] = ‘t.useraccessgroupid IN (‘ . implode(‘,’,getChildGIDS(userGID( $_CB_framework->myId() ))) . ‘)’;

Remplacez-là par ceci :

//$where[] = ‘t.useraccessgroupid IN (‘ . implode(‘,’,getChildGIDS(userGID( $_CB_framework->myId() ))) . ‘)’;
$where[] = ‘(t.useraccessgroupid = ‘ . $user->gid . ‘ OR t.useraccessgroupid = -2)’;

Ça y’est, votre fichier est correctement patché!

Donc si vous faites un test en créant un utilisateur pour chaque groupe d’utilisateurs, chaque compte utilisateur devrait normalement avoir son onglet personnalisé dans son profil.

Comment répartir les différents utilisateurs dans les bons groupes?

Maintenant que l’affichage de champs personnalisés pour des groupes d’utilisateurs personnalisés fonctionne, il faut s’attaquer à un autre problème : comment faire pour distribuer automatiquement les bons groupes aux bons utilisateurs?

En les laissant choisir!

Fort heureusement pour nous, il existe un plugin pour ça : CB JLS Group Selection, créé par Jorge Luis Savoini. Attention, ce plugin fonctionne uniquement pour Community Builder 1.2 RC3 !

Après avoir téléchargé le plugin, installez-le (au bas de la page Plugin Management du composant Community Builder).

Dans Field Management, créez un nouveau champs appelé précisément « cb_usertype », de type « Drop Down (Single Select) »). Entrez deux valeurs, soit les noms exacts de vos deux groupes, dans notre exemple « employe » et « employeur ».

Cliquez sur le plugin (JLSGroupSelector) dans la liste de la page Plugin Management pour le configurer.

Maintenant qu’il est possible pour tout le monde d’accéder à la configuration du plugin JLS Group Selection, assurez-vous que le plugin est bien publié ET activé (enabled).

Il vous suffit de demander obligatoirement à l’utilisateur de répondre au champ « cb_usertype » à l’enregistrement pour le forcer à choisir son groupe!

Voilà, c’est tout! C’est bien complexe pour quelque chose qui devrait pourtant être très simple…

J’aimerais remercier Jorge Luis Savoini pour l’aide qu’il m’a apporté afin de solutionner le problème dont est sujet cet article, et pour son plugin très utile!

Joomla, redirection personnalisée après connexion

Lorsque qu’un utilisateur se connecte à son compte dans Joomla, il est automatiquement redirigé à la page d’accueil.

Cet article explique comment effectuer un hack à Joomla 1.5, afin de rediriger l’utilisateur sur la page de votre choix après sa connexion. À partir de la configuration du module de connexion, vous pouvez spécifier une page dans le site, mais vous ne pouvez spécifier d’URL précise, ce qui est parfois nécessaire. Ça peut être très utile, surtout si vous attendez une action précise de votre visiteur (ex: poster un article, une image, inscrire son site dans votre annuaire, etc.).

Joomla 1.5.8 a servi pour cet exemple, mais c’est probablement exactement le même principe pour toutes les autres versions 1.5.x.

Ouvrez ce fichier :


[votre site]/components/com_user/controller.php

Il faut rechercher cette ligne de code qui se trouve normalement à la ligne 153, à l’intérieur de la fonction login() :

$mainframe->redirect( $return );

Il suffit simplement de remplacer $return par l’URL de votre choix. Par exemple :

$mainframe->redirect( « http://www.guylabbe.ca » );

Créer un Sitemap Google pour votre site

Un Google Sitemap est un élément primordial au succès de votre référencement : il sert à indiquer à Google quelles pages il doit indexer. Ça permet d’accélèrer le processus d’indexation de nouvelles pages, et ça permet également d’inclure tout votre contenu pertinent dans l’index de Google.

À la base (vous l’aurez deviné, je l’espère!), un Sitemap c’est un plan de votre site. Une arborescence de vos pages, dans laquelle l’importance qu’ont certaines pages de plus ou de moins sur les autres pages du même site est explicitement indiquée.

Bien sûr, ce n’est pas obligatoire; ce n’est qu’une aide pour Google (ainsi que pour vous, par le même fait). Vous ne pouvez pas espérer que toutes les pages que vous inclurez dans votre Sitemap seront indexées dans Google, car bien que vous lui montrez le chemin, Google n’est pas idiot, il n’indexera de toutes manières que les pages qu’il aura jugées pertinentes.

Laissez tomber les pages de contact et d’aide, focussez votre référencement sur votre contenu réel. Encore faut-il qu’il les trouve ces superbes pages qui feront grimper votre trafic : le Sitemap Google est là pour ça.

Selon la nature de votre site (un site statique ou un site dynamique), la façon de fabriquer votre Sitemap peut varier : de là le but de cet article.

En tout temps, je vous conseille de vous reférer à la documentation Google sur ce sujet.

Créer un Sitemap statique

Par statique, j’entends un Sitemap que vous devez écrire vous même, et qui ne changera pas automatiquement. C’est ce qu’on utilise normalement pour des sites qui possèdent uniquement des contenus statiques en pages HTML.

Pour faire ça, inutile de perdre votre temps à en écrire un vous même, vous pouvez utiliser un outil de création automatique de Sitemap. Vous pouvez également l’utiliser pour un site dynamique qui n’utilise pas la réécriture d’URL, mais il vous faudra le regénérer une fois de temps en temps – un truc que vous allez oublier de faire.

Créer un Sitemap dynamique

Un Sitemap dynamique se mettra automatiquement à jour sur votre site Web, ce qui est très pratique si vous mettez régulièrement à jour votre contenu. La méthode proposée ici utilise la réécriture d’URL pour simplifier le tout.

Dans le premier temps, créez un fichier .htaccess placé à la racine, ou modifiez celui que vous avez peut-être déjà :


Options +FollowSymlinks
RewriteEngine on

# Lien pour le Sitemap
RewriteRule ^sitemap\.xml$ /sitemap.php [L,NC]

Ainsi, sitemap.php va nous permettre de générer dynamiquement et simplement le contenu du fichier XML (le sitemap). Chaque fois que Google cherche à ouvrir la page sitemap.xml, sitemap.php est sollicité et crée une mise à jour du « fichier » XML.

Créez donc un fichier intitulé sitemap.php. Dans l’exemple suivant, on récupère les articles d’un blog imaginaire.

Voici la structure de la table qui sert dans l’exemple :


CREATE TABLE IF NOT EXISTS `blog` (
`id` MEDIUMINT(9) NOT NULL COMMENT ‘ID de l »article’,
`texte` TEXT NOT NULL COMMENT ‘Texte de l »article’,
`DATE` DATE NOT NULL)
ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Articles de blog’;

Voici pour le fichier sitemap.php :

// Connexion MySQL
$host = « localhost »; // généralement, c’est localhost
$user = « NOM_D_UTILISATEUR »;
$pass = « MOT_DE_PASSE »;
$bdd = « NOM_DE_LA_BD »;

@mysql_connect($host,$user,$pass) or die(« Echec de connexion au serveur: « .mysql_error());
@mysql_select_db(« $bdd ») or die(« Echec de sélection de la base: « .mysql_error());

// Spécifier le type de document, soit un document XML
header(« Content-Type: text/xml »);

// Requête MySQL pour aller chercher les articles du blog
$requete = « SELECT id, date FROM blog ORDER BY date DESC »;
$resultat = mysql_query($requete);

// Écriture du fichier XML
// l’entête :
$sm =  »;
$sm .= ‘xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »
xsi:schemaLocation= »http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd »>’;

// Articles du blog
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$sm .= ‘‘;
$sm .= ‘http://votresite.com/blog?id=’.$blog['id'].’‘; // en suposant que vos pages dynamiques fonctionnent ainsi
$sm .= ‘‘.$blog['date'].’‘;
$sm .= ‘monthly‘;
$sm .= ‘ 0.7‘;
$sm .= ‘
‘;
}

$sm .=  »;

echo $sm;

Comme vous pouvez le deviner, chaque item du sitemap obéit à ce schéma :






<loc> L’emplacement exact de votre page. N’oubliez pas d’inclure le domaine (http://www.domaine.com).
<lastmod> Quand est-ce que votre page a été modifiée pour la dernière fois (ou quand a t-elle été créée). Cette donnée est préalablement stockée dans vos tables par vos scripts de blog. Vous devez fournir cette données sous un format valide W3C.
<changefreq> À quelle fréquence cette page risque t-elle d’être mise à jour? (always, hourly, daily, weekly, monthly, yearly, never). Ceci constitue un indice pour Google, la fréquence d’exploration de Google peut ne pas respecter votre commande. Et il ne sert à rien de mettre always si vous ne modifiez jamais un article une fois qu’il est publié.
<priority>

Cette donnée est un indice hiérarchique, indiquant si cette page est plus importante que d’autres, sur votre site. Cette comparaison ne s’applique pas aux autres sites. Il est inutile de mettre 1 partout, vous vous nuirez. Donnez une priorité plus haute aux pages qui vous semblent plus importantes et qui changent plus souvent

Normalement, en accédant la page sitemap.xml sur votre site, vous devriez voir votre Sitemap en format XML. Vérifiez s’il est valide, puis vous pourrez le soumettre à Google.

Bien sûr, il est possible d’améliorer ce script de plusieurs façons. Par exemple, vous pouvez stocker dans vos tables de données, dans une colonne priority, la priorité à donner à chacune des pages. Même chose pour le changefreq.

Évidemment, on se prend moins la tête avec les CMS!

Créer un Sitemap dynamique pour Joomla!

Pour ce qui est d’un sitemap pour Joomla!, vous avez à votre disposition deux composants : xMap et Joomap, les deux disponible en versions J!1.0x et J!1.5x.

Je n’ai pas essayé Joomap, mais xMap fonctionne très bien. Il existe des extensions pour la plupart des composants connus (Sobi2, Adsmanager, Community Builder, …), ce qui est indispensable. Il s’agit des deux plus connus, mais il existe d’autres composants.

Créer un Sitemap dynamique pour Drupal

Installez le module XML Sitemap pour Drupal, disponible pour Drupal 5.x.

Créer un sitemap dynamique pour WordPress

Téléchargez le plugin de Arne Brachhold, qui fonctionne très bien pour créer un Sitemap pour WordPress. Si le référencement vous intéresse, je vous invite à lire mon article au sujet du référencement sur WordPress.