Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
1948 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  modifier ce script de menu avec onglet actif

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

modifier ce script de menu avec onglet actif

n°1949828
Positivist​e
Reaction Apathique
Posté le 13-12-2009 à 09:57:16  profilanswer
 

Bonjour à tous,

 

ce script pourrait etre bien mais le souci c'est qu'il faut que tous les fichiers soit ds le meme dossier. Dés qu'il y a des sous dossier, les pages  se trouvant ds les sous dossier ne peuvent pas utiliser le script.

 

pour voir aller ici:
lhttp://www.desmotscrasseux.lautre.net/
puis sur environnement.
là çà va bien parce que la page index.php (Accueil) et environnement.php sont ds le meme dossier.
mais pas les articles qui sont ds un sous dossier donc si on choisi ds environnement "tous les articles" vous constaterez que l'onglet n'est pas actif et que le menu ne fonctionne pas ainsi que pour l'articles  agent orange qui se trouve ds "tous les articles".
comment l'optimiser ?

 


voici de le code

Code :
  1. <?php
  2.     function affiche_menu()
  3.     {
  4.         // tableaux contenant les liens d'accès et le texte à afficher
  5. $tab_menu_lien = array( "index.php", "alternaltives.php", "environnement.php", "contact.php" );
  6. $tab_menu_texte = array( "Accueil", "Alternaltives", "Environnement", "Sciences et technologies", "Media", "Vie politique", "Contact" );
  7. // informations sur la page
  8. $info = pathinfo($_SERVER['PHP_SELF']);
  9. $menu = "\n<div id=\"menu\">\n    <ul id=\"onglets\">\n";
  10.        
  11. // boucle qui parcours les deux tableaux
  12. foreach($tab_menu_lien as $cle=>$lien)
  13. {
  14.     $menu .= "    <li";
  15.     // si le nom du fichier correspond à celui pointé par l'indice, alors on l'active
  16.     if( $info['basename'] == $lien )
  17.         $menu .= " class=\"active\"";
  18.     $menu .= "><a href=\"" . $lien . "\">" . $tab_menu_texte[$cle] . "</a></li>\n";
  19. }
  20. $menu .= "</ul>\n</div>";
  21.         // on renvoie le code xHTML
  22. return $menu;
  23.     }
  24. ?>
 


j'ai pu p-ê trouver une piste ici mais je suis pas sur et je comprend pas :

 
Citation :

Ton tuto est bien, mais pour la reconnaissance de l'element actif ton approche est un peut simpliste. Généralement on utilise les tabs pour les "Sections" on imagine qu'il y aura des sous dossiers qui font partie de la même tab et dans ce cas ta tab sera plus sélectionnée.
Je te propose cette solution (peut être on peut faire plus simple)

 
Code :
  1. <?php
  2. /*
  3. * $uri  URL de la page
  4. * $link Lien à tester
  5. */
  6. function isPartOf($uri, $link, $checkFile = false){
  7. //on éclate l'url et le lien par le slash
  8.         $up = explode('/', $uri);
  9.         $lp = explode('/', $link);
  10. //on suprimme le nom de fichier pas obligatoire
  11. if(!$checkFile){
  12.         array_pop($lp);
  13.         array_pop($up);
  14. }
  15. //on suprimme le premier element vide
  16.         array_shift($lp);
  17.         array_shift($up);
  18. //le if sert à quelque chose mais je me souviens plus ca je met pas de commentaires dans mon code parce que je suis un rebelZz
  19.         if(count($lp) < count($up)){
  20. //on calcule l'intersection entre les deux ensembles et on vérifie si l'url est dans le même dossier que notre lien
  21.             return count(array_intersect($lp, $up)) >= count($lp) && count($lp) != 0;
  22.         }else{
  23.             return count(array_intersect($lp, $up)) >= count($lp);
  24.         }
  25.     }
  26. ?>
 


 


De plus le tuto indique de faire une "include" de ce style :

 


