2009-07-31 90 views
0

我正在使用一個函數來爲我吐出主菜單和子菜單。基本上我給它一個頁面ID,它給了我菜單,菜單項通過CSS正確突出顯示。我該如何改進這個菜單代碼

我問的是:我該如何改進這些代碼(以及其他類似的代碼)?降低代碼行數並減少代碼重複次數?我知道一個Switch語句比舊的if/else條件語句更快,但我不確定如果使用開關如何突出顯示我的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; 
} 
+0

這讓我很痛苦。 : - \ – hobodave 2009-07-31 06:18:56

回答

0

你可以使用一個數組,像這樣:

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

然後走過去它用foreach,按鍵比較到$ page變量。 在HTML代碼中放一些三元運營商:

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

這種方式,你可以使用$頁陣列的鏈接文本的值。

你會發現其餘的。