Я использую свою навигацию как отдельную страницу, которая называется Navigation.php
, и я добавляю эту страницу с помощью <?php include 'header.php'; ?>
на каждой странице.
Но когда я перехожу на страницу, например: перехожу на страницу «О программе», эта кнопка «О программе» на панели навигации имеет класс class='active'
, и этот класс добавляется с помощью javascript.
Проблема возникает, когда я перехожу на страницу 2-го уровня, например:Portfolio
> Portfolio Item
Этот скрипт не добавляет класс на кнопку Portfolio
.Navigation.php
страница:
<ul class = "nav nav-pills" id = "mainNav">
<li <?php echo (basename($_SERVER['PHP_SELF']) == 'index.php') ? 'class = "active"' : ''; ?>>
<a class = "nav-item nav" href = "/home">
Home
</a>
</li>
<li <?php echo (basename($_SERVER['PHP_SELF']) == 'about.php') ? 'class = "active"' : ''; ?>>
<a class = "nav-item" href = "/about">
About
</a>
</li>
<li <?php echo (basename($_SERVER['PHP_SELF']) == 'services.php') ? 'class = "active"' : ''; ?>>
<a class = "nav-item" href = "/services">
Services
</a>
</li>
<li <?php if ((basename($_SERVER['SCRIPT_FILENAME'], '.php')) == 'portfolio' or 'portfolioItem') echo "class='active'";?>>
<a class = "nav-item" href = "/portfolio">
Portfolio
</a>
</li>
<li <?php echo (basename($_SERVER['PHP_SELF']) == 'showcase.php') ? 'class = "active"' : ''; ?>>
<a class = "nav-item" href = "/showcase">
Showcase
</a>
</li>
<li <?php echo (basename($_SERVER['PHP_SELF']) == 'blog.php') ? 'class = "active"' : ''; ?>>
<a class = "nav-item" href = "/blog">
Blog
</a>
</li>
<li <?php echo (basename($_SERVER['PHP_SELF']) == 'contact.php') ? 'class = "active"' : ''; ?>>
<a class = "nav-item" href = "/contact">
Contact
</a>
</li>
</ul>
Javascript
Я использую:
<script>
$(function () {
var pgurl = window.location.href.substr(window.location.href.lastIndexOf("/") + 1);
$("nav-pills ul li").each(function () {
if ($(this).attr("href") == pgurl) {
$(this).parent().addClass('active');
}
if ((($(this).attr("href") == 'index.php')||($(this).attr("href") == '')) && (pgurl == '')) {
$(this).parent().addClass("active");
}
})
});
</script>
Пожалуйста, попробуйте изменить
<?php if ((basename($_SERVER['SCRIPT_FILENAME'], '.php')) == 'portfolio' or 'portfolioItem') echo "class='active'";?>>
к
<?php if ( (basename($_SERVER['SCRIPT_FILENAME'], '.php')) == 'portfolio.php' || (basename($_SERVER['SCRIPT_FILENAME'], '.php')) == 'portfolioItem.php' ) { echo "class='active'"; } ?>>
Хороший. Хорошего Рождества!
Я только что отредактировал свой ответ, добавив {и} и исправил = на ==