PHP устанавливает активную ссылку на странице, используя включает


Поэтому я искал ТАК в течение часа, пытаясь найти ответ, а также пробовал различные методы, включая этот

Я пытаюсь включить свои страницы вместе с навигацией. Но на правильной странице мне нужно, чтобы элемент списка имел класс active. Навигация находится в header.php и в настоящее время выглядит так:

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

Во-первых, я понятия не имею, будет ли JS(jQuery) лучше, или PHP должен быть лучше. И то, и другое не имело бы значения, если бы это сработало.

Также я немного новичок в PHP и пытается учиться.

Какой метод был бы самым простым (надеюсь) для использования? Так что мне не нужно менять много кода, чтобы просто дать навигацию class="active"

Author: nowayyy, 2011-12-12

7 answers

Как у вас есть переменная $page (которая содержит название страницы, на которой вы находитесь в данный момент):

  <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>
 28
Author: Neal, 2011-12-12 14:59:14

Вот простой способ, при котором вам не нужно добавлять какую-либо другую переменную

<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>
 8
Author: Niklas Andersson, 2014-02-13 18:47:38

Если вы используете строку запроса exmaple.com?page_id=Apps для передачи идентификатора страницы, чем с php, вы можете подойти к этой вещи

$идентификатор страницы = $_REQUEST['идентификатор страницы'];

 <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>
 0
Author: Punit, 2011-12-12 15:12:22

В заголовке страницы используйте:

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

Затем по каждой ссылке добавляйте:

<?php(this.href == $loc) ? echo 'class="active"' : '' ?>
 0
Author: lightofsouls, 2013-06-25 10:38:38

Если вы не хотите использовать jQuery или PHP - можете сделать следующее:

  1. Укажите идентификатор или другой КЛАСС для каждого элемента <li> в "your-include-nav.php ".
  2. Определите "активный" стиль с помощью CSS в разделе <head> на каждой странице.
 0
Author: Niko, 2015-04-10 22:48:04

Определить переменную $page="index.php "в index.php страница и для других страниц измените значение переменной в соответствии с именем страницы

<li class="<?php echo ($page == "index.php" ? "active" : "")?>">
    <a href="index.php">Home</a>
</li>
<li class="<?php echo ($page == "about.php" ? "active" : "")?>">
    <a href="about.php">About</a>
</li>
<li class="<?php echo ($page == "service.php" ? "active" : "")?>">
    <a href="service.php">Services</a>
</li>
<li class="<?php echo ($page == "contact.php" ? "active" : "")?>">
    <a href="contact.php">Contact</a>
</li>
 0
Author: Harshvardhan Singh Baghel, 2018-08-04 12:49:29

Добавьте функцию basename перед функцией $_SERVER. Я надеюсь, что это сработает.

echo (basename($_SERVER['PHP_SELF']) == 'yourPageName' ?'active' : " ");
 0
Author: Hamza Khan, 2018-09-29 20:12:43