Celine Posté 18 Septembre 2007 Posté 18 Septembre 2007 Bonjour je suis débutante dans le php(je connais un peu mieux c#). Si quelqu'un peut m'aider a interpréter ce bout de code: function show_me_the_way_clic($root, $url_r = true){ global $lang; $title_chemin = ''; $cm =& get_manager("category"); $re =& MyRewriteEngine::getInstance(); while ($root!= 0) { $criteria = new Criteria("id",$root); $criteria->setLimit(1); $cols = array('id','name','root'); $category =& $cm->get($root,$cols); $root = $category->getVar('root'); $title_chemin='><ahref="'.$re->buildUrl('category',array('name'=>$category->getVar('name'),'id'=>$category->getVar('id'))).'">'.$category->getVar('name').'</a>'.$title_chemin;} $title_chemin = "<a href='./' title='".$lang['home']."'>".$lang['home'].'</a>'.$title_chemin; return $title_chemin;} La fonction renvoie une variable:"title_chemin" qui contient le chemin de la catégorie. le site Lorsque que l'on clique sur une catégorie ,la page s'ouvre avec son chemin en titre. Exemple:Accueil>Assurance de même si on clique sur une sous-catégorie: Accueil>Assurance>Assurance Voiture Mon problème c'est que je ne veux que le nom de ma page dans des balises h1 Accueil > <h1>Assurance </h1> ou Accueil > Assurance > <h1>Assurance Voiture</h1> et comme pour le moment dans mon code j'ai <{if isset($smarty.get.dir) }> <h1 ><{$way_to_cat}></h1> <br /><{/if}> $title_chemin etant assigné à $way_to_cat Il faut donc que je modifie cette fonction pour récupérer chaque mot dans une variable et non l'ensemble dans une variable globale. Si vous avez des idéés ou des explications elles sont les bienvenues.Merci à tous.
rdd Posté 18 Septembre 2007 Posté 18 Septembre 2007 Salut, Je ne suis pas un fan de l'objet, c'est pour cela que ma reponse pourra paraitre "old school" (je codais en C avant de passer a PHP il y a quelques annees). Je te propose donc une petite fonction qui te permettra d'ajouter les h1 sur la derniere categorie generee par ta fonction. function put_h1($link){ $new_link = str_replace(substr(strrchr($link, "\">"), 2), "<h1>".substr(strrchr($link, "\">"), 2)."</h1>", $link); return $new_link;} Il te suffira donc d'appeler cette fonction avec ton $title_chemin en parametre, ou simplement d'integrer ce code dans le tiens sans faire appel a la fonction (je n'ai pas le temps de tester cette solution): $title_chemin = "<a href='./' title='".$lang['home']."'>".$lang['home'].'</a>'.$title_chemin;$title_chemin = str_replace(substr(strrchr($title_chemin, "\">"), 2), "<h1>".substr(strrchr($title_chemin, "\">"), 2)."</h1>", $title_chemin);return $title_chemin; Voila, en esperant que cela t'aide, bon courage.
marcb Posté 18 Septembre 2007 Posté 18 Septembre 2007 Bonjour, Je te propose cette version pour ta fonction : function show_me_the_way_clic($root, $url_r = true){global $lang;$title_chemin = '';$cm =& get_manager("category");$re =& MyRewriteEngine::getInstance();while ($root!= 0) {$criteria = new Criteria("id",$root);$criteria->setLimit(1);$cols = array('id','name','root');$category =& $cm->get($root,$cols);$root = $category->getVar('root');// La petite modif est dans ce bloc-làif ($title_chemin == '') { $title_chemin='><h1><ahref="'.$re->buildUrl('category',array('name'=>$category->getVar('name'),'id'=>$category->getVar('id'))).'">'.$category->getVar('name').'</a></h1>';} else { $title_chemin='><ahref="'.$re->buildUrl('category',array('name'=>$category->getVar('name'),'id'=>$category->getVar('id'))).'">'.$category->getVar('name').'</a>'.$title_chemin;}$title_chemin = "<a href='./' title='".$lang['home']."'>".$lang['home'].'</a>'.$title_chemin;return $title_chemin;} Elle te retourne (a priori, je n'ai pas pu tester) la variable $title_chemin incluant le <h1></h1> uniquement pour le dernier élément. Du coup, dans ton code il faudra supprimer les balises <h1> : <{if isset($smarty.get.dir) }> <{$way_to_cat}> <br /><{/if}> Attention, si la fonction est appelée d'un autre endroit, ça peut pertuber... Marc
pluriels Posté 18 Septembre 2007 Posté 18 Septembre 2007 (modifié) eIl me semble que ta boucle fonctionne comme ça : Element n > Element n-1 > ... > Element 2 > Element 1 Il faudrait donc ajouter <h1> </h1> au premier élément de ta boucle. Cela éviterait aussi d'avoir un lien de la page vers elle-même. Edit : Je dois taper trop lentement. Je ne voulais pas donner la correction dès le départ, mais Marc m'a grillé la politesse ! Bon courage pour la suite. Au fait, quelle technologie utilises-tu ? $cm =& get_manager("category"); $re =& MyRewriteEngine::getInstance(); Cela ressemble à du framework, mais lequel ? Modifié 18 Septembre 2007 par pluriels
Celine Posté 18 Septembre 2007 Auteur Posté 18 Septembre 2007 Je te propose cette version pour ta fonction : merci marcb ca marche! c'est vraiment simple en fait ,mais je n'y aurait pas penser! merci encore
Celine Posté 18 Septembre 2007 Auteur Posté 18 Septembre 2007 Au fait, quelle technologie utilises-tu ? $cm =& get_manager("category"); $re =& MyRewriteEngine::getInstance(); Cela ressemble à du framework, mais lequel ? ce n'ai pas exactement un framework mais ca fonctionne un peu pareil d'apres ce que j'ai compris c'est la technologie de freeglobes. tu trouveras de plus ample explications par là: aller voir le site
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant