En mi experiencia, suelo hacerlo de diferentes maneras, depende del caso.
A veces el cliente requiere de un CMS, otras veces un cliente tiene pocas páginas y es un gasto innecesario instalar un CMS, cuando se pueden realizar las cosas con contenido estático o semi estatico.
Cuando se instala un CMS (Content Management System), es facil agregar items al menú, porque se puede hacer a través de la interfaz del CMS, ya sea uno que tu hayas creado en el lenguaje de tu preferencia, o con uno ya prefabricado (Wordpress, Drupal, Joomla, Xoops, por mencionar algunos).
En lo personal, cuando se tienen pocas páginas y el contenido cambia poco o prácticamente nada, yo utilizo php para llamar a los menús, no sé que tan eficiente sea éste método pero al menos a mi me agrada.
mi index (y practicamente cualquier página) luce asi:
Código HTML:
Ver original<?php include('includes/menu.html'); ?>
<!--El contenido de tu página web-->
Y menu.html luce asi:
Código HTML:
Ver original<header id="header" class="headerStyle"> <nav class="navigationStyle"> <a href="index.php">Home
</a> <a href="products.php">Products
</a> <a href="news.php">News
</a> <a href="contact.php">Contact
</a>
al hacerlo de esta manera, para actualizar los links, solamente tengo que hacerlo en un archivo y el php se encarga de cargarlo en cada página, de otra forma, tendría que cambiar el menú (en dado caso que se requiera, remover o agregar nuevo contenido) página por página, si eventualmente se vuelve grande, se vuelve tedioso. Asi mismo si los menus tienen drop downs o cosas por el estilo ;)