如果变量等于href insert class to link

时间:2013-03-18 23:32:05

标签: php html5 url-routing hyperlink

我正在尝试创建一个导航,当用户在链接的href页面内时,它会应用颜色。所以我搜索了,我认为最好的方法是使用:

$url = $_SERVER['REQUEST_URI'];

我应该创建一个if语句,如果url与导航的href相同,它应该在<a>元素中插入一个类。这个类将通过CSS应用它。

如果有帮助,请点击html导航:

    <div id="categories">
                    <ul>
                        <li id="nav-quien"><a href="biografia.php">quien es</a>
                            <ul>
                                <li id="nav-biografia" class="drop1"><a href="biografia.php">biografia</a></li>
                                <li id="nav-curriculum" class="drop2"><a href="curriculum_todos.php">curriculum</a></li>
                            </ul>
                        </li>
                        <li id="nav-galeria" class="marginli"><a href="gallery.php">galeria</a>
                            <ul>
                                <li id="nav-gal-nat" class="drop3"><a href="gallery_natural.php">paisaje natural</a></li>
                                <li id="nav-gal-urb" class="drop4"><a href="gallery_urbano.php">paisaje urbano</a></li>
                            </ul>
                        </li>
                        <li id="nav-prensa" class="marginli"><a href="prensa.php">prensa</a></li>
                        <li id="nav-links" class="marginli"><a href="links.php">links</a></li>
                        <li id="nav-contacto" class="marginli"><a href="contacto.php">contacto</a></li>
                    </ul>
                </div> 
</div>

我正在尝试了解如何使用request_uri进行wotk,因为我认为它非常有用。所以任何帮助都非常受欢迎!

:)

3 个答案:

答案 0 :(得分:1)

我通常做这样的事情:

<?php

function is_active($page) {
    return $_SERVER['REQUEST_URI'] == $page;
}
?>

<style>
.active_page {
    font-weight: bold;
}
</style>

<a class="<?php echo is_active('/biografia.php') ? 'active_page' : '' ?>" href="biografia.php">quien es</a>

答案 1 :(得分:1)

根据PHP Manual,$ _SERVER ['REQUEST_URI']返回:

  

为了访问此页面而给出的URI;例如,'/ index.html'。

因此,对于每个菜单项,您都需要检查$ _SERVER ['REQUEST_URI']是否与您的href字符串匹配。

<li id="nav-quien"><a href="biografia.php"
<?php
    if($_SERVER['REQUEST_URI'] == "/biografia.php")
    {
        echo ' class="active" ';
    }
?>
>quien es</a>

答案 2 :(得分:1)

<?php
    function theUrl($link) {
        $uri = $_SERVER['REQUEST_URI'];
        if($link==$uri) {
            return 'class="active"';
        }
    }
?>

HTML

    <ul>
        <li><a href="" <?php echo theUrl('/index.php')?>>Home</a></li>
        <li><a href="" <?php echo theUrl('/about.php')?>>About</a></li>
        <li><a href="" <?php echo theUrl('/work.php')?>>Work</a></li>
        <li><a href="" <?php echo theUrl('/contact.php')?>>Contact</a></li>
    </ul>

这是我在我的网站上使用的脚本的修改版本。唯一的区别(使用我的网站代码),我的目标是第一个子目录,而不是uri,它允许我在其中包含无限的页面/内容,并保持正确的主导航链接突出显示。 (即www.mysite.com/work/

<a href="/work" <?php echo theUrl('work')?>>Work</a>
(you can't use URI for this technique)