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:
601 | function Title( &$row, &$params, &$access ) |
Remplacer les instances aux lignes 607 et 614:
607 | <?php echo $row->title;?> |
Par
607 | <?php echo "<h1>" . $row->title . "</h1>";?> |
Trouvez la fonction dans la même page à la ligne 28:
28 | function showContentList( $title, &$items, &$access, $id=0, $sectionid=NULL, $gid, &$params, &$pageNav, $other_categories, &$lists, $order, $categories_exist ) |
Remplacer à la ligne 44:
44 | <?php echo htmlspecialchars( $title->name, ENT_QUOTES ); ?> |
par
44 | <?php echo "<h1>" . htmlspecialchars( $title->name, ENT_QUOTES ) . "</h1>"; ?> |
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:
107 | $mainframe->initSession(); |
ajouter
108 | $mainframe->setPageTitle(); |
À la page /components/com_content/content.php, à la ligne 1522, remplacer:
1522 | $mainframe->setPageTitle( $row->title ); |
par
1522 | $mainframe->setPageTitle( $row->title, $params ); |
À la page /includes/joomla.php, à la ligne 503, remplacer:
503 504 505 506 507 508 509 | 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:
503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 | 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:
22 | <?php echo mosCurrentDate( '%Y' ) . ' ' . $GLOBALS['mosConfig_sitename'];?> |
par
22 | <?php echo mosCurrentDate( '%Y' ) . " " . $GLOBALS['mosConfig_sitename'] . " - " . $myPageTitle;?> |