Ich gucks mir ma an, kann nen paar Minuten dauern ;-)
Also....
Zunächst würde ich Dateien, die PHP-Code enthalten nicht als .html speichern sondern in .php-Dateien. Eventuell wäre es auch ratsam Endungen wie .tpl.php für Templatedateien zu verwenden, aber bleibt dir überlassen.
Eine ID in einer HTML Datei sollte bzw. darf nur einmal vergeben werden. Was du für die Navigation haben willst sind Klassen.
Die menu.php würde ich eher so aufbauen:
<?php
$dir = 'sites/';
$files = glob( $dir . '*' ); /* Siehe www.php.net/glob */
$pages = ''; /* Muss ausserhalb der Schleife definiert werden */
foreach( $files as $i => $file )
{
$f = explode( '.', str_replace( $dir, '', $file ) );
if( $f[0] == 'index' || $f[0] == 'home' || $f[0] == 'start' )
$index = '<div class="navlink">[URL=index.php?id=' . $i . ']' . $f[0] . '[/URL]</div>';
else
$pages .= '<div class="navlink">[URL=index.php?id=' . $i . ']' . $f[0] . '[/URL]</div>';
}
?>
Anmerkung: In der URL würde ich nicht den Pfad zu der Datei übergeben sondern eher den Index... Dementsprechend sollte die Datei, die den Inhalt lädt auch glob() benutzen oder am besten machst du es so, dass du in der index.php
$sites = glob( 'sites/*' );
ergänzt und dann in der menu.php und der Datei die den Inhalt lädt einfach das Array so verwendest... Demnach würden dann in der menu.php die ersten beiden Codezeilen wegfallen und es muss
foreach( $pages as $i => $file )
heißen...
Hoffe das läuft so, habs nur sporadisch getestet...
Edit: Die Sache mit den Subdirs lässt sich auch über glob lösen, musste dir ma genauer angucken ;-)