In questo tutorial illustrerò un metodo davvero molto semplice ma efficace per gestire il layout di un sito tramite PHP. Dato che si tratta di un'idea mia (che avrà sicuramente già avuto qualcun'altro, ma la illustro dato che sul sito non ci sono altri articoli su questo argomento) sono naturalmente ben accetti suggerimenti per il miglioramento e critiche (costruttive).

Definizione del layout

Per prima cosa bisogna mettere nella root del sito un file php che conterrà il layout, ad esempio layout.php, strutturato nel seguente modo:

<!DOCTYPE html>
<html>
	<head>
		<!--Head condivisa: script, fogli di stile, ecc. -->
		<link href="/style.css" rel="stylesheet" type="text/css">
		<script src="/jquery.min.js"></script>
		<!--Fine head condivisa -->
		<?php getHead(); ?>
	</head>
	<body>
		<!--Layout del sito (nell'esempio una semplice tabella con un titolo e un menu -->
		<h1>Titolo</h1>
		<table>
			<tr>
				<td>
					Menu
				</td>
				<td id="maincolumn">
					<!--Questa riga di php va messa dove si vuole inserire il contenuto della pagina -->
					<?php getBody(); ?>
				</td>
			</tr>
		</table>
	</body>
</html>

Scrittura delle pagine

A questo punto viene da chiedersi dove siano definite le funzioni getHead e getBody: semplice, saranno definite in modo diverso per ogni pagina. Infatti le pagine del sito dovranno avere questa struttura:

<?php function getHead(){ ?>
<!-- Titolo della pagina e altri elementi della head propri di questa pagina -->
<title>Ciao</title>
<?php }
function getBody(){ ?>
<!-- Contenuto della pagina -->
<h1>Ciao!</h1>
<?php } 
include("layout.php");
?>

Vengono semplicemente definite le due funzioni e incluso lo script che le chiama. Attenzione che se mettete le pagine in sottocartelle del sito dovete includere il layout facendo sempre riferimento alla root, quindi per una pagina che si trova in una sottocartella è ../layout.php, in una che è in una sotto-sottocartella ../../layout.php e così via. In teoria si potrebbe anche specificare il file sempre nello stesso modo usando uno slash all'inizio (/layout.php), ma sul mio server locale per qualche oscuro motivo non funziona (uso easyphp, probabilmente dipende da qualche opzione di apache, comunque provate, magari a voi funziona). Per i file di script, immagini, fogli di stile invece i percorsi vanno sempre codificati in questo modo (a meno che tutte le pagine non siano nella root del server) altrimenti non verranno caricati; a me questo funziona perchè probabilmente è il client (browser) che monta il percorso a cui fare la richiesta.

Spero che l'articolo vi sia utile, commentate se trovate errori o volete suggerire miglioramenti ;)