我有一个小问题。我从this等答案中知道如何在导航栏上显示active
链接。
但是,如果链接后面有GET变量,这不起作用。因此,如果我加载<li>
,class = "active"
获得daily.php
,如果我加载daily.php?project=4
,则无法获得该类。
我现在正在使用导航栏并激活某个链接的代码是:
<?php
function echoActiveClassIfRequestMatches($requestUri)
{
$current_file_name = basename($_SERVER['REQUEST_URI'], ".php");
if ($current_file_name == $requestUri)
echo 'class="active"';
}
?>
<div id="menu">
<ul>
<li <?php echoActiveClassIfRequestMatches("daily") ?>><a href="daily.php">Daily</a></li>
<li <?php echoActiveClassIfRequestMatches("weekly") ?>><a href="weekly.php">Weekly</a></li>
<li <?php echoActiveClassIfRequestMatches("monthly") ?>><a href="monthly.php">Monthly</a></li>
</ul></div>
正如我所说,如果不是daily.php
我加载daily.php?project=4
,这不起作用。
欢迎所有帮助,如果您需要更多代码,请直接询问!
非常感谢。
答案 0 :(得分:3)
你可以使用strpos而不是&#34; ==&#34;。它将检查URL是否包含您想要的地址。 或者您可以使用explode
拆分URL$current_url = explode("?", $_SERVER['REQUEST_URI']);
echo $current_url[0] ;
答案 1 :(得分:1)
这是一些修改过的功能
<?php
function echoActiveClassIfRequestMatches($requestUri)
{
$current_file_name = basename($_SERVER['REQUEST_URI'], ".php");
if (strpos($current_file_name,$requestUri)!==false)
echo 'class="active"';
}
?>