Menu bij index.php?p=blabla
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.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<li class="current"><a href="index.php?p=item1"><b>Item1</b></a></li>
<li><a href="index.php?p=Item2"><b>Item2</b></a></li>
<li><a href="index.php?p=Item3"><b>Item3</b></a></li>
<li><a href="index.php?p=Item4"><b>Item4</b></a></li>
<li><a href="index.php?p=Item5"><b>Item5</b></a></li>
<li><a href="index.php?p=Item6"><b>Item6</b></a></li>
<li><a href="index.php?p=Item2"><b>Item2</b></a></li>
<li><a href="index.php?p=Item3"><b>Item3</b></a></li>
<li><a href="index.php?p=Item4"><b>Item4</b></a></li>
<li><a href="index.php?p=Item5"><b>Item5</b></a></li>
<li><a href="index.php?p=Item6"><b>Item6</b></a></li>
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?
Gewijzigd op 01/01/1970 01:00:00 door Tom
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<li <?php if(isset($_GET['p']) && $_GET['p'] == 'item1') echo 'class="current"'; ?>><a href="index.php?p=item1"><b>Item1</b></a></li>
<li <?php if(isset($_GET['p']) && $_GET['p'] == 'item2') echo 'class="current"'; ?>><a href="index.php?p=Item2"><b>Item2</b></a></li>
<li><a href="index.php?p=Item3"><b>Item3</b></a></li>
<li><a href="index.php?p=Item4"><b>Item4</b></a></li>
<li><a href="index.php?p=Item5"><b>Item5</b></a></li>
<li><a href="index.php?p=Item6"><b>Item6</b></a></li>
<li <?php if(isset($_GET['p']) && $_GET['p'] == 'item2') echo 'class="current"'; ?>><a href="index.php?p=Item2"><b>Item2</b></a></li>
<li><a href="index.php?p=Item3"><b>Item3</b></a></li>
<li><a href="index.php?p=Item4"><b>Item4</b></a></li>
<li><a href="index.php?p=Item5"><b>Item5</b></a></li>
<li><a href="index.php?p=Item6"><b>Item6</b></a></li>
Ik heb de eerste 2 voorgedaan, de rest mag je zelf doen ;-)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$aPages = array('item1', 'item2', 'item3'); // kun je eenvoudig uitbreiden
foreach($aPages as $page){
$current = (!empty($_GET['p']) && in_array($_GET['p'], $aPages) && $_GET['p'] == $page)? ' class="current"':'';
echo '<li'.$current.'><a href="index.php?p='.$page.'"><b>'.$page.'</b></a></li>'.PHP_EOL;
}
?>
$aPages = array('item1', 'item2', 'item3'); // kun je eenvoudig uitbreiden
foreach($aPages as $page){
$current = (!empty($_GET['p']) && in_array($_GET['p'], $aPages) && $_GET['p'] == $page)? ' class="current"':'';
echo '<li'.$current.'><a href="index.php?p='.$page.'"><b>'.$page.'</b></a></li>'.PHP_EOL;
}
?>
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?
Gewijzigd op 01/01/1970 01:00:00 door Tom
Inderdaad, wel zo eenvoudig.
euh als ik op home aankom zeg maar. Hoe kun je het dan mogelijk maken dat ook de home button al anders word? Dus eigenlijk de status "current" krijgt?
@ blanche, ja ik zag het al ja ;)
Gewijzigd op 01/01/1970 01:00:00 door Tom
Code (php)
Als er geen pagina opgegeven is wordt het menu element dat bij pagina 'home' hoort actief gemaakt.
deze pagina. Hierin wordt bij aanvang van het script de melding weegegeven: "Geen pagina opgegeven".
(regel 70 in dat script)
Ik zou dit uit willen breiden dat er dan de index pagina verschijnt. Aangezien ik vrij nieuw ben in php ;)
Is het mogelijk om het alsvolgt te doen? (regel 70 vervangen met iets in deze trend)
$aContent[] = file_get_contents("naam van de locatie van home")
Alleen zal er dan op "naam van de locatie van home" iets anders moeten komen... iemand die mij op weg kan helpen? ;)
nu nog een vraag over (regel 70 in dat script)
Ik zou dit uit willen breiden dat er dan de index pagina verschijnt. Aangezien ik vrij nieuw ben in php ;)
Is het mogelijk om het alsvolgt te doen? (regel 70 vervangen met iets in deze trend)
$aContent[] = file_get_contents("naam van de locatie van home")
Alleen zal er dan op "naam van de locatie van home" iets anders moeten komen... iemand die mij op weg kan helpen? ;)
In de home pagina zal de output dan echter wel in $aContent[] opgeslagen moeten worden om het te laten werken.
Gewijzigd op 01/01/1970 01:00:00 door Tom
HTML is per definitie statisch. Dus ga je voor de file_get_contents() oplossing.
ik heb nu het volgende php script gemaakt:
Code (php)
op regel 4 is te zien dat ik tot nu toe alleen .html bestanden kan includen.
Toch wil ik bovenaan in mijn code een soort configuratie uitvoeren. Daar moet in een array in te voeren zijn welke extensies er mogelijk zijn. Vervolgens wordt het script uitgevoerd, komt erachter dat er geen .html is en kijkt vervolgens of er WEL .php bestaat. Wanneer dit ook niet het geval is zal er verder worden gegaan.
Mijn configuratie tot nu toe:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// Definiëren van de directory waar de pagina's zich bevinden
$sDir = 'pages/';
$aTypes = array (
'.html',
'.php',
);
?>
// Definiëren van de directory waar de pagina's zich bevinden
$sDir = 'pages/';
$aTypes = array (
'.html',
'.php',
);
?>
Waarin "$aTypes" natuurlijk de array moet worden met mogelijke extensies.
Iemand een zetje?
Gewijzigd op 01/01/1970 01:00:00 door Tom
Thnx :)
Maar goed, mooi dat het gelukt is ;-)