Una barra di navigazione è un elemento molto familiare per chi abitualmente naviga sulla Rete; si tratta di quella regione di una pagina web in cui sono raccolti i link alle principali sezioni del sito cui essa appartiene. In questa lezione vedremo come utilizzare PHP per costruirne una "intelligente", in grado cioè di evidenziare automaticamente la voce corrispondente alla pagina corrente.
La nostra barra di navigazione sarà generata da uno script PHP separato, che chiameremo barra.php3 , e che verrà richiamato da tutte le pagine in cui vorremo visualizzare la barra.
Cominciamo con il costruire una struttura dati appropriata; nel nostro caso sarà sufficiente un array associativo (vedi la lezione n. 3 ), che chiameremo $links , in cui avremo tanti elementi quanti sono i link che vogliamo inserire nella barra di navigazione. Ogni elemento consisterà di una chiave e di un valore: la chiave sarà l’indirizzo della pagina web corrispondente, il valore una sua breve descrizione. Ecco un esempio di un siffatto array:
// Struttura dati: array con link e descrizioni
$links = array( "index.php3" => "Home page",
"pagina2.php3" => "Pagina 2",
"pagina3.php3" => "Pagina 3"
);
In questo modo abbiamo rappresentato, internamente al nostro script, la struttura della barra di navigazione. Veniamo adesso alla parte “intelligente”: vogliamo, infatti, che quando la barra di navigazione viene visualizzata, venga evidenziata la voce corrispondente alla pagina in cui ci troviamo. Come fa a saperlo? Ci sono sostanzialmente due possibilità: possiamo essere noi a stabilire di volta in volta quale voce evidenziare oppure, come nel nostro caso, fare in modo che ciò avvenga in modo automatico.
Nel nostro esempio, quello che facciamo è confrontare il nome del file della pagina corrente con quelli contenuti nell’array $links : la pagina corrente è quella per cui il confronto ha esito positivo. Il percorso della script PHP corrente è contenuto nella variabile globale $PHP_SELF ; poiché nel nostro caso ci interessa soltanto il nome del file piuttosto che l’intero percorso, utilizziamo la funzione basename per estrarlo, nel modo seguente:
// Nome del file dello script corrente
$pagina_corrente = basename($PHP_SELF);
A questo punto non ci resta altro da fare che scrivere il codice PHP necessario alla visualizzazione della barra di navigazione; si tratta, in realtà, di un compito molto semplice: dobbiamo scorrere l’array creato precedentemente, confrontando ogni indirizzo con quello della pagina corrente e, in base all’esito del confronto, rappresentare la voce in maniera opportuna.
Nel nostro caso, ad esempio, decidiamo di racchiudere ogni link della barra di navigazione tra parentesi quadre, con la sola eccezione di quello corrispondente alla pagina corrente, visualizzato in grassetto e senza collegamento ipertestuale. Vediamo il sorgente.
// Visualizzazione barra di navigazione
// Riga orizzontale prima dei link
echo "<hr>n";
// Inizio a scorrere l'array
while (list($url,$desc)=each($links)) {
if ($url==$pagina_corrente) {
// Pagina corrente
echo "<b>$desc</b> ";
} else {
// Altre pagine
echo "[<a href="$url">$desc</a>] ";
}
}
// Riga orizzontale dopo i link
echo "<hr>n";
Nel frammento di codice proposto si è fatto ricorso alle funzioni list e
each per scorrere gli elementi dell’array associativo; se si utilizza PHP
4 la stessa operazione può essere effettuata utilizzando il costrutto foreach
(non disponibile nella versione 3).
Per concludere, vediamo come inserire la barra di navigazione nelle pagine
del sito (anch’esse in PHP). Ad esempio, la pagina iniziale, sarebbe del tipo:
<!-- Questo e' il file index.php3 -->
<html>
<head>
<title>Barra di navigazione intelligente</title>
</head>
<body>
<? require "barra.php3" ?>
<h1>Barra di navigazione intelligente</h1>
<h2>Prima pagina</h2>
<p>Questa è la home page; in
alto dovrebbe
essere visibile la barra di navigazione...
</body>
</html>
Come si vede, è sufficiente includere in cima alla pagina, dopo il tag BODY ,
una istruzione require che include ed esegue il codice contenuto in barra.php3 .
(si veda, in proposito, la lezione precedente).
L’esempio proposto, pur nella sua estrema semplicità, probabilmente è già
applicabile a molte esigenze concrete; in ogni caso la sua personalizzazione
dovrebbe risultare piuttosto agevole.
Anche per questa lezione è tutto, per cui vi saluto ma non prima,
naturalmente, di avervi porto gli auguri: buone feste, dunque, e alla prossima
puntata!
Luca Balzerani , studente di
Informatica, è fondatore e presidente di LatoServer.it ,
sito dedicato alla programmazione server-side ed al backend in generale.