Récupérer dynamiquement les chemins d'accès aux différents composantsMise à jour le Mardi, 16 Juin 2009 09:37 Écrit par Tr@nquille Mercredi, 13 Mai 2009 09:18 Voici les variables et les fonctions intégéres à Joomla qui vont me permettre de récupérer dynamiquement (donc de ne pas écrire en dur) les chemins d'accès aux différents éléments d'un site web monté avec Joomla: Tout d'abord, lorsqu'on développe un thème, ou que l'on retouche le code php de Joomla, il est très important d'éviter au maximum d'entrer des chemins d'accès en dur dans le code. Toutes les adresses doivent être en absolue et construites à l'aide des fonctions et vaiables Joomla. Sinon, quelques bizarreries peuvent apparaitre si l'on utilise ensuite l'url rewriting.
Voici déjà des fonctions de base: JURI::root() Méthode retournant l'URI racine du site en cours. Exemple, mon site Joomla est situé à la racine de mon hébergement web, http://www.monsite.toto, le requête JURI::root() me retourne: Il est préférable d'utiliser cette fonction avec l'option true, car elle renvoie toujours un antislash à la fin, voilà pourquoi: Joomla est installé à la racine du site. JURI::root().'toto'; L'adresse retournée est: http://www.monsite.fr/toto Joomla est installé dans le dossier joomla, pour la même manip, le retour sera: http://www.monsite.fr/joomlatoto il manque le slash. L'option true rajoute toujours un slash à la fin s'il n'y est pas déjà. /toto/joomla/ Notez que l'on perd au passage l'adresse du site, normal avec l'option true. Il existe d'autres options à cette fonction que je vous laisse étudier ici: La fonction JURI::root() expliquée par les développeurs Joomla Notez au passage que la fonction JURI::base() fait la même chose JRoute::_(un_lien_ou_une_adresse) cette fonction me sert à "router" les liens que je crée via php en dynamique. Plus d'infos ici: La fonction JRoute expliquée par les développeurs Joomla
Récupérer le nom du template en cours: $mainframe->getTemplate(); renvoie le nom du template utilisé. JURI::root(true).'templates/'. $mainframe->getTemplate(); Récupérer l'objet document en cours:
$Doc = & JFactory::getDocument(); // récup doc en cour //et lui assigner une feuille de style, façon joomla $Doc->addStyleSheet(JURI::root(true).'chemincompletdufichiercss.css') //et façon Virtuemart: $Doc->addStyleSheet(VM_THEMEURL.'browse_notable.css'); //ici on met juste le nom du fichier s'il est dans le dossier racine du thème du composant virtuemart
voilà, c'est tout pour le moment.
|


