Навигация как отдельная страница в PHP

Я использую свою навигацию как отдельную страницу, которая называется 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>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, попробуйте изменить

<?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'"; }  ?>>

Я только что отредактировал свой ответ, добавив {и} и исправил = на ==

Ken Lee 26.12.2020 18:56

Хороший. Хорошего Рождества!

Ken Lee 26.12.2020 19:00

Другие вопросы по теме