Nell’articolo precedente abbiamo visto come una struttura efficiente sia la base per costruire un sito web adattabile a ogni situazione.
Se non lo avete ancora fatto, vi consiglio di scaricare qui sotto lo script completo, in modo da seguire la spiegazione con il codice sotto mano.
Il sito va costruito a moduli separati e il layout comune a tutte le sezioni deve essere richiamato grazie all’uso di funzioni.
Prima di vedere nel dettaglio il file struttura.inc.php
, diamo un’occhiata ai file di esempio, contenuti nella cartella “pagina_di_esempio” dello script: vi renderà la spiegazione molto più comprensibile.
Download script
Un esempio minimale: l’uso a moduli del sito
L’idea è di strutturare il sito a moduli, cioè a sezioni indipendenti l’una dall’altra. Se, per esempio, nel vostro sito ci saranno la sezione dei contatti e quella dell’elenco prodotti, dovrete creare due cartelle chiamate “contatti” e “prodotti”. Ognuna di queste cartelle sarà popolata dei file usati esclusivamente per quella sezione.
In questa ideologia, il foglio di stile dei contatti non sarà incluso nella sezione dei prodotti, e viceversa.
Perché strutturare a moduli? E’ una comodità non da poco: se nella sezione “prodotti” dovrete includere un file javascript complesso (es: un calendario interattivo), eviterete così di includerlo anche nella sezione dei contatti e di caricare codice inutile nella pagina.
Le parti in comune, invece, come abbiamo visto vengono prese da struttura.inc.php
.
Se date uno sguardo alla cartella “pagina_di_esempio” troverete, oltre all’index.php
, due fogli di stile e due file javascript. All’interno dell’index.php
il loro riferimento è salvato in un array:
1 2 3 4 5 |
$style[]=$http."pagina_di_esempio/style.css"; $style[]=$http."pagina_di_esempio/style2.css"; $js[]=$http."pagina_di_esempio/javascript.js"; $js[]=$http."pagina_di_esempio/javascript2.js"; |
Questi due array saranno presi direttamente dalla funzione head()
, che si preoccuperà di richiamarli fisicamente (lo vedremo tra poco).
Il resto della pagina richiama le funzione di struttura.inc.php
:
1 2 3 4 5 6 7 8 9 10 11 |
<?php head("home"); content(); ?> <!-- Contenuto del corpo della pagina, personalizzabile a piacere --> <?php content_close(); footer(); ?> |
Da notare che nella funzione head()
è stato passato come parametro il nome della pagina, che la identifica come “home”.
Sarebbe buona norma attribuire un nome a ogni pagina, in modo da differenziarle all’interno della funzione head()
in caso di bisogno. In caso di necessità potete anche ripetere il nome come parametro delle funzioni footer()
e content()
.
Passiamo adesso in rassegna le tre funzioni della struttura di base: head()
, content()
e footer()
.
La pagina Struttura.inc.php – L’header
Leggiamo nel dettaglio alcune parti del codice contenuto all’interno della funzione head()
.
Trattandosi di funzioni, le eventuali variabili esterne devono essere rese globali perché la funzione stessa possa leggerle. Nel nostro esempio, all’interno dell’header abbiamo reso le variabili visibili in questo modo:
1 |
global $http, $tab, $db, $style, $js, $favicon; |
Queste variabili sono state create dai file inclusi a inizio pagina attraverso config.inc.php
e variabili.inc.php
.
Il resto della funzione è semplice (stampa il solito codice html di intestazione comprensivo di metatag), ma una nota va fatta per l’inclusione dei fogli di stile esterni e dei javascript:
1 2 3 4 5 6 7 8 |
<?php if(is_array($style)){ foreach($style as $value){?> <link rel="stylesheet" type="text/css" href="<?php echo $value; ?>"> <?php } } ?> |
Cosa abbiamo fatto?
Quell’array $style
non proviene da struttura.inc.php
, bensì dalla pagina di esempio che abbiamo appena visto. Se l’array è definito, ogni suo elemento viene stampato e riconosciuto come foglio css da includere nella pagina.
Nel nostro esempio, avevamo fatto passare i file “style.css” e “style2.css”.
Lo stesso funzionamento è valido per i javascript.
La pagina Struttura.inc.php – Il content
Sulla funzione content()
c’è poco da aggiungere oltre a quanto detto all’inizio dell’articolo precedente.
Ogni tipologia di contenuto ha una propria chiusura: quindi al content()
seguirà il corpo della pagina e infine il richiamo alla funzione content_close()
.
Anche qui un’annotazione, questa volta esterna allo scopo dell’articolo. Nella funzione content()
è presente un file incluso chiamato navigation.inc.php
. All’interno di questo file ci dovrà stare la barra di navigazione laterale.
Nell’esempio il menu è statico. Per la costruzione di una sidebar efficiente e dinamica, fate riferimento all’articolo che ho scritto di recente.
La pagina Struttura.inc.php – Il footer
Nel footer non ci sono particolari osservazioni da fare, a esclusione della chiusura del database che avete aperto a inizio pagina. E’ una buona norma da adottare, per evitare problemi imprevisti.
1 |
mysql_close($db); |