Как правильно создать меню навигации, которое выделяет текущую страницу

Я установил меню для довольно простого сайта на основе icant.co.uk . Это довольно просто, возможно, 5 страниц. Небольшой сайт – это в основном браузер mysql для нескольких таблиц с использованием MATE . Theres файл common.php, который содержит HTML-код заголовка и нижнего колонтитула, поэтому я помещаю код ниже.

В приведенном ниже коде показана текущая страница в меню. Его уродливый, и я уверен, что должен быть лучший способ сделать это.

Любая помощь приветствуется, спасибо!

heres мой код

<?php $currentFile = Explode('/', $_SERVER["PHP_SELF"]); $currentFile = $currentFile[count($currentFile) - 1]; if ($currentFile == "orders.php"){ echo '<li id="active"><a href="orders.php" id="current">Orders</a></li>'; } else{ echo '<li><a href="orders.php">Orders</a></li>'; } if ($currentFile == "customers.php"){ echo '<li id="active"><a href="customers.php" id="current">Customer List</a></li>'; } else{ echo '<li><a href="customers.php">Customer List</a></li>'; } if ($currentFile == "order_details.php"){ echo '<li id="active"><a href="order_details.php" id="current">Order Details</a></li>'; } else{ echo '<li><a href="order_details.php">Order Details</a></li>'; } ?> 

ОБНОВЛЕНИЕ Для любопытных ниже приведен рабочий код!

 <?php $currentFile = Explode('/', $_SERVER["PHP_SELF"]); $currentFile = $currentFile[count($currentFile) - 1]; // easier to manage in case you want more pages later $pages = array( array("file" => "orders.php", "title" => "Orders"), array("file" => "order_details.php", "title" => "Order Details"), array("file" => "customers.php", "title" => "Customer List") ); $menuOutput = '<ul>'; foreach ($pages as $page) { $activeAppend = ($page['file'] == $currentFile) ? ' id="active"' : ""; $currentAppend = ($page['file'] == $currentFile) ? ' id="current' : ""; $menuOutput .= '<li' . $activeAppend . '>' . '<a href="' . $page['file'] . '"' . $currentAppend . '">' . $page['title'] .'</a>' . '</li>'; } $menuOutput .= '</ul>'; echo $menuOutput; 

?>

Solutions Collecting From Web of "Как правильно создать меню навигации, которое выделяет текущую страницу"

Не уверен, что это то, что вы имели в виду, но таким образом вы избавитесь от этого уродливого if-else:

 $currentFile = Explode('/', $_SERVER["PHP_SELF"]); $currentFile = $currentFile[count($currentFile) - 1]; // easier to manage in case you want more pages later $pages = array( array("file" => "orders.php", "title" => "Orders"), array("file" => "customers.php", "title" => "Customer List") ); $menuOutput = '<ul>'; foreach ($pages as $page) { $activeAppend = ($page['file'] == $currentFile) ? ' id="active"' : ""; $menuOutput .= '<li' . $activeAppend . '>' . '<a href="' . $page['file'] . '">' . $page['title'] .'</a>' . '</li>'; } $menuOutput .= '</ul>'; echo $menuOutput; 

То, что я обычно делаю, это что-то вроде (для всех элементов …):

 <li class="<?php if (condition) echo 'selected'; ?>">content part, links, etc.</li> 

Более краткий способ сделать это (если вы включили короткие теги):

 <li class="<?= $test=="your_page_name" ? 'selected' : 'not_selected'?>">Link Name</li> 

Он выполняет ту же функцию, что и первый ответ, только более кратко.

Вот фрагмент моего проекта. Это старый уродливый код и использует таблицы, но вы можете так же легко использовать идею для divs и более чистой разметки. Хитрость заключается в том, чтобы сделать навигацию другим классом, если текущая страница соответствует его URL.

  <td><a class='LeftSubNavLink<?php if($_SERVER["SCRIPT_NAME"] == "/admin/billing_home.php"){print("Current");}?>' href='<?php print(MAIN_URL); ?>admin/billing_home.php'>Billing Home</a></td></tr> <td><a class='LeftSubNavLink<?php if($_SERVER["SCRIPT_NAME"] == "/admin/billing_schedules.php"){print("Current");}?>' href='<?php print(MAIN_URL); ?>admin/billing_schedules.php'>Billing Schedules</a></td></tr> <td><a class='LeftSubNavLink<?php if($_SERVER["SCRIPT_NAME"] == "/admin/billing_outstanding.php"){print("Current");}?>' href='<?php print(MAIN_URL); ?>admin/billing_outstanding.php'>Outstanding</a></td></tr> <td><a class='LeftSubNavLink<?php if($_SERVER["SCRIPT_NAME"] == "/admin/billing_list.php"){print("Current");}?>' href='<?php print(MAIN_URL); ?>admin/billing_list.php'>List All</a></td></tr> <td><a class='LeftSubNavLink<?php if($_SERVER["SCRIPT_NAME"] == "/admin/billing_history.php"){print("Current");}?>' href='<?php print(MAIN_URL); ?>admin/billing_history.php'>Billing History</a></td></tr> <td><a class='LeftSubNavLink<?php if($_SERVER["SCRIPT_NAME"] == "/admin/billing_statement_history.php"){print("Current");}?>' href='<?php print(MAIN_URL); ?>admin/billing_statement_history.php'>Statement History</a></td></tr>