Optimisation de votre installation Joomla 1.0 pour les moteurs de recherche

Joomla est un gestionnaire de contenu web fort populaire, et à raison, c’est un outil assez puissant, flexible, gratuit et libre, qui rends la tâche de gestion d’un site accessible à ceux qui n’ont pas les connaissances requises de webmaster (en fait, il faut avouer qu’il nous vole peut-être du travail… enfin).

Il n’est toutefois pas parfait et ses grandes lacunes se trouvent beaucoup au niveau de l’optimisation pour les moteurs de recherche en terme de positionnement (maximiser le positionnement d’une page pour un ou des mots-clés dans les résultats de recherche, souvent appelé SEO en anglais, pour Search Engine Optimization).

En effet, à ce niveau, il n’est toujours pas à la hauteur d’une simple page web où le webmaster aurait le plein contrôle. Au fil du temps, j’ai trouvé quelques trucs pour répondre à ces lacunes, par moi-même ou en cherchant sur le web. Ceux-ci s’appliquent pour Joomla 1.0 et non la nouvelle version 1.5, dont je ferai surement un article dans le futur.

Je vous rappelle de toujours faire une copie de sauvegarde de votre installation Joomla avant de modifier des fichiers importants.

Évidemment, pour un site performant en terme de positionnement, il faut aussi activer le URL rewriting des pages de votre installation dans la configuration globale, en suivant les instructions officielles, pour bénéficier d’un système d’adressage simplifié, plus ergonomique et apprécié par les moteurs de recherche et visiteurs. Mais cette configuration est facile à régler et ne fait pas partie des lacunes que j’essaie de rectifier avec les fonctions suivantes.

Ajouter la balise H1 aux titres des pages dans Joomla

Joomla entoure le titre des articles avec la classe CSS contentheading ou componentheading, ce qui n’est pas exactement optimale en terme sémantique. Ce que l’on recherche dans ce cas est la balise H1. Pour l’ajouter, voici comment faire:

Dans la page php /components/com_content/content.html.php, trouvez la fonction à la ligne 601:

function Title( &$row, &$params, &$access )

Remplacer les instances aux lignes 607 et 614:

<?php echo $row->title;?>

Par

<?php echo "

" . $row->title . "

";?>

Trouvez la fonction dans la même page à la ligne 28:

function showContentList( $title, &$items, &$access, $id=0, $sectionid=NULL, $gid, &$params, &$pageNav, $other_categories, &$lists, $order, $categories_exist )

Remplacer à la ligne 44:

<?php echo htmlspecialchars( $title->name, ENT_QUOTES ); ?>

par

<?php echo "

" . htmlspecialchars( $title->name, ENT_QUOTES ) . "

"; ?>

Et voilà, vou savez inséré la balise H1 voulue. Maintenant, n’oubliez pas de modifier le code CSS de votre template de façon à donner les propriétés équivalentes des classes contentheading et componentheading à H1, et d’ajuster celles-ci par la suite pour que tout marche bien.

Ajouter le nom de votre site à la fin de l’élément d’en-tête title dans Joomla

Cette technique est basée sur un article posté dans le forum de Joomla, qui inclus des instructions supplémentaires si vous voulez contrôler le titre exact de chaque page.

Joomla insère bien le titre des articles dans l’élément d’en-tête <title></title> (titre montré par les navigateurs en haut de leurs menus dans la barre du logiciel), mais il ne semble pas possible, à partir d’un simple choix de paramétrage dans la section d’administration, d’avoir le titre du site automatiquement ajouté dans la suite, ce qui est une méthode assez standard de promouvoir le nom de site dans les résultats des moteurs de recherche et dans les signets de navigateurs web. Voici comment l’ajouter:

À la page /index.php, à la ligne 107, après le code suivant:

$mainframe->initSession();

ajouter

$mainframe->setPageTitle();

À la page /components/com_content/content.php, à la ligne 1522, remplacer:

$mainframe->setPageTitle( $row->title );

par

$mainframe->setPageTitle( $row->title, $params );

À la page /includes/joomla.php, à la ligne 503, remplacer:

