Menu actif et include php

meteo75

WRInaute discret
Bonjour !

J'ai un menu qui est dans une include
<?php
include("./menu.php");
?>
pour toutes mes pages . cependant j'ai un lien qui se met en surbrillance sur la page que l'on est

ex: page1.php le menu page1 se met en surbrillance .

Mais je ne sais pas comment faire ... pour activer le lien sur la page avec l'include pour toutes les pages .
 

marchandeo

WRInaute discret
L'include en PHP n'est pas pré-exécuté, tu peux donc utiliser à l'intérieur de ton script menu.php toutes les données accessibles par le script appelant. Dans le cas d'un menu, tu dois certainement récupérer le nom de la catégorie courante et mettre en place une condition pour chaque partie de ton menu. Un exemple qui j'espère t'éclairera un peu :
Code:
<ul>
<li><a href="/page1.php" <?php if($_GET['page'}=='page1') echo 'class="surbrillance"'; ?> >Page 1</a></li>
<li><a href="/page2.php" <?php if($_GET['page'}=='page2') echo 'class="surbrillance"'; ?> >Page 2</a></li>
</ul>
 

meteo75

WRInaute discret
Bonjour,

En fait je vais me reexpliquer . J'ai un site tout en php avec plusieurs centaines de pages . Pour eviter de modifier mon menu sur toutes les pages en cas de modifs, je preferre y modifier la page de l'include a savoir menu.php comme ca le menu se modifiera partout . Ca j'y arrive .

Le soucis, c'est que mon menu se compose suivant
menu1 menu2 menu3 menu4
Et si quelqu'un se trouve sur la page de menu2, il a un style.css " spécial " pour montrer au visiteur qu'il est sur la page de menu2 . ( <li class="menu-act">menu2 </li> )

Mon problème
est comment faire pour dire à l'include, il faut mettre un style spécial a ce menu car on s'y trouve ?
 

KOogar

WRInaute accro
avec l'URI, cad le nom de ta page, ou une partie du nom

Code:
               <?php 
               if(strstr($_SERVER["REQUEST_URI"],'meteo')) 
               echo '<li class="menu-act">menu2</li>';
               else 
               echo '<li>menu2</li>'; 
               ?>

tu comprends le fonctionnement ?
 

zeb

WRInaute accro
Ce que te dit KOogar c'est que la variable $_SERVER["REQUEST_URI"] contient l'URL de la page en cours d'affichage.

Partant de là, ton script "menu.php" en testant cette variable peut composer dynamiquement un menu adapté a chaque URL ou sections de ton site.
 

UsagiYojimbo

WRInaute accro
En gros ce que propose Koogar c'est :

Code:
<?php
if(strstr($_SERVER["REQUEST_URI"],'meteo')) // si j'ai le mot meteo dans mon url alors :
{
echo '<li class="menu-act">menu2</li>';
}
else //si je n'ai pas le mot meteo dans mon url alors :
{
echo '<li>menu2</li>'; 
}
?>

décliné pour l'ensemble des items de ton menu
 

mouls

Nouveau WRInaute
Bonjour,

ce script marche à merveille, mais j'ai une question : comment insérer plusieurs mots ?

ex : if(strstr($_SERVER["REQUEST_URI"],'leon,loulou,lili'))

La cause est que j'ai un menu déroulant en js sous cette rubrique.

Merci !
 

ZHB

Nouveau WRInaute
Tu peux utiliser une autre solution qui consiste à insérer par exemple dans la balise <body> un identifiant par section. Donc toutes les pages qui sont par exemples liées au menu "exemple1", tu leur met ceci :
Code:
<body id="exemple1">

Ton menu tu le fais ainsi :
Code:
<a class="exemple1" href="">Exemple1</a>

Ensuite, dans ton css, tu ajoute la balise que tu veux permettant de modifier ton menu :
Code:
#exemple1.menu li a.exemple1,
#exemple2.menu li a.exemple2  {
    border-top: 4px solid rgba(0, 0, 0, 0.15);
    color: rgb(119, 119, 119);
}


Suivant comment tu as développé ton site, cette technique s'applique très rapidement. C'est ce que j'utilise sur mon site (voir mon www).
 

