Version complète: sur le forum Webmaster Hub : Interprétation de code
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Celine
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:
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
CODE
<{if isset($smarty.get.dir) }>
    <h1 ><{$way_to_cat}></h1>
    <br />
<{/if}>

CITATION
$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
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.

CODE
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):

CODE
$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
Bonjour,

Je te propose cette version pour ta fonction :

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');

// 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> :

CODE
<{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
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 ! whistling.gif
Bon courage pour la suite.

Au fait, quelle technologie utilises-tu ?

$cm =& get_manager("category");
$re =& MyRewriteEngine::getInstance();

Cela ressemble à du framework, mais lequel ?
Celine
CITATION
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
CITATION
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
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.