ik was bezig met het gebruiken van de switch case structuur in mijn index.php. Nu heb ik een menu waar een menu knop van kleur moet veranderen. Wanneer bijvoorbeeld de contact pagina wordt weer gegeven moet de contact button duidelijk een andere kleur hebben zodat de gebruiker weet dat deze zich op de contact pagina bevind. Dit is met de switch case structuur in mijn ogen een probleempje.
Door deze structuur wordt alles in de index.php geladen.
Zoals hierboven te zien zijn moet "<li class="current">" verschuiven naar de pagina die ge-include wordt. Moet ik iets toe gaan voegen bij de switch-case structuur?
Yep, weggooien die switch! Dat is niet te onderhouden en levert alleen maar meer werk op.
<?php
$aPages = array('item1', 'item2', 'item3'); // kun je eenvoudig uitbreiden
Hey dat is nog makkelijker! Dan bouw je je menu dus gewoon op met een array?
Edit: De bovenstaande code is dus eigenlijk als ik het goed begrijp de oplossing op mijn vraag met in het menu als het ware een switch case methode voor de pagina's ingebouwd. Toch?
De code van Frank zorgt natuurlijk alleen voor het genereren van het menu. Het doet verder nog niets met $_GET['p'] om de juiste paginas te includen...
Hoe je dat op een efficiente manier kunt doen, kun je in dit script zien.
Maak van regel 5 uit Frank zijn voorbeeld dit:
<?php
if((!empty($_GET['p']) && in_array($_GET['p'], $aPages) && $_GET['p'] == $page) || (!isset($_GET['p']) && $page == 'home')) ? ' class="current"':'';
?>
Als er geen pagina opgegeven is wordt het menu element dat bij pagina 'home' hoort actief gemaakt.
Als de home pagina een statische pagina is kun je dat inderdaad op die manier oplossen. Als het een dynamische pagina is, zul je daar een include() uit moeten voeren.
In de home pagina zal de output dan echter wel in $aContent[] opgeslagen moeten worden om het te laten werken.