PHP set active link on page using includes

J'ai donc cherché SO pendant une heure à essayer de trouver la réponse, et j'ai également essayé diverses méthodes, y compris cela

J'essaie d'inclure mes pages, ainsi que la navigation. Mais sur la page correcte, j'ai besoin de l'élément de la liste pour avoir une classe active . La navigation se trouve dans header.php et ressemble actuellement à ceci:

 <nav> <ul> <li class="active"> <a href="/">Home</a> </li> <li> <a href="#">Apps</a> </li> <li> <a href="#">Forums</a> </li> </ul> </nav> 

Tout d'abord, je n'ai aucune idée si JS (jQuery) serait mieux, ou si PHP devait être mieux. Les deux ne seraient pas importants si cela fonctionne.

Aussi, je suis un peu nouveau avec PHP et essaye d'apprendre.

Quelle serait la méthode la plus simple (j'espère) d'utiliser? Donc, je n'ai pas à changer beaucoup de code juste pour donner une nav class="active"

Si vous avez une variable $page (qui contient le nom de la page que vous êtes actuellement activé):

  <nav> <ul> <li class="<?php echo ($page == "home" ? "active" : "")?>"> <a href="/">Home</a> </li> <li class="<?php echo ($page == "apps" ? "active" : "")?>"> <a href="#">Apps</a> </li> <li class="<?php echo ($page == "forums" ? "active" : "")?>"> <a href="#">Forums</a> </li> </ul> </nav> 

Voici un moyen simple où vous n'avez pas besoin d'ajouter d'autres variables

 <li class="<?php echo ($_SERVER['PHP_SELF'] == "/index.php" ? "active" : "");?>"> <a href="index.php">Start</a> </li> <li class="<?php echo ($_SERVER['PHP_SELF'] == "/about.php" ? "active" : "");?>"> <a href="about.php">About</a> </li> <li class="<?php echo ($_SERVER['PHP_SELF'] == "/practices.php" ? "active" : "");?>"> <a href="practices.php">Practices</a> </li> 

Si vous utilisez la chaîne de requête exmaple.com?page_id=Apps pour passer l'ID de la page qu'avec php, vous pouvez aborder cette chose

$ Page_id = $ _REQUEST ['page_id'];

  <ul> <li class="<?php echo ($page_id == "Home" ? "active" : "");?>"> <a href="/">Home</a> </li> <li class="<?php echo ($page_id == "Apps" ? "active" : "");?>"> <a href="#">Apps</a> </li> <li class="<?php echo ($page_id == "Forums" ? "active" : ""); ?>"> <a href="#">Forums</a> </li> </ul> 

À l'en-tête de la page, utilisez:

 <?php $loc = this.location; ?> 

Ensuite, à chaque lien ajouter:

 <?php(this.href == $loc) ? echo 'class="active"' : '' ?> 

Si vous ne souhaitez pas utiliser jQuery ou PHP – pouvez faire ensuite:

  1. Donnez une ID ou une classe différente à chaque élément <li> dans "your-include-nav.php".
  2. Définissez le style "actif" avec CSS dans la section <head> , sur chaque page.