Thursday, July 21, 2011

Url rewriting pour un composant joomla

Les sef (search engine firendly) urls, sont très pratiques pour un bon référencement.
un url du genre :
http://www.example.com/index.php?option=com_content&view=article&id=1&catid=1&Itemid=50
est très habituels pour ceux qui utilisent joomla.
Ceux qui développent leurs propres composants et qui veulent réecrire ce genre d'url peuvent suivre la démarche suivante:
1- Créer un fichier router.php dans le repertoire du composant.
2-router.php doit contenir les 2 fonctions suivantes:
   [Nom du Module]ContactBuildRoute(&$query){...}
   [Nom du Module]ParseRoute($segments){...}


 exemple: si votre composant s'appelle JoomTest alors les méthodes auront les noms suivants:
  JoomTestContactBuildRoute(&$query){...}
  JoomTestParseRoute($segments){...}

Détails:

  •  La première méthode sert à réecrire l'url, elle retourne un tableau de string (utf-8), que joomla va après les  concatener en les séparant par des '/'
  • La dexième sert à interpreter un url formaté (réecrit) pour retrouver sa forme normale.
    exp: index.php?option=com_content&view=article&id=1 va être transformé en ... /article/1:Bienvenue 
  • Pour la première fonction:
    En entrée un tableau $query.
    En sortie:$segements
    $segments=array();
    $segments[]=$query['
    view'] ;
    $titre = (Requete sql pour retrouver le titre de l'article depuis la base ...);
    $segments[]=$query['
    id'].':'.$titre;
    return $segments;

  • Pour la deuxième fonction, on va faire le chemin inverse:µ
    En entrée: $segments
    En sortie: $vars
    $vars = array();
    $vars['
    view'] = $segments[0];
    $vars['
    id'] = substr($segements[1], 0, (strlen ($segements[1])) - (strlen (strrchr($segements[1],':'))));
    return $vars; 

       


No comments:

Post a Comment