Когда я могу использовать PHP для проекта (который не работает на CMS), я обычно использую PHP-массив для создания меню. Добавлять, перемещать или удалять страницы из массива довольно просто, и, позволяя PHP выводить это как реальное меню, вам не нужно переписывать один и тот же код снова и снова.
Чтобы указать, какую страницу следует считать активной, вы можете использовать код, подобный следующему:
$currentPage = "b.php";
Обратите внимание, что я специально использую полное имя файла. Я объясню вкратце, почему.
Поскольку для каждого элемента меню требуется как минимум две переменные (name, url), я использую массив внутри массива меню для каждой записи. Пример:
$menu = array(array("a.php", "A Title"), array("b.php", "B Title"), array("c.php", "C Title"));
Теперь, чтобы позволить PHP работать магически, я использую цикл foreach, который проходит через каждый элемент и отображает его так, как я хочу.
foreach($menu as $num => $options){
$s = ((isset($activePage) && $options[0] == $activePage) OR ($options[0] == basename($_SERVER['PHP_SELF'])) ? " class=\"active\"" : "";
echo "\n\t<li{$s}><a href=\"" . $options[0] . "\">" . $options[1] . "</a></li>";
}
Вы можете расширить эту концепцию, включив в нее цели, теги заголовков и т. Д.
Прелесть этого пути в том, что вам не нужно много писать для каждого проекта. Вы можете просто скопировать / вставить все это и изменить маленькие биты в массиве $ menu, и при необходимости (например, для элементов подменю) указать $ currentPage. Если $ currentPage не указан, он обратится к проверке текущей страницы (через $ _SERVER ['PHP_SELF']) и основывает на этом активное состояние.
Надеюсь, я объяснил это достаточно хорошо, и что это достаточно хорошо для вас, чтобы использовать!
(Небольшой отказ от ответственности, я просто проснулся и написал этот код с нуля. Хотя концепция работает - я использую ее годами - возможно, я сделал опечатку здесь и там. Извините, если это так!)