I'm working on a set of tools to do something very similar to the site where I work. It's a very good solution for a site with much static content.
(You can find my earlier comment here)
Basically I use Text::Template to seperate my content and my navigation. A database holds page page-child relationships, and a few scripts let me easily add pages. A build script writes flat HTML files from the templates, edit the content in the templates, or view what a template will look like without writing the HTML file. My interface person can tweak the (mostly) HTML templates to change the navigation for the entire site without learning any Perl.