Devi usare un "pattern" , in questo caso l'MVC dovrebbe andar bene al caso tuo.
Cosa è un pattern MVC ? Il pattern non è nient'altro che una suddivisione logica e successivamente anche fisica dell'applicativo web (o sito) , come funziona:
Il sito viene richiamato sempre da un'unica pagina (detto dispatcher), genericamente la pagina index.php. Dentro la pagina index.php dovrai richiamare tramite require o include le parti di sito che tu vuoi tramite passaggio dei parametri e quindi "assemblare" il sito al volo per ogni parametro differente.
Mi spiego meglio. Supponiamo di avere una index strutturata banalmente in questo modo:
Codice PHP:
<?
require_once('connessione.php'); //esempio includi un file che esegue la connessione
/**********************************************
* dispatch della vista
***********************************************/
if (!isset($_REQUEST['mod']))
$_REQUEST['mod'] = 'homepage'; //assegnamo un modulo di default ne caso dovessimo richiamare la index.php senza parametri
$inc_file = 'moduli/'.$_REQUEST['mod']'.inc';
//suppongo che i moduli siano salvati nella cartella moduli con estenzioni ".inc" (opzionale)
if (file_exists($inc_file))
require_once($inc_file);
else
die("redirect pagina errore");
?>
cosa fa questa pagina :
1) include il file per la connessione al database
2)controlla se è stato richiesto un modulo specifico, in caso contrario assegnamo un modulo di default
3)controlliamo se il modulo esiste e lo includiamo
nel file "moduli/homepage.inc" metterai il codice che svolge le operazioni per quella determinata pagina (esempio prendere le prime 4 news dal database)
Adesso per quanto riguarda la modifica del template, io uso generalmente un template engine chiamato smarty che ti permette di usare html e codice php in maniera più trasparente.Però questo è un discorso più approfondito.
Se tu non volessi usare un template engine semplicemente devi includere nell'index.php una pagina html di base aggiungendo, per esempio , al codice precedente :
Codice PHP:
require_once('base.php');
e in base.php creare la struttura principale del sito, esempio:
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link href="css/style.css" rel="text/stylesheet"/>
<title>Insert title here</title>
</head>
<body>
<div id='container'>
<div id='menu'> /*qui metti il codice del menu*/ </div>
<div id='contenuto'>
<?php require_once($template_da_includere); ?>
</div>
</div>
</body>
</html>
come puoi vedere nel div#contenuto eseguo una require_once da una variabile che settiamo nel modulo.
Nel modulo , quindi, da qualche parte definiremo il percorso del template del file da inlcudere , esempio:
Codice PHP:
<?php
//file moduli/homepage.inc
//esegue operazioni varie
$template_da_includere = "templates/homepage.php"
?>
come puoi vedere suppongo che nella cartella templates (dove inseriremo tutti i template dei moduli) ci sia il file homepage.php che conterrà il codice htmle della visualizzazione della homepage.
per chiamare un'altro modulo potrai farlo tramite passaggio parametri nel browser, quindi un link. Esempio : 'index.php?mod=prodotti', che ti richiamerà il modulo prodotti.inc .
Ovviamente il discorso è un pò più complesso e ho cercato di spiegarlo a linee grossolane il tutto. Ti consiglio di iniziare con qualche framework php per comprendere meglio il funzionamento come cakephp o codeigniter.
Spero di non averti complicato la vita