2010-04-09 6 views
0

J'ai un menu horizontal identique en haut de toutes mes pages, que j'ajoute en utilisant une instruction PHP include(). Dans ma feuille de style je veux avoir une classe où si l'utilisateur est sur une page particulière, l'élément de menu correspondant à cette page aura une couleur différente. Donc, plus ou moins:Définir une classe pour un élément dans un include PHP()

# menu { couleur de fond: bleu; }

# menu .active { Couleur de fond: vert; }

Mais, puisque le menu vient de l'include PHP, c'est toujours pareil. Comment puis-je écrire du code PHP ou JavaScript qui ajoute class = "active" à l'élément de menu approprié pour chaque page?

Répondre

3

Lorsque vous include() un fichier, le fichier inclus a accès à toutes les variables dans le champ d'application à l'endroit où il est inclus. Vous pouvez facilement définir une variable pour dire quel élément de menu doit être actif. Un exemple de base pourrait être quelque chose comme ceci:

firstpage.php

<?php 

$chosenMenu = 'page1'; 
include('menu.php'); 

menu.php

<div id="menu"> 
<?php 
$menuItems = array(
    'page1'=>'firstpage.php', 
    'page2'=>'secondpage.php', 
    'page3'=>'lolcats.php' 
); 
foreach($menuItems as $key => $value) { 
    echo '<a href="'.$value.'"'; 
    if (isset($chosenMenu) && $chosenMenu == $key) echo ' class="active"'; 
    echo '>'; 
} 
?> 
</div> 

Avec ce style, vous pouvez simplement définir une variable avant $chosenMenu y compris votre fichier de menu, et vous pouvez le contrôler à partir de là.

Questions connexes