Certamente, con php è possibile tenere separata la navigazione dal resto in modo molto semplice, con include o require.
Addirittura nei miei siti tengo separato tutto dal contenuto con un sistema di funzioni.
creo una funzione che stampa tutto quello che c'è prima dei contenuti (header html, la tabella del layout, la navigazione) ed un altra funzione che stampa tutto quello che c'è dopo il contenuto (tag di chiusura della tabella, footer html, ecc...).
Così non mi resta che inserire il contenuto (statico o dinamico) tra queste due funzioni.
Ti mostro la pagina vuota (senza contenuti) di uno dei siti che ho realizzato.
http://www.overland.ch/modello.php
Che tu ci creda o no, per produrre questo risultato devo solo scrivere:
<?php
pageup();
pagedown();
?>
ti ho dato una risposta così lunga perchè la matenibilità di un sito è una delle mie specialità, anche perchè ho imparato (versando lacrime amare) che è meglio perdere un po' di tempo in fase di sviluppo ma poi poter aggiornare il sito in pochissimo tempo.