Elaborating slightly on what has already been said ... I would use Template::Toolkit in a stand-alone script to efficiently generate the various content elements ... producing as an output a set of HTML-files etc. that can then be served statically.
There are many ways (SQLite, XML, or even a CSV file output from a spreadsheet) to specify the content and the desired taxonomy of that content. The Perl script could efficiently generate side-bars pointing to other linked content as needed. But when all it said and done, you’re going to the command-line and typing, say, ./generate_my_site and in a matter of a few seconds the entire set of files has been generated, from whence Apache can now do what Apache does best. Furthermore, if you plan carefully, none of the existing bookmarks that folks are using now, wherever they might be, need be disturbed: you can generate the same output-file names as before.
This will achieve a very efficient make-over of the site, to the extent that the Perl script avoids redundant human effort while boosting consistency. It is also relatively cheap, and a lot can be accomplished in just a few days. (I did this sort of project six or seven times just last year.)
When there is a bona-fide need for some non-static content, then you can begin to wedge-in some Perl code (or what-have-you) in order to serve those specific areas. By once again using the same templates (and/or some other templates that, perhaps, have also been statically-generated by the aforementioned script), the look-and-feel of the completed site is seamless and whole. The user might not have any way to tell what content is static and what is dynamic.