PHP动态导航菜单主动样式

时间:2012-02-05 00:44:23

标签: php dynamic menu navigation styling

我想在PHP中创建一个动态菜单,并根据它们在菜单上的页面将具有不同的样式。我有这个,但这不是我想要的:(

这是我拥有的数组,包含数据库中的信息

Array(

    [Home] => Array
        (
            [url] => Home
            [name] => Home
            [is_home] => 1
        )

    [About] => Array
        (
            [url] => About
            [name] => About
            [is_home] => 0
        )

    [Contact] => Array
        (
            [url] => Contact.php
            [name] => Contact
            [is_home] => 0
        )

)

这就是我现在所拥有的,

    if(isset($_GET["p"])) {
     if(in_array($page_name, $navigation[$page_name])) {
          $navigation[$page_name]["name"] = "<span>{$navigation[$page_name]["name"]}</span>";
     }
}
foreach ($navigation as $nav) {
     echo "<li><a href=\"" . strtolower($nav["url"]) . "\">{$nav["name"]}</a></li>";
}

这是page_name变量的外观

$page_name = current(explode(".", ucfirst(strtolower($_GET["p"]))));

正如您所看到的,这会在导航菜单名称中插入span标签,这样就可以了,但这不是我想要的。我想添加class =“active”作为当前页面的列表项。我只是不知道该怎么做

我希望你理解我的意思,并对在这里粘贴代码时发生的任何杂乱缩进感到抱歉。

//修改

获取和数组代码

$mysql->query("SELECT `page_name`, `is_home` FROM `pages` ORDER BY `order` ASC");

        $navigation_items = array();
        while ($mysql->fetch($row)){
            $navigation_items[] = array(
                "url"   => $row["page_name"],
                "name"  => current(explode(".", $row["page_name"])),
                "is_home"  => $row["is_home"]
            );
        }

        return $navigation_items;

1 个答案:

答案 0 :(得分:0)

首先,您提供的数组已重新格式化,这意味着您已将索引更改为不必要的页面名称。 这就是你如何实现你想要的目标:

<?php
$menu = $Db->fetchAll("SELECT * FROM `menu`"); //or whatever method you're using to get data from the database.
$current = null;
if(isset($_GET['p'])) {
  $current = current(explode(".", ucfirst(strtolower($_GET["p"]))));
}
$navigation = '';
for($i=0;$i<count($menu);$i++) {
  $url = ucfirst(strtolower($menu[$i]['url']));
  if($current == $url)
    $class = ' class="active"';
  else
    $class = '';
  $name = '<span'.$class.'>'.$menu[$i]['name'].'</span>';
  $navigation .= "<li><a href='{$url}'>{$name}</a></li>";
}
?>