我有单独的文件(LIB.php)和定义的函数。 在每个页面中调用此函数。 我想让它变得动态,当我导航到其中一个页面时,页面在
中变为活动状态function get_Navigation(){
$navigation = <<<END
<div class="menubar">
<ul>
<li><a href="index.php"><i class="icon-home icon-large"></i><main>Home</main></a></li>
<li><a href="admin.php"><i class="icon-star icon-large"></i><main>Admin</main></a></li>
<li><a href="cart.php"><i class="icon-money icon-large"></i><main>Cart</main></a></li>
</ul>
</div>
END;
echo $navigation;
}
答案 0 :(得分:1)
使用basename($_SERVER['PHP_SELF']);
获取文件名,这将返回index.php
之类的内容,然后,您可以向行或链接添加类以修改其外观。因此,如果您想继续使用heredoc string而不是连接多个字符串,那么您的代码可能看起来像这样:
$isactive = "isactive";
function isactive($filename){
$currentfile = basename($_SERVER['PHP_SELF']);
if($currentfile == $filename) return "active";
}
$navigation = <<<END
<div class="menubar">
<ul>
<li class='{$isactive("prog.php")}'><a href="index.php"><i class="icon-home icon-large"></i><main>Home</main></a></li>
<li class='{$isactive("admin.php")}'><a href="admin.php"><i class="icon-star icon-large"></i><main>Admin</main></a></li>
<li class='{$isactive("cart.php")}'><a href="cart.php"><i class="icon-money icon-large"></i><main>Cart</main></a></li>
</ul>
</div>
END;
echo $navigation;
请注意,我正在创建一个$isactive
变量,这似乎是多余的,但它是一种欺骗heredoc字符串以返回函数值而不是仅仅打印其名称的方法,但这实际上是在另一个范围内。
答案 1 :(得分:0)
这取决于您是否使用任何框架并重写URL。如果我们假设它是关于普通的旧PHP但没有重写,你可以做类似的事情:
function get_Navigation(){
$current_filename = basename(__FILE__, ".php");
$menuItems = array('index' => false, 'admin' => false, 'cart' => false);
switch($current_filename) {
case 'index': $menuItems['index'] = true; break;
case 'admin': $menuItems['admin'] = true; break;
case 'cart': $menuItems['cart'] = true; break;
}
$navigation = '
<div class="menubar">
<ul>
<li><a href="index.php" class="' . ($menuItems['index'] ? 'selected' : '') . '"><i class="icon-home icon-large"></i><main>Home</main></a></li>
<li><a href="admin.php" class="' . ($menuItems['admin'] ? 'selected' : '') . '"><i class="icon-star icon-large"></i><main>Admin</main></a></li>
<li><a href="cart.php" class="' . ($menuItems['cart'] ? 'selected' : '') . '"><i class="icon-money icon-large"></i><main>Cart</main></a></li>
</ul>
</div>
';
echo $navigation;
}
我假设索引页面名为index.php,管理页面 - admin.php和购物车页面 - cart.php
这会将“已选择”类附加到活动链接。