Как мне улучшить этот код меню - PullRequest
0 голосов
/ 31 июля 2009

Я использую функцию, чтобы выкладывать для меня главное и дополнительное меню. В основном я передаю ему идентификатор страницы, и он дает мне меню с пунктом меню, правильно выделенным с помощью 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;
}

1 Ответ

0 голосов
/ 31 июля 2009

Вы можете использовать массив, например так:

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

Затем обойдите его с помощью foreach, сравните ключи с переменной $ page. В HTML-код положить несколько троичных операторов:

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

Таким образом, вы можете использовать значения массива $ pages для текста ссылок.

Остальное вы узнаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...