Załóżmy, że mamy taki sobie plik index.php:
<!-- górne menu -->
<ul id="top_menu"><li><a href="index.php?strona=1">Strona 1</a></li><li><a href="index.php?strona=2">Strona 2</a></li></ul>
<?php
if(isset($_GET['strona']) && $_GET['strona'] != '') { $strona = $_GET['strona'];
// w zależności od wartości zmiennej $strona wstawiamy (include) odpowiednią treść
switch($strona) {
case '1':
include '1.php'; // wstawiamy stronę 1, na której jest podmenu
break;
case '2':
include '2.php'; // i stronę 2, na której podmenu nie ma
break;
default:
include '1.php';
}
}
Plik 1.php wyglądałby natomiast tak:
<!-- załóżmy, że na "Strona 1" znajduje się podmenu (ono również zostało wstawione poprzez include) -->
<!-- menu strony -->
<ul id="page_menu"><li><a href="index.php?strona=1&podstrona=1">Podstrona 1 strony 1</a></li><li><a href="index.php?strona=1&podstrona=2">Podstrona 2 strony 1</a></li></ul>
<?php
echo 'Jesteś na stronie '.$strona.'<br/>'; if(isset($_GET['podstrona']) && $_GET['podstrona'] != '') { $podstrona = $_GET['podstrona'];
switch($podstrona) {
case '1.1':
include '1.1.php';
break;
case '1.2':
include '1.2.php';
break;
default:
include '1.1.php';
}
Ogólnie chodzi o to, że pliki, które includujesz mają dostęp do tablic superglobalnych (jak $_GET), jak również do zmiennych, które zostały zadeklarowane przed wywołaniem include (tutaj zmienna $strona). Przedstawiony wyżej schemat sprawdzi się w przypadku kilku stron i podstron, ale przy bardziej rozbudowanych portalach nie ma prawa bytu.