Pour des raisons pratiques et de référencement, un webmaster a souvent envie de supprimer les ID qui apparaissent dans les URL's de Joomla.

Voici une méthode qui fonctionne.

Méthode pour Supprimer le ID des Urls dans Joomla.

Ouvrez components\com_content\router.php dans un éditeur et faites quelques petits changements:

dans la fonction ContentBuildRoute(&$query) remplacez la ligne 27

$advanced    = $params->get('sef_advanced_link', 0);

par

$advanced    = $params->get('sef_advanced_link', 1);

dans la fonction ContentParseRoute($segments) remplacez la ligne 208

$advanced    = $params->get('sef_advanced_link', 0);

par

$advanced    = $params->get('sef_advanced_link', 1);

Commentez les lignes 228-232

if (strpos($segments[0], ':') === false) {
    $vars['view'] = 'article';
    $vars['id'] = (int)$segments[0];
    return $vars;
}

Qui deviendront ainsi :

/*
if (strpos($segments[0], ':') === false) {
    $vars['view'] = 'article';
    $vars['id'] = (int)$segments[0];
    return $vars;
}
*/

C'est tout !

J'ai testé sur mon site en Joomla 2.5.7 et ça a l'air de fonctionner, mais je ne peux dire et garantir si cela fonctionne dans tous les cas.

( à partir du tutoriel : http://developernote.com/2012/05/how-to-remove-id-from-url-in-joomla-2-5/)

Quelques explications

Si vous avez essayé la méthode décrite ci-dessus et que cela fonctionne pour vous, vous pouvez laisser tout tel quel et fermer cette page, mais si vous intéressé par une explication veuillez lire ci-dessous.

Comme on le voit à partir des lignes 27 et 208 le Composant Contenu de Joomla (com_content) utilise le paramètre ‘sef_advanced_link’, ainsi régler ce paramètre à '1' élimine la nécessité de changer ces lignes. Cela pourrait être fait en ajoutant le code XML suivant à la section « fieldset » de administrator\components\com_content\config.xml:

<field
name="sef_advanced_link"
type="radio"
default="0"
label="Mode Sef Avancé "
description="Supprimer ItemID de contenu URL ?">
<option
value="0">JNO</option>
<option
value="1">JYES</option>
</field>

 

et le réglage ‘Mode Sef Avancé’ sur oui dans la fenêtre ‘Paramètres de gestion et d'affichage des articles’ :

sef avance

Veuillez noter que le réglage par défaut=”1″ dans le fichier XML ne prend pas toujours effet pour certaines raisons.

En ce qui concerne des lignes 228-232, si je les laisse décommentées l'ID disparaît des URL et les articles simples s'ouvrent très bien mais quand je tente d'ouvrir une catégorie non lié à un élément de menu j'ai le message d'erreur classique “404 – Article not found”. Je ne peux pas dire avec certitude, mais je pense que les développeurs de Joomla ont ajouté le paramètre ‘sef_advanced_link’ mais ne l'ont pas assez testé, donc, probablement, ils corrigeront ce code dans les versions futures.