2014-09-25 72 views
3

我有单独的文件(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

您可以使用'__FILE__'获取当前文件并检查它是否与导航中的文件相同。 – Jerodev 2014-09-25 08:17:47

回答

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变量,它看起来是多余的,但它是欺骗定界符字符串的方法返回函数值而不是仅仅打印它的名字,但是这实际上是在另一个范围内。

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

这会将class'selected'追加到激活的链接。