Php, briciola di pane
06/12/2011Uno degli elementi classici della navigazione è costituito dalla briciola di pane, o breadcrumb, ovvero quella riga -generalmente posta sulla parte superiore del contenuto- che indica all'utente in quale sezione si trova e il percorso di annidamento.
Per realizzare questa tecnica è innazitutto necessario costruire un albero di cartelle con annidamenti che rispecchino quelli della navigazione e nomi delle stesse completi, nonchè indicativi del contenuto, poiché saranno quelli che appariranno nella nostra briciola di pane.
Nel caso l'albero sia già costituito con nomi abbreviati, o non significativi, dovremo adeguare lo script con alcuni cicli di controllo (if... else) per far corrispondere al nome breve della cartella un testo che sia realmente significativo per l'utente finale.
Ecco come si costruisce lo script PHP (avevo già presentato qui una versione semplice in Javascript), sara sufficiente fare un include del file di questo script in ogni documento in cui vogliamo far apparire la briciola di pane!
error_reporting(E_ALL ^ E_NOTICE);
/* setting */
$separatore = " / "; // simbolo di divisione elementi path, può essere un'immagine
$file_corrente = 1; // visualizzazione nome file corrente (1 = no; 0 = sì)
/* fine setting */
$a_tag_apertura = "<a href = '";
$a_chiusura = "'>";
$a_tag_chiusura = "</a>";
$lunghezza_separatore = strlen($separatore);
$indirizzo = $_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];
$indirizzo_separato = explode("/", $indirizzo);
$numero_elementi_indirizzo = count($indirizzo_separato);
$numero = ($numero_elementi_indirizzo - $file_corrente);
$home = $a_tag_apertura . "https://" . $indirizzo_separato[0] . $a_chiusura . "home" .$a_tag_chiusura;
$a_cart = '';
$a_cart .= $a_tag_apertura . "/";
for ($i = 1; $i<$numero; $i++) {
$a_cart .= $indirizzo_separato[$i]. "/";
if (($i == ($numero-1)) && ($file_corrente == 0)) {
$l = strlen($a_cart);
$a_cart = substr($a_cart,0,($l-1));
}
$a_cart_completo = $a_cart . $a_chiusura . $indirizzo_separato[$i] . $a_tag_chiusura . $separatore;
$completo[$i-1] = $a_cart_completo;
}
$p_completo = $home . $separatore;
for ($w = 0; $w<$numero; $w++) {
$p_completo .= $completo[$w];
}
if($file_corrente == 0) {
$lunghezza_p_comp = strlen($p_comp);
$x = ($lunghezza_p_comp - $lunghezza_separatore);
$p_completo = substr($p_comp,0,$x);
}
echo $p_completo;