Php 在导航栏中突出显示带有公共标题的活动页面

Php 在导航栏中突出显示带有公共标题的活动页面,php,navbar,Php,Navbar,我是网络编程新手。我制作了一个带有普通标题的简单网站。我的标题在一个名为inc/common_header.php的文件夹中,我将此标题包含在所有其他页面中。 到目前为止,标题运行良好,但我想在当前页面的导航菜单中添加不同的颜色。我尝试了这个解决方案: <?php if (strpos($_SERVER['PHP_SELF'], 'about.php')) echo 'class="current"'; ?> 这个解决方案运行良好,但我的问题是导航栏位于单独的页面中,当我单击

我是网络编程新手。我制作了一个带有普通标题的简单网站。我的标题在一个名为inc/common_header.php的文件夹中,我将此标题包含在所有其他页面中。 到目前为止,标题运行良好,但我想在当前页面的导航菜单中添加不同的颜色。我尝试了这个解决方案:

<?php 
if (strpos($_SERVER['PHP_SELF'], 'about.php')) echo 'class="current"';
?>

这个解决方案运行良好,但我的问题是导航栏位于单独的页面中,当我单击时,结果总是相同的inc/common_header.php,而不是当前页面

这是我的密码:

common_header.php

<nav class="navigation-bar fixed-top">
<nav class="navigation-bar-content">
    <a class="element brand" href="/"><span class="icon-grid-view"></span> COMPANY NAME</a>

    <span class="element-divider"></span>

    <a class="element brand" href="/"><span class="icon-home"></span> HOME</a>
    <div class="element">
        <a class="dropdown-toggle" href="#"><span class="icon-printer"></span> SERVICES</a>
        <ul class="dropdown-menu" data-role="dropdown">
            <li><a href="#">SERVICE 1</a></li>
            <li><a href="#">SERVICE 2</a></li>
            <li><a href="#">SERVICE 3</a></li>
            <li class="divider"></li>
            <li><a href="#">SERVICE 4</a></li>
            <li><a href="#">SERVICE 5</a></li>
            <li class="divider"></li>
            <li><a href="#">SERVICE 6</a></li>
            <li><a href="#">SERVICE 7</a></li>
        </ul>
    </div>

     <div class="element">
        <a class="dropdown-toggle" href="#"><span class="icon-printer"></span> CALCULATOR</a>
        <ul class="dropdown-menu" data-role="dropdown">
            <li><a href="calc_home.php">HOME</a></li>
        </ul>
    </div>

    <a class="element brand" href="about.php"><span class="icon-printer"></span> ABOUT</a>

    <div class="element place-right">
        <a class="dropdown-toggle" href="#"><span class="icon-cog"></span> SETTINGS</a>
        <ul class="dropdown-menu place-right" data-role="dropdown">
            <li><a href="#">MY ACCOUNT</a></li>
            <li><a href="#">MY PRODUCTS</a></li>
            <li class="divider"></li>
            <li><a href="#">LOG OUT</a></li>
        </ul>
    </div>
    <span class="element-divider place-right"></span>
    <button class="element image-button image-left place-right"> USERNAME <img src="img/me.jpg"/></button>
</nav>

用户名


提前感谢你的帮助。我将不胜感激。

尝试将其中一个href更改为
about.php
,看看它是否有效。例如:

       <ul class="dropdown-menu" data-role="dropdown">
        <li><a href="about.php">About</a></li>
        //etc
  • //等
目前,您的超链接指向您的
index.php
,它将相同的值赋予
php\u SELF
super,因此从不同意
about.php
。至少我可以从这个有限的代码示例中看到这一点。如果这不起作用,请编辑您的问题,将
$\u服务器['PHP\u SELF']
的输出包括在内,这应该会给您提供线索


此外,在比较字符串时,没有理由使用
strpos
;请改用运算符,它会检查参数是否具有相同的类型以及它们是否具有相同的值。

我假定您的问题是:

在“common_header”文件中,您有站点页面的公共部分(页眉)。您可以在站点的所有页面(例如:主页、关于、服务、产品、联系人)中包含该文件“common_header”。但是,在其中一个页面(例如:contact)和该页面中,您希望以不同的样式显示标题

如果这是您的问题,我的解决方案是:

在“common_header”页面中,请使用以下php代码,而不是您现有的代码:

if(isset($specialPage) && $specialPage == "this is the special page"){
    echo 'class="current"';
};
然后,在您的“联系人”页面(我正在使用该页面作为示例)中,在包含标题页之前写下以下内容:

$specialPage = "this is the special page";
include("your header page");

同样,如果这不是您想要的,我很抱歉误解了您的问题。

谢谢您的帮助。Verhaeren,你离我需要的东西太近了。我在php文件(common_header.php)中有一个导航栏,还有一些页面(比如index.php、about.php、contact.php等),我想根据当前页面更改导航栏上文本的颜色。我的意思是,如果用户在联系人页面,导航栏上的联系人名称应该是,例如,红色。问题是,当我使用之前发布的解决方案($\u SERVER['PHP\u SELF'])时,我将此代码放在common\u header.PHP中,服务器返回common\u header.PHP而不是contact.PHP或index.PHP。@Carlos
$\u SERVER['PHP\u SELF']
的输出是什么?