根据浏览器中打开的页面设置类?

时间:2011-08-23 03:45:30

标签: php html

我不确定这是否可行,但我会尽力解释我的困境。

我正在处理的网站有一个标题,其中包含指向重要网页的链接。标题html代码驻留在一个文件中,其中包含(php include)在所有其他页面中。

此header.html包含以下代码:

<li class="m1"><a href="home.php" class="active">Home</a></li>
<li class="m2"><a href="faq.php">FAQs</a></li>
<li class="m3"><a href="">Status</a></li>
<li class="m4"><a href="">Contact Us</a></li>

当前打开的页面意味着将其类设置为“活动”,但这不起作用,因为我的标题代码只驻留在一个文件中。

有没有办法,使用php或其他东西,我可以设置适当的链接到“活动”类,具体取决于打开哪个页面?

所以,如果我点击FAQ,我希望代码看起来像这样:

<li class="m1"><a href="home.php">Home</a></li>
<li class="m2"><a href="faq.php" class="active">FAQs</a></li>
<li class="m3"><a href="">Status</a></li>
<li class="m4"><a href="">Contact Us</a></li>

3 个答案:

答案 0 :(得分:1)

是的,您可以使用$_SERVER['PHP_SELF']轻松查看您所在的页面。

解决这个问题的好方法是将链接/标题存储在数组中,然后循环遍历它们并在活动类等于PHP_SELF时回显它:

<?php
$links = array('Home' => 'home.php', 'FAQs' => 'faq.php', 'Status' => '', 'Contact Us' => '');
foreach ($links as $text => $page)
{
 echo '<li><a href="'. $page .'"';
 if ($_SERVER['PHP_SELF'] == $page)
 {
  echo ' class="active"';
 }
 echo '>'. $text .'<a></li>';
?>

答案 1 :(得分:1)

这是您可以采取的另一条路线:

<?php
function getCurrPage() {
    $org_page = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);
    $stripped_page = substr($org_page, 0, -4); 
    return $stripped_page;
}
$curPage = getCurrPage();
$actPage = array();
$actPage[$curPage] = ' class="active"';
?>
<li class="m1"><a href="home.php"<?=$actPage['home'];?>>Home</a></li>
<li class="m2"><a href="faq.php"<?=$actPage['faq'];?>>FAQs</a></li>
<li class="m3"><a href=""<?=$actPage['status'];?>>Status</a></li>
<li class="m4"><a href=""<?=$actPage['contact'];?>>Contact Us</a></li>

答案 2 :(得分:1)

您可以使用JQuery(JavaScript)动态执行此操作:

$(document).ready(function() {
    //Add the current class to all links pointing to the current page
    search = window.location.search;
    $("*").find("a[href='" + search + "']").each(function(){
        $(this).parent('li').addClass("active");
        //add your own logic here if needed
    })
})

哪种方法效果很好。

另一种方法是使用$_SERVER['PHP_SELF']__FILE__

<li class="m1"><a href="home.php"<?php if (basename($_SERVER['PHP_SELF']) == 'home.php'): ?> class="active"<?php endif; ?>>Home</a></li>
<li class="m1"><a href="faq.php"<?php if (basename($_SERVER['PHP_SELF']) == 'faq.php'): ?> class="active"<?php endif; ?>>FAQ</a></li>
<li class="m1"><a href="status.php"<?php if (basename($_SERVER['PHP_SELF']) == 'status.php'): ?> class="active"<?php endif; ?>>Statys</a></li>
<li class="m1"><a href="contact_us.php"<?php if (basename($_SERVER['PHP_SELF']) == 'contact_us.php'): ?> class="active"<?php endif; ?>>Contact Us</a></li>