Jump to content

"rendre" les boutons de navigation actif


Recommended Posts

Bonjour

Il faut utiliser un code PHP (désolé en Smarty je sais pas faire !) pour détecter la page en cours. Peut-être existe-t-il d'ailleurs des variables Smarty propres à Prestashop pour savoir où l'on se trouve (c'est fort probable)

Par ex. sur la catégorie "Marché aux tissus" on peut voir si la variable Smarty id_category est remplie et égale à 5. Si oui on affiche class="active" au niveau du code HTML du lien. Sinon non.

Idem pour les autres liens.

Je sais pas si je suis clair :)

Link to comment
Share on other sites

Tu peux analyser la présence d'un bout de chaîne de caractères dans l'URL (par ex. "/order.php") et le cas échéant, activer ou non la balise.

J'utilise une fonction "maison" :

<?php

function GetTitle($Base) {
   // Retourne la classe adéquate le cas échéant selon l'URL en cours
   // Attention, dépend de la config serveur de l'hébergeur !
   $Url = htmlentities($_SERVER['REQUEST_URI']);
   $Position = strpos($Url, $Base);
   if(!($Position===false))
       { echo ' class="active"'; }
}

?>



Ensuite, au niveau du code, ça pourrait donner (à l'arrache, vérifier car j'écris ça sans tester) :

>
...
</pre>
<ul>
      ...
Le marché aux tissus
      ...
</ul>
<br>..



Remplacer rel="ICI" par ça :
<?php GetTitle("category.php?id_category=5");?>

Attention, c'est du code PHP, pas Smarty !!!





P... de bordel de m... ! Pénible ce forum, on peut jamais poster de code PHP dans la balise Code !!!

Link to comment
Share on other sites

Non, ça ne peut pas marcher car tu appelles ta barre de navigation avant qu'elle ne puisse savoir ce qui va être chargé par la suite...

Si tu places l'appel de ton fichier dans la page de destination (par ex product.php ou category.php) ça marchera sinon ce n'est pas possible... sauf à bidouiller un module propriétaire comme moi (cf capture) et de shinter le breadcrumb.tpl ;)

Cdt

9317_XUWdG59BValYCtdNp4zt_t

Link to comment
Share on other sites

Bonjour,
J'ai suivi les instructions mais tj pas de nav active
Où est ce que je me plante ?
code index.php

<?php
function GetTitle($Base) {
   // Retourne la classe adéquate le cas échéant selon l'URL en cours
   // Attention, dépend de la config serveur de l'hébergeur !
   $Url = htmlentities($_SERVER['REQUEST_URI']);
   $Position = strpos($Url, $Base);
   if(!($Position===false))
       { echo ' class="active"'; }
}


include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/header.php');

$smarty->assign('HOOK_HOME', Module::hookExec('home'));
$smarty->display(_PS_THEME_DIR_.'index.tpl');

include(dirname(__FILE__).'/footer.php');

?>



code header.tpl


Accueil
Le marché aux tissus
Espace création
Votre panier

Link to comment
Share on other sites

Attention, le "rel=" ne doit pas être imprimé !

C'est vraiment pénible ce forum pour poster du code, ça induit en erreur (Patric si tu passes par là, tu sais ce qu'il te reste à faire :cheese: )

< l i > < a h r e f = " i n d e x . p h p " < ? p h p G e t T i t l e ( “ i n d e x . p h p ” ) ; ? > > A c c u e i l < / a > < / l i >


Qu'est-ce qu'on n'est pas obligé de faire pour une ligne de code...

Si tu veux utiliser ça dans un fichier .tpl, voir avec la balise Smarty {php}

Link to comment
Share on other sites

Merci pour ton aide
"Si tu veux utiliser ça dans un fichier .tpl, voir avec la balise Smarty {php}", c'est à dire ?
J'ai fait la modif, toujours rien.
Aies je bien placé la fonction comme tu peux voir ds le forum plus haut
Pour te montrer le résultat souhaité rien de mieux qu'une photo et pourquoi c'est important...

9326_33bG7GuXG0wINZgLZt82_t

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...