【问题标题】:highlight active page in navigation bar with common header使用通用标题突出显示导航栏中的活动页面
【发布时间】:2014-11-20 21:53:50
【问题描述】:

我是网络编程新手。我制作了一个带有通用标题的简单网站。我的标题位于名为 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>

提前感谢您的帮助。我会很感激的。

【问题讨论】:

    标签: php navbar


    【解决方案1】:

    我会假设你的问题是这样的:

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

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

    在您的“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 等)我想更改导航栏上文本的颜色,具体取决于当前页面。我的意思是如果用户在联系人页面中,导航栏上的联系人名称应该是红色的。问题是当我使用之前发布的解决方案 ($_SERVER['PHP_SELF']) 时,我将此代码放在 common_header.php 中,服务器返回 common_header.php 而不是 contact.php 或 index.php。
    【解决方案2】:

    尝试将您的一个 href 更改为 about.php,看看它是否有效。示例:

           <ul class="dropdown-menu" data-role="dropdown">
            <li><a href="about.php">About</a></li>
            //etc
    

    就目前而言,您的超链接转到您的index.php,它为PHP_SELF super 赋予相同的值,因此永远不会同意about.php。至少我可以通过这个有限的代码示例看到。如果这不起作用,请编辑您的问题以包含$_SERVER['PHP_SELF'] 的输出,无论如何这应该会给您提供线索。

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

    【讨论】:

    • @Carlos $_SERVER['PHP_SELF'] 的输出是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    相关资源
    最近更新 更多