Aller au contenu

Interprétation de code


Sujets conseillés

Posté

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.

Posté

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.

Posté

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

Posté (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 ! :whistling:

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é par pluriels
Posté
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

Posté
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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...