导航作为 PHP 中的单独页面

Posted

技术标签:

【中文标题】导航作为 PHP 中的单独页面【英文标题】:Navigation as a separate page in PHP 【发布时间】:2021-04-04 03:08:36 【问题描述】:

我将我的 导航 用作单独的页面,即 Navigation.php,并且我将通过 <?php include 'header.php'; ?> 在每个页面中添加此页面。 但是当我进入一个页面时,例如:进入 About 页面,导航栏中的那个 About 按钮有一个类 class='active' 并且该类是由 javascript 添加的。 当我要进入第二级页面时,问题就来了: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>

【问题讨论】:

【参考方案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'";   ?>>

【讨论】:

我刚刚通过添加 和 编辑了我的答案并将 = 更正为 == 好。圣诞快乐!

以上是关于导航作为 PHP 中的单独页面的主要内容,如果未能解决你的问题,请参考以下文章

PHP 突出显示导航中的当前页面

在 wp 导航菜单中将父页面和子页面包装在单独的 ul 中

导航栏品牌中的 Laravel 动态页面标题

为啥我的页面在导航中出现 php 代码空白

如何在具有棱镜的Xamarin表单中为contentview创建单独的视图模型?

PHP PHP包括导航,选择/突出显示当前页面