我不确定这是否可行,但我会尽力解释我的困境。
我正在处理的网站有一个标题,其中包含指向重要网页的链接。标题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>
答案 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>