En un post anterior expliqué la forma más simple de hacer una web modular; aunque esa forma funciona bien para proyectos de muchas páginas, proyectos con CMS o sistemas con friendly url (url amigable) no es buena idea usarla.
Tengo pensado hacer 2 partes más del tutorial para explicar además a hacer conexión con la base de datos y friendly URL

Estructura de la Web Modular

Para este caso prefiero separar header de menu, el footer lo separo del final del código html, la estructura general de la página esta en el archivo index.php, todos los contenidos en si están en la carpeta pages, para poder acceder a cualquier página usamos la ruta index.php?page=nombre_del_archivo_sin_extension

index.php

En el anterior post index.php era una página mas, pero ahora es el centro del script, las páginas ahora sólo tendrán el contenido sin ningún include y estarán en la carpeta pages.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    include("includes/top_page.php");
?>
<div id="wrapper">     
    <div id="header">      
        <? include("includes/header.php"); ?>        
    </div>  
    <div id="menu">
            <? include("includes/menu.php"); ?>
        </div> 
    <div id="contenido">
        <? include("includes/pages.php"); ?>        
        <br style="clear:both;" />
    </div>
    <div id="footer">          
        <? include("includes/footer.php"); ?>        
    </div>
</div>
<? include("includes/bottom_page.php"); ?>

Carpeta includes

En esta carpeta colocamos todos los trozos de nuestra páginas, que es casi los mismo del tutorial anterior , la novedad el include encargado de llamar las páginas web

pages.php

Este script llama la página dentro de la carpeta pages que pidamos usando GET index.php?page=nombre_del_archivo_sin_extension

1
2
3
4
5
6
7
<?php
if (!isset($_GET['page'])) {
    include("pages/homepage.php");
} else {
    include("pages/".$_GET['page'].".php");
}
?>

Si por ejemplo en la carpeta pages tengo la pagina servicios.php para llamarla la url sería index.php?page=servicios






UPDATE: Y que ocurre si quisiera una estructura distinta con un menu lateral por ejemplo, simplemente edita el index.php agregando el div que corresponde a ese menu adicional y sobre todo edita el CSS para que se ubique adecuadamente ese div adicional, puedes ver como en este tutorial de maquetación