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"
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>
Вот простой способ, при котором вам не нужно добавлять какую-либо другую переменную
<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>
Если вы используете строку запроса 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>
В заголовке страницы используйте:
<?php $loc = this.location; ?>
Затем по каждой ссылке добавляйте:
<?php(this.href == $loc) ? echo 'class="active"' : '' ?>
Если вы не хотите использовать jQuery или PHP - можете сделать следующее:
- Укажите идентификатор или другой КЛАСС для каждого элемента
<li>
в "your-include-nav.php ". - Определите "активный" стиль с помощью CSS в разделе
<head>
на каждой странице.
Определить переменную $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>
Добавьте функцию basename
перед функцией $_SERVER
. Я надеюсь, что это сработает.
echo (basename($_SERVER['PHP_SELF']) == 'yourPageName' ?'active' : " ");