Reading:Personnaliser ses pages d’erreurs sous Joomla

Personnaliser ses pages d’erreurs sous Joomla

Vous possédez un site sous Joomla, vous vouliez faire des pages d’erreur 404 personnalisées? Malheureusement, la mise en place des URLs SEF sous Joomla vous empêche de le faire.

En effet, toutes les URLs sont redirigées vers le module de SEF de Joomla qui traite lui même les adresses URL demandées. Du coup, impossible de traiter cette fameuse page 404. Il existe pourtant une solution.

Customiser le fichier error.php

Dans Joomla 1.5 l’affichage des messages d’erreurs se fait grâce au fichier error.php présent dans racine/templates/system. Pour le customiser, copier ce fichier dans le répertoire de votre template actuel. Faites-y les modifications que vous voulez, et le tour est joué.

Ce fut bref comme tuto non? Bon, ok, je vais jusqu’au bout.

Adapter Joomla, l’Erreur 404 et le script Google :

Dans son site d’aide aux webmasters, google fournit un script pour renvoyer si possible au visiteur une page la plus proche de celle recherchée. Pour l’utiliser, rien de plus simple, il suffit de créer une page, et d’y insérer le code html. Le script récupérera l’adresse URL demandé, et fera (je suppose) une recherche dans la base de donnée Google pour voir quelle URL est la plus proche.

On aurait pu créer un article Joomla dans lequel serait indiqué à l’utilisateur qu’il tombe sur une erreur 404, et mettre à la suite le script. Dans le fichier error.php personnalisé nous aurions mis dans les premières lignes :

if ($this->error->code = ‘404’) {
header(“HTTP/1.0 404 Not Found”);
header(‘Location: http://www.mon_site.fr/index.php?option=com_content&view=article&id=16&Itemid=14′); //adresse de l’article 404 sous joomla
exit;
}
?>

Mais le problème vient du fonctionnement du script. Celui-ci regarde l’URL donnée en entrée. Et là, il y voit l’adresse de la page d’erreur Undecided.

Voilà la solution : juste après

defined( ‘_JEXEC’ ) or die( ‘Restricted access’ );

J’ai mis les lignes suivantes (et j’ai laissé le reste du fichier error.php inchangé par rapport à celui d’origine) :

if ($this->error->code = ‘404’) {
header(“HTTP/1.0 404 Not Found”);
$url=”http://www.mon-site.fr/index.php?option=com_content&view=article&id=16&Itemid=14″; //adresse article 404
$result= file_get_contents($url);
echo $result;

exit;
}

Le script prend alors bien en compte l’URL demandée par le visiteur.

Par contre, j’aurais besoin de vos commentaires : je n’ai pas l’impression que ce script google marche très bien. Est-ce le cas pour vous? Sur joomla ou non?