2009-07-31 7 views
0

J'utilise une fonction pour cracher mon principal et sous-menu pour moi. Fondamentalement, je lui donne un identifiant de page et il me donne le menu avec l'élément de menu correctement mis en évidence par CSS.Comment améliorer ce code de menu

Ce que je demande est: Comment puis-je améliorer ce code (et d'autres comme celui que j'ai autour)? Réduire le nombre de lignes de code et diminuer la répétition du code? Je sais qu'une instruction Switch est plus rapide que les anciennes instructions conditionnelles if/else, mais je ne suis pas sûr de savoir comment mettre en évidence mon élément de menu HTML si j'utilise un commutateur.

La classe css (class = "sub_active_link") est responsable de la mise en évidence de l'élément de menu en cours. Un lien non mis en évidence est (class = "sub_link").

Je n'ai pas besoin de réécrire le code, juste le concept ou la meilleure pratique pour une situation comme celle-ci.

Toute idée ou direction est grandement appréciée et merci de m'avoir aidé à devenir un programmeur plus complet.

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

Cela me fait mal. : - \ – hobodave

+0

Homme, je parie que votre designer vous adore! – UpTheCreek

Répondre

0

Vous pouvez utiliser un tableau, comme ceci:

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

ensuite marcher dessus avec foreach, comparez les clés à la variable $ page. Dans le code html mettre certains opérateurs ternaires:

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

De cette façon, vous pouvez utiliser les valeurs du tableau de pages $ pour le texte des liens.

Vous trouverez le reste.

Questions connexes