0

我的菜单栏有这个 div,我想要的是:

<div class="menu_nav" style="float:left; margin-bottom: 0px; padding:0px; font-family:verdana; font-size:16px;width: 100%; background-color: rgb(37,198,255);">
        <ul>
          <li> 
            <div class="menu1a">
              <a class="menu3a" href="<?=$HOME_DIR?>/index.php">
                 <span class="menu2a">Home</span>
              </a>
            </div>
      </li>
      <li>
        <div class="menu1">
          <a class="menu3" href="<?=$PUBLIC_DIR?>/about.php">
             <span class="menu2">About</span>
          </a>
        </div>
      </li>
      <li>
        <div class="menu1">
          <a class="menu3" href="<?=$PUBLIC_DIR?>/myaccount.php">
             <span class="menu2">MyAccount</span>
          </a>
        </div>
      </li>         



          <li style="color:black;font-family:verdana;font-size:13px;float:right;padding-top:5px;">
               <?php
               if(isset($_SESSION['user']) && $_SESSION['user']!="")
                  {
                     echo "<div style='float:left;'>Hello, ".$_SESSION['name']."</div>  <div id='logout' style='float:left;margin-left:20px;' > 
                     Log Out</div>";
                   } 
               ?>
           </li>   
        </ul>
      </div>

我想根据我们在 url 中的类别更改菜单按钮的类别:

我尝试如下:

<?php
$url=$_SERVER['REQUEST_URI'];
echo "$url";
if($url=="/signed/public/about.php")
{

}
else if($url="/signed/public/myaccount.php"){

}
else
?>

但我不知道如何更改它们的类,即,如果我在 about.php 页面中,应该突出显示 about 按钮,即,当我在在 myaccount.php 这个按钮应该得到这些类。否则应该突出显示主页按钮...

请指导我尽快为此编写php代码...在此先感谢...

4

3 回答 3

3

首先,为所选项目创建 CSS:

.selected{background:orange;}

然后创建一个简单的 PHP 函数来突出显示:

function currentNav($url){
 if($_SERVER['REQUEST_URI']==$url){
  return 'selected';
 }
}

将该函数放在每个<li>

  <li>
    <div class="menu1">
      <a class="menu3" href="<?=$PUBLIC_DIR?>/myaccount.php">
         <span class="menu2 <?=currentNav('/signed/public/about.php')?>">MyAccount</span>
      </a>
    </div>
  </li> 

你可以修改它。但你明白了。


更新:要使用您现有的做事方式......

首先创建一个url数组:

 <?php
 $urls=array(
   'home'    => '/signed/public/index.php',
   'about'   => '/signed/public/about.php',
   'account' => '/signed/public/myaccount.php'
 );

然后创建您当前的导航功能:

<?php
function cn($url){
 global $urls;
  return ($_SERVER['REQUEST_URI']==$urls[$url])?'a':'';
}
?>

在每个列表中:

  <li>
    <div class="menu1<?=cn('about')?>">
      <a class="menu3<?=cn('about')?>" href="<?=$PUBLIC_DIR?>/myaccount.php">
         <span class="menu2<?=cn('about')?>">MyAccount</span>
      </a>
    </div>
  </li> 

所以你的整个清单是:

    <ul>
      <li> 
        <div class="menu1<?=cn('home')?>">
          <a class="menu3<?=cn('home')?>" href="<?=$HOME_DIR?>/index.php">
             <span class="menu2<?=cn('home')?>">Home</span>
          </a>
        </div>
  </li>
  <li>
    <div class="menu1<?=cn('about')?>">
      <a class="menu3<?=cn('about')?>" href="<?=$PUBLIC_DIR?>/about.php">
         <span class="menu2<?=cn('about')?>">About</span>
      </a>
    </div>
  </li>
  <li>
    <div class="menu1<?=cn('account')?>">
      <a class="menu3<?=cn('account')?>" href="<?=$PUBLIC_DIR?>/myaccount.php">
         <span class="menu2<?=cn('account')?>">MyAccount</span>
      </a>
    </div>
  </li> 
于 2012-07-21T08:35:56.597 回答
0

创建您网站包含的所有页面的数组。例如:

$all_urls = array('home.php', 'about.php', 'contact.php');

然后使用您的$url变量,您可以使用in_array()函数来检查数组中是否$url存在。$all_urls

  <div <?php if(in_array($url, $all_urls)) { echo 'class="menu1a"'; } else {echo 'class="menu1"'; } ?>>
              <a <?php if(in_array($url, $all_urls)) { echo 'class="menu3a"'; } else {echo 'class="menu3"'; } ?> href="<?=$HOME_DIR?>/index.php">
                 <span <?php if(in_array($url, $all_urls)) { echo 'class="menu2a"'; } else {echo 'class="menu2"'; } ?>>Home</span>
              </a>
            </div> 
于 2012-07-21T08:35:29.170 回答
0

做这样的事情的最好方法是使用像 PHP TAL ( http://phptal.org/ )这样的模板引擎

这应该可以帮助您入门,但是我手头没有测试服务器,因此可能仍然存在一些错误:

PHP:

 class Menu
    { 
      public $name;
      public $isActive;
      public $url;
      __construct($name, $url){
        $this->name = $name;
        $this->url = $url;
        $this->isActive = $url == $_SERVER['REQUEST_URI'];
      }
    }

    $template = new PHPTAL('my_template_file.xhtml');
    $template->menuItems = array(
      new Menu('foo', '/foo.html'),
      new Menu('bar', '/bar.html')
    );
    if($user){
      $template->user = $user; 
    }
    echo $template->execute();

模板:

<div class="menu_nav">
  <ul>
    <tal:block tal:repeat="menu menuItems">
    <li tal:condition="menu/isActive" class="menu active">
      <a tal:content="menu/name" tal:attribute="href menu/url"></a>
    </li>
    <li tal:condition="not: menu/isActive" class="menu">
      <a tal:content="menu/name" tal:attribute="href menu/url"></a>
    </li>
    </tal:block>
    <li tal:condition="exists: user"> Hello, ${user}</li>
  </ul>
</div>
于 2012-07-21T08:58:49.087 回答