mouls

Nouveau WRInaute
Salut,

En fait j'ai exactement le code ci-dessous :

KOogar a dit:
avec l'URI, cad le nom de ta page, ou une partie du nom

Code:
               <?php 
               if(strstr($_SERVER["REQUEST_URI"],'meteo')) 
               echo '<li class="menu-act">menu2</li>';
               else 
               echo '<li>menu2</li>'; 
               ?>

Mon problème est que j'ai un sous menu en javascript sous un de mes éléments de liste : chaque élément de sous menu pointe un lien vers une page différente : comment mettre ces noms de pages à la suite dans ce code pour que la requete serveur les reconnaisse tous ?

Voyez mon site pour illustration : www.r9infiltrometrie.fr

Un grand merci !
 

ZHB

Nouveau WRInaute
Code:
if (preg_match("#meteo|nuage|vent|neige#i", $_SERVER["REQUEST_URI"])) {
   echo '<li class="menu-act">menu2</li>';
} else {
   echo '<li>menu2</li>'; 
}
 

mouls

Nouveau WRInaute
Bonjour à tous,

je veux apporter une modif à ce code qui marche très bien :

<li><a href="http://www.r9infiltrometrie.fr/etancheite-a-lair-fouesnant.php" <?php
if(strstr($_SERVER["REQUEST_URI"],'etancheite-a-lair'))
echo '<li class="li actif">ETANCHEITE A L\'AIR</li>';
else
echo '<li class="li prestations">ETANCHEITE A L\'AIR</li>';
?></a></li>

Quel code rajouter pour adapter le lien a à l'url ? explication : si l'internaute est sur la page dpe-quimper, je veux que mon menu affiche les liens avec "extensions" -quimper, alors que s'il est sur la page dpe-fouesnant, je veux afficher les liens avec "extensions" -fouesnant.

J'ai bidouillé un truc mais ça ne marche pas !

Merci !
 

mouls

Nouveau WRInaute
mouls a dit:
Bonjour à tous,

je veux apporter une modif à ce code qui marche très bien :

<li><a href="http://www.r9infiltrometrie.fr/etancheite-a-lair-fouesnant.php" <?php
if(strstr($_SERVER["REQUEST_URI"],'etancheite-a-lair'))
echo '<li class="li actif">ETANCHEITE A L\'AIR</li>';
else
echo '<li class="li prestations">ETANCHEITE A L\'AIR</li>';
?></a></li>

Quel code rajouter pour adapter le lien a à l'url ? explication : si l'internaute est sur la page dpe-quimper, je veux que mon menu affiche les liens avec "extensions" -quimper, alors que s'il est sur la page dpe-fouesnant, je veux afficher les liens avec "extensions" -fouesnant.

J'ai bidouillé un truc mais ça ne marche pas !

Merci !

J'ai trouvé !

<li><a href="http://www.r9infiltrometrie.fr/etancheite-a-lair-<?php
if(strstr($_SERVER["REQUEST_URI"],'audierne')){
$ville='audierne';
}
elseif(strstr($_SERVER["REQUEST_URI"],'benodet')){
$ville='benodet';
}
elseif(strstr($_SERVER["REQUEST_URI"],'chateaulin')){
$ville='chateaulin';
}
elseif(strstr($_SERVER["REQUEST_URI"],'concarneau')){
$ville='concarneau';
}
elseif(strstr($_SERVER["REQUEST_URI"],'douarnenez')){
$ville='douarnenez';
}
elseif(strstr($_SERVER["REQUEST_URI"],'fouesnant')){
$ville='fouesnant';
}
elseif(strstr($_SERVER["REQUEST_URI"],'pont-labbe')){
$ville='pont-labbe';
}
else{
$ville='quimper';
}
echo $ville;
?>.php" <?php
if(strstr($_SERVER["REQUEST_URI"],'etancheite-a-lair'))
echo '<li class="li actif">ETANCHEITE A L\'AIR</li>';
else
echo '<li class="li prestations">ETANCHEITE A L\'AIR</li>';
?></a></li>
 

Discussions similaires

Haut