Positiviste Reaction Apathique | 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 :
- <?php
- function affiche_menu()
- {
- // tableaux contenant les liens d'accès et le texte à afficher
- $tab_menu_lien = array( "index.php", "alternaltives.php", "environnement.php", "contact.php" );
- $tab_menu_texte = array( "Accueil", "Alternaltives", "Environnement", "Sciences et technologies", "Media", "Vie politique", "Contact" );
- // informations sur la page
- $info = pathinfo($_SERVER['PHP_SELF']);
- $menu = "\n<div id=\"menu\">\n <ul id=\"onglets\">\n";
-
- // boucle qui parcours les deux tableaux
- foreach($tab_menu_lien as $cle=>$lien)
- {
- $menu .= " <li";
- // si le nom du fichier correspond à celui pointé par l'indice, alors on l'active
- if( $info['basename'] == $lien )
- $menu .= " class=\"active\"";
- $menu .= "><a href=\"" . $lien . "\">" . $tab_menu_texte[$cle] . "</a></li>\n";
- }
- $menu .= "</ul>\n</div>";
- // on renvoie le code xHTML
- return $menu;
- }
- ?>
| 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 :
- <?php
- /*
- * $uri URL de la page
- * $link Lien à tester
- */
- function isPartOf($uri, $link, $checkFile = false){
- //on éclate l'url et le lien par le slash
- $up = explode('/', $uri);
- $lp = explode('/', $link);
- //on suprimme le nom de fichier pas obligatoire
- if(!$checkFile){
- array_pop($lp);
- array_pop($up);
- }
- //on suprimme le premier element vide
- array_shift($lp);
- array_shift($up);
- //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
- if(count($lp) < count($up)){
- //on calcule l'intersection entre les deux ensembles et on vérifie si l'url est dans le même dossier que notre lien
- return count(array_intersect($lp, $up)) >= count($lp) && count($lp) != 0;
- }else{
- return count(array_intersect($lp, $up)) >= count($lp);
- }
- }
- ?>
|
|
De plus le tuto indique de faire une "include" de ce style :
Code :
- <?php
- require_once("./menu.php" );
- $menu = affiche_menu();
- ?>
- <html>
- <head>
- <link href="design.css" type="text/css" rel="stylesheet" />
- </head>
- <body>
- <?php
- echo $menu;
- ?>
- </body>
- </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
|