Code :
  1. <?php
  2.     require_once("./menu.php" );
  3.     $menu = affiche_menu();
  4. ?>
  5. <html>
  6. <head>
  7.     <link href="design.css" type="text/css" rel="stylesheet" />
  8. </head>
  9. <body>
  10. <?php
  11.     echo $menu;
  12. ?>
  13. </body>
  14. </html>
 

ne peut on pas mettre ce bout de php  require_once ds le HEAD plutot qu'avant la balise HTML ?
merci de m'aider a+


Message édité par Positiviste le 13-12-2009 à 10:17:08

---------------
ploum ploum tralala
mood
Publicité
Posté le 13-12-2009 à 09:57:16  profilanswer
 

n°1949832
Positivist​e
Reaction Apathique
Posté le 13-12-2009 à 10:50:14  profilanswer
 

pourrait on faire quelque chose qui dit plutot que de donné une seule page active ("index.php", "envrionnement.php", "actualité.php" )
 
on lui indique un dossier, de ce fait toutes les pages qui sont contenu ds le dossier sont prises en compte  
 
("dossier environnement", "dossier_actualite" etc...)


---------------
ploum ploum tralala
n°1949836
leinad21
The 21rst.
Posté le 13-12-2009 à 12:22:46  profilanswer
 

Pourquoi tu ne penses pas à créer une variable php dans chaque page qui pourrait indiquer le chemin jusqu'à l'index. Je pense que c'est moins couteux et que c'est plus rapide. Du genre :
$index='../../';
Je pense que ça pourrait aller et tu pourras le rajouter meme sur les images et les liens. Peace!

n°1950999
luc@s
Posté le 16-12-2009 à 18:45:10  profilanswer
 

Positiviste a écrit :

pourrait on faire quelque chose qui dit plutot que de donné une seule page active ("index.php", "envrionnement.php", "actualité.php" )
 
on lui indique un dossier, de ce fait toutes les pages qui sont contenu ds le dossier sont prises en compte  
 
("dossier environnement", "dossier_actualite" etc...)


Pour cela, il faut parcourir les dossiers et récupérer un tableau avec tous les fichiers.

Code :
  1. <?php
  2. // Array devant $directories dans la déclaration de la fonction permet de s'assurer que $directories est bien un Array.
  3. // Cela fonctionne avec n'importe quelle autre classe.
  4. function affiche_menu(Array $directories)
  5. {
  6.    $auth_files = array(); // $auth_files contient la liste des fichiers autorisés.
  7.    foreach($directories as $directory) {
  8.        $auth_files[] = scandir($directory);
  9.    }
  10.  
  11.    // Reste de la fonction
  12.    // Vérifie les fichiers avec is_file avant inclusion à cause des dossiers courant et parent.
  13.    // Tu peux aussi ajouter d'autres tests (seulement les fichiers avec certaines extensions par exemple).
  14. }
  15. ?>


Message édité par luc@s le 16-12-2009 à 18:46:11

---------------
Some people, when confronted with a problem, think "I know, I'll use multithreading". Nothhw tpe yawrve o oblems. | Logiciel de simulation de mouvements planétaires -
n°1951187
Positivist​e
Reaction Apathique
Posté le 17-12-2009 à 14:23:05  profilanswer
 

merci c'est sympas


---------------
ploum ploum tralala

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  modifier ce script de menu avec onglet actif

 

Sujets relatifs
cgi perl: comment fermer la connexion serveur en continuant le scriptmenu horz avec j.s
pb avec le sous menu en cssComment modifier la langue d'un site flash grace à un fichier xml ?
[ Resolu ] Probleme avec mon script menuscript commentaire et appels javascript
Maintenir ouvert un menu accordeonAction script : un petit souci étrange
Bug de menu sous IE 
Plus de sujets relatifs à : modifier ce script de menu avec onglet actif



Copyright © 1997-2014 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Avis LDLC / LesNumeriques.com