导航列表中的活动链接

时间:2014-09-25 08:15:19

标签: javascript php html5

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

2 个答案:

答案 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

这会将“已选择”类附加到活动链接。