2009-07-31 12 views
0

私のメインメニューとサブメニューを吐き出す機能を使用しています。基本的に私はそれにページIDを与え、メニュー項目を適切に強調表示してメニューを表示します。このメニューコードを改善するには

私が求めているのは、このコード(および私が敷設しているものなど)を改善するにはどうすればよいですか?コード行の量を減らし、コードの繰り返しを減らす? 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

+0

男、あなたのデザイナーはただあなたを愛してると思うよ! – UpTheCreek

答えて

0

あなたはこのように、配列を使用することができます。

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

次に$ページ変数にキーを比較し、foreachのとその上を歩きます。

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

この方法で使用すると、リンクテキストの$ページ配列の値を使用できます。HTMLコード内 は、いくつかの三項演算子を置きます。

あなたは残りの部分を見つけるでしょう。