Vielen Dank, das hat mir sehr weitergeholfen, auch wenn es über die Klasse active
nicht funktioniert hatte. Um den Hauptmenüeintrag gleichzeitig mit dem zugehörigen Submenüeintrag zu highlighten, habe ich ausgenutzt, dass buttonToPage()
dem aktiven Button die CSS-Klasse currentPage
zuweist. Da es vielleicht auch für andere interessant ist, ich habe es in meinem Code für zwei Navigationsleisten (im CSS dann mainmenu
und submenu
) so gelöst
function navigation($currentPage) {
$navigationItems = getNavigationItems();
replace('%menucolor%',$navigationItems[$currentPage]['color'],'html');
$output = '<nav><ul class="mainmenu">';
// Hauptnavigation
foreach ($navigationItems as $mainKey => $mainItem) {
$isActiveMain = ($currentPage === $mainKey) ? 'currentPage' : '';
$output .= '<li><div class="s2flex navButtons" style="flex-wrap: wrap;">'.buttonToPage($mainItem['link'],$mainItem['label'], NULL, $isActiveMain).'</div></li>';
}
$output .= '</ul><ul class="submenu">';
foreach ($navigationItems[$currentPage]['sub'] as $subKey => $subItem) {
// buttonToPage setzt Seite automatisch auf current, wenn sie angeklickt ist
$output .= '<li><div class="s2flex navButtons" style="flex-wrap: wrap;">'.buttonToPage($subItem['link'],$subItem['label'], NULL, NULL).'</div></li>';
}
$output .= '</ul></nav>';
html($output);
}
wobei meine Funktion für die Navigationseinträge von Haupt- und Subnavigation zum Beispiel so
function getNavigationItems() {
return [
'method' => [
'label' => 'Methoden',
'link' => 'method',
'color' => '#979796',
'sub' => [
'method1' => ['label' => 'Erste Methode', 'link' => 'method1'],
'method2' => ['label' => 'Zweite Methode', 'link' => 'method2'],
'method3' => ['label' => 'Dritte Methode', 'link' => 'method3']
]
], //etc
];
}
aussieht. Der Aufruf im Fragebogen auf jeder Seite ist dann (je nach Kennug der Seite)
navigation('method');
Jeder Haupteintrag bekommt bei mir noch eine Farbe zugewiesen für das Styling und im CSS könnte es beispielsweise so genutzt werden
.mainmenu .buttonToPage.currentPage {
color: %menucolor%;
font-weight: bold;
height: 80px;
}