【问题标题】:How do I improve this Menu code如何改进此菜单代码
【发布时间】:2009-07-31 14:32:30
【问题描述】:

我正在使用一个函数来为我吐出我的主菜单和子菜单。基本上我给它提供了一个页面 ID,它给了我一个菜单,其中的菜单项通过 CSS 正确突出显示。

我要问的是:我如何改进这段代码(以及其他类似的代码)?减少代码行数并减少代码重复?我知道 Switch 语句比旧的 if/else 条件语句更快,但我不确定如果我使用 switch,如何突出显示我的 HTML 菜单项。

css 类 (class="sub_active_link") 负责高亮当前菜单项。未突出显示的链接是 (class="sub_link")。

我不需要重写代码,只需要针对这种情况的概念或最佳实践。

非常感谢任何想法或方向,感谢您帮助我成为更完整的程序员。

function top_menu_logged_in_sub_menu($user, $page ='main')
{
    $sub_menu_html = '<div id="sub_nav"><ul>';
    if($page == 'main'){
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_Hi_L.gif" alt=""/></li>
                        <li class="sub_link_active"><span><a href="main.php">My Admin</a></span></li>
                        <li><img src="images/nav_2_lev_tab_Hi_R.gif" alt="" /></li>
                    ';
    }
    else{
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_L.gif" width="8" height="26" /></li>
                        <li class="sub_link"><span><a href="main.php">My Admin</a></span></li>
                        <li ><img src="images/nav_2_lev_tab_R.gif" alt="" /></li>
                    ';
    }
    if($page == 'myProjects'){
        $sub_menu_html.= '
                        <li ><img src="images/nav_2_lev_tab_Hi_L.gif" alt="" /></li>
                        <li class="sub_link_active"><span><a href="myProjects.php">My Projects</a></span></li>
                        <li><img src="images/nav_2_lev_tab_Hi_R.gif" alt="" /></li>
                    ';
    }
    else{
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_L.gif" alt="" /></li>
                        <li class="sub_link"><span><a href="myProjects.php">My Projects</a></span></li>
                        <li><img src="images/nav_2_lev_tab_R.gif" alt="" /></li>
                    ';
    }
    if($page == 'insertProject'){
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_Hi_L.gif" alt="" /></li>
                        <li class="sub_link_active" ><span><a href="insertProject.php">Post a Project</a></span></li>
                        <li><img src="images/nav_2_lev_tab_Hi_R.gif" alt="" /></li>
                    ';
    }
    else{
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_L.gif" /></li>
                        <li class="sub_link"><span><a href="insertProject.php">Post a Project</a></span></li>
                        <li><img src="images/nav_2_lev_tab_R.gif" /></li>
                    ';
    }
    if($page == 'myAccount'){
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_Hi_L.gif" /></li>
                        <li class="sub_link_active" ><span><a href="myAccount.php">My Account</a></span></li>
                        <li><img src="images/nav_2_lev_tab_Hi_R.gif" /></li>
                    ';
    }
    else{
        $sub_menu_html.= '
                        <li><img src="images/nav_2_lev_tab_L.gif" /></li>
                        <li class="sub_link"><span><a href="myAccount.php">My Account</a></span></li>
                        <li><img src="images/nav_2_lev_tab_R.gif" /></li>
                    ';
    }

    $sub_menu_html.= '
            </ul>
                <div class="user_id">
                    Welcome, '.$user.'! &nbsp;&nbsp;<span class="sign_out"><a href="http://www.example.org/login.php?action=logout">Sign Out</a></span>&nbsp;&nbsp;
                </div>
        </div>
    ';
    return $sub_menu_html;
}

【问题讨论】:

  • 伙计,我敢打赌你的设计师一定会喜欢你的!

标签: php html


【解决方案1】:

你可以像这样使用数组:

$pages=array('myAccount'=>'My Account', ...);

然后用 foreach 遍历它,比较 $page 变量的键。 在 html 代码中放置一些三元运算符:

'<li><img src="images/nav_2_lev_tab_'.($page==$key?'Hi_':'').'L.gif" /></li>'

这样您就可以将 $pages 数组的值用于链接文本。

你会发现剩下的。

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2021-05-14
    相关资源
    最近更新 更多