function setPageTitle( $title=null ) {
	if (@$GLOBALS['mosConfig_pagetitles']) {
		$title = trim( htmlspecialchars( $title ) );
		$title = stripslashes($title);
		$this->_head['title'] = $title ? $GLOBALS['mosConfig_sitename'] . ' - '. $title : $GLOBALS['mosConfig_sitename'];
	}
}

par la fonction suivante:

function setPageTitle( $title=null, $params=null ) {
	if (@$GLOBALS['mosConfig_pagetitles']) {
		if ($params) {
			$custom_title = $params->def( 'title_cust', '' );
		} else {
			global $database, $mainframe, $Itemid;
			$params = new stdClass();
			if ( $Itemid ) {
				$menu = new mosMenu( $database );
				$menu->load( $Itemid );
				$params = new mosParameters( $menu->params );
			} else {
				$menu = "";
				$params = new mosParameters( '' );	
			}
			$custom_title = $params->def( 'title_cust', '' );
		}
		$title = $custom_title ? $custom_title  . ' : ' . $GLOBALS['mosConfig_sitename'] : $title .' : '. $GLOBALS['mosConfig_sitename'];
		$title = trim( htmlspecialchars( $title ) );
		$this->_head['title'] = $title ? $title : $GLOBALS['mosConfig_sitename'];
	}
}

Vous avez maintenant le nom de votre site ajouté à chacune des pages après le titre des articles.

Si vous voulez augmenter l’indice de densité de mot-clé (keyword density en anglais) à la page avec votre titre, vous pouvez le répéter à la fin de l’article ou en bas de page en faisant appel à la variable $myPageTitle que nous avons modifié. Par exemple:

À la page /includes/footer.php, à la ligne 22, remplacer:

<?php echo mosCurrentDate( '%Y' ) . ' ' . $GLOBALS['mosConfig_sitename'];?>

par

<?php echo mosCurrentDate( '%Y' ) . " " . $GLOBALS['mosConfig_sitename']  . " - " . $myPageTitle;?>

Éviter les adresses doublons pour un article

Un problème majeur de Joomla est qu’il a tendance à créer des liens différents pour mener vers le même article, selon que vous naviguez avec les catégories, les menus ou des modules tels que la liste des articles les plus populaires, ce qui peut créer des problèmes avec les moteurs de recherche et diluer, par exemple, votre score Google Pagerank entre plusieurs adresses pour le même article. Une façon d’éviter ces doublons est de créer des liens directs dans le template au lieu de se fier à la création de menus à partir de son interface menu. Ou on peut utiliser des menus avec des URL directs au lieu de pointer vers un article selon la procédure habituelle.

Un premier changement important à effectuer est de bloquer la version PDF et imprimable des articles en insérant le fichier index2.php dans votre fichier robots.txt.

Disallow: /index2.php

Il est plus difficile, par contre, de modifier les liens comme dans un module « Most Popular ». Dans ce cas, je préfère simplement ajouter l’attribut rel="nofollow" à ces liens pour que les moteurs de recherche n’en tiennent pas compte et qu’ils continuent plutôt à calculer la valeur PageRank selon l’architecture des catégories. Par exemple, dans la page:

modules/mod_mostread.php

À la ligne numéro 160-163

  • <?php echo $row->title; ?>
  • On peut ajouter l’attribut nofollow comme suit:

  • <?php echo $row->title; ?>
  • On peut faire de même pour les autres modules qui créent des liens doublons. Pour trouver où se trouve le code à changer, souvent une méthode facile est de copier la classe CSS spéciale des liens dans le code source de la page en-ligne et de faire une recherche dans vos fichiers joomla.

    8 thoughts on “Optimisation de votre installation Joomla 1.0 pour les moteurs de recherche

    1. Après de longues recherche, tu viens de m’aider à trouver la solution à mon problème, je te remercie grandement et te souhaite bonne continuation !

    2. Merci beaucoup pour ces précieuses informations :D
      cela m’a beaucoup aidé également,
      amitiés.

    3. Merci beaucoup,
      Tu viens de me sauver la vie.
      Je cherchais désespérément un gestionnaire de contenu web gratuit et tu viens de m’en fournir un.

    4. Merci pour ces renseignements, votre gestionnaire de contenu web et parfait pour moi.

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *