Я вижу много таких вопросов вокруг этого веб-сайта и в Интернете, но я не могу найти конкретный ответ на то, что я пытаюсь сделать. Я не хочу использовать JS, я хочу использовать его как можно меньше, но если мне придется это сделать.
Я хочу использовать PHP для добавления активного класса в мои навигационные ссылки, когда эта страница открыта, или если открыта страница в раскрывающемся меню (подстраница, на которую я ссылался). Вот мой код.
На всех моих страницах я включил следующее:
<?php include('includes/header.php'); ?>
В качестве части этой страницы я имею следующее:
<ul class="firstbar">
<li class="item"><a href="index.php">Home</a></li>
<li class="item has-dropdown">
<a href="about.php">About Us</a>
<ul class="dropdown">
<li><a href="about.php#about">G2 Drivers</a></li>
<li><a href="about.php#locations">Locations</a></li>
<li><a href="about.php#instructors">Instructors</a></li>
</ul>
</li>
<li class="item has-dropdown">
<a href="services.php">Services</a>
<ul class="dropdown">
<li><label>In-car</label></li>
<li><a href="services/defensivedriving.php">Defensive Driving</a></li>
<li><a href="services/incarlessons.php">In-car Lessons</a></li>
<li class="divider"></li>
<li><label>In-class</label></li>
<li><a href="services/curriculum.php">Curriculum</a></li>
</ul>
</li>
</ul>
Вы можете посмотреть тестовый URL-адрес здесь: www.mrobertsdesign.ca/g2drivers/(активный класс уже доступен, просто не уверен, как его добавить)
Активный класс должен быть добавлен в тег элемента списка непосредственно перед тегом привязки, как показано ниже:
<li class="active item"><a href="index.php">Home</a></li>
На странице about.php есть раскрывающееся меню, но оно только хеш связано с частями этой страницы. Но для таких страниц, как services.php, который имеет раскрывающийся список на разные страницы, я хочу, чтобы в теге элемента списка "Службы" был активный класс, поэтому ничего другого. Например:
<li class="active item has-dropdown">
<a href="services.php">Services</a>
<ul class="dropdown">
<li><label>In-car</label></li>
<li><a href="services/defensivedriving.php">Defensive Driving</a></li>
<li><a href="services/incarlessons.php">In-car Lessons</a></li>
<li class="divider"></li>
<li><label>In-class</label></li>
<li><a href="services/curriculum.php">Curriculum</a></li>
</ul>
</li>
То, что я не могу найти ни в одном из вопросов, которые я рассматривал до сих пор, заключается в том, что если бы кто-то был на одной из страниц в раскрывающемся меню, большинство вопросов, похоже, не включают идея выпадающего меню и кода обычно включает поиск текущей страницы и т.д., поэтому до сих пор мне не удалось использовать это для этой проблемы.
Вся помощь приветствуется! Благодарю!
@1andsock ответил на первую половину вопроса ниже, но у меня есть пара страниц, которые находятся в разных папках и имеют одно и то же имя, поэтому сценарий не работает в этих ситуациях. Для всех, кто хотел бы взглянуть и хотел бы помочь мне в этом, это было бы потрясающе =)
Добавить class= "active" на активную страницу с помощью PHP
Это аналогичная статья для этого, которую я только что видел, и, похоже, отвечает на то, что я ищу, но у нее есть класс "noactive", я просто хочу, чтобы он был "активным" или просто не отображался активным.
Я не тестировал это, но почему бы вам просто не сделать:
<?php
$current_page = basename($_SERVER['PHP_SELF']);
?>
а потом:
<li class="<?php if ($current_page == "index.php"){ echo "active "; }?> item"><a href="index.php">Home</a></li>
для обычных ссылок и:
<li class="<?php if ($current_page == "index.php"){ echo "active "; }?> item has-dropdown">
<a href="about.php">About Us</a>
для ссылок с выпадающими списками?
Если вы используете сеансы, вы можете установить текущую переменную сеанса страницы и использовать ее на странице:
На каждой странице:
session_start();
$_SESSION['current_page'] = 'this_page';
Затем на странице меню:
<li class="<?php if ($_SESSION['current_page'] == 'this_page'){ echo 'active '; }?> item"><a href="index.php">Home</a></li>