Ho creato un menù a tabs con sottomenù generato lato server (PHP ovviamente) da un file XML al volo con pagina attuale e e tabs aperto...
potete vederlo in azione su http://www.nexus6design.com/provaxmlmenu/sez1.php
questo è il file XML:
http://www.nexus6design.com/provaxmlmenu/menu.xml
e questo è il codice:
codice:
<?
error_reporting (E_ERROR | E_WARNING | E_PARSE);
$file = "menu.xml";
$paginacorrente = "http://";
$paginacorrente.= $_SERVER['HTTP_HOST']; //outputs sitename.com etc
$paginacorrente.= $_SERVER['REQUEST_URI']; //outputs /index.php etc
//PER TESTARE LA PAGINA CORRENTE
//$paginacorrente = "http://www.andreapaiola.it/chisonoemieiinteressi.php";
function xml2php($file) {
global $arr_vals;
$xml_parser = xml_parser_create();
if (!($fp = fopen($file, "r"))) {
die("impossibile aprire il file XML");
}
$contents = fread($fp, filesize($file));
fclose($fp);
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($xml_parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($xml_parser, $contents, $arr_vals, $index);
xml_parser_free($xml_parser);
}
$arr_xml = xml2php($file);
$menuprincipale = '<div id="menu"><ul id="menuprincipale">';
$menusecondario = '<ul id="menusecondario">';
$n = -1;
foreach ($arr_vals as $value) {
$n++;
if ($value[level] == 2){
//URL DEL LINK
if ($value['attributes']['url'] != ""){
if ($value['attributes']['url'] == $paginacorrente){
$menuprincipale .= '<li id="paginacorrente" title="Questa è la pagina corrente: ' . "$paginacorrente" . '">' . $value['attributes']['testo'] . '';
//SE LA PAGINA CORRENTE è NEL MENU PRICIPALE MOSTRIAMO I SOTTOMENU RELATIVI
$sottomenuaperto = "si";
}else{
$sottomenuaperto = 'no';
$menuprincipale .= '[*]<a href="' . $value['attributes']['url'] . '"';
//DESCRIZIONE DEL LINK
if ($value['attributes']['descrizione'] != ''){
$menuprincipale .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
}
$menuprincipale .='">';
//TESTO DEL LINK
$menuprincipale .= $value['attributes']['testo'] . '</a>' . '';
}
}
}
if ($value[level] == 3){
if ($value['attributes']['url'] == $paginacorrente){
//echo('La pagina corrente è in un sottomenu');
$pagcorrsott = 'si';
//echo($value[level]);
//echo($value['attributes']['url']);
//echo($paginacorrente);
//TROVO LA POSIZIONE DEL TAG SUCCESSIVO DI 2° LIVELLO
//E LO FICCO NELLA VARIABILE
$i = $n;
for (;;) {
if ($arr_vals[$i][level] == "2") {
break;
}
//echo($arr_vals[$i][level]);
$i++;
}
$tagsucc = $i;
//echo($tagsucc);
//TROVO LA POSIZIONE DEL TAG PRECEDENTE DI 2° LIVELLO
//E LO FICCO NELLA VARIABILE
$i = $n;
for (;;) {
if ($arr_vals[$i][level] == "2") {
break;
}
//echo($arr_vals[$i][level]);
$i--;
}
$tagprec = $i;
//echo($tagprec);
break;
} else {
$pagcorrsott = 'no';
//echo('no sottomenù');
}
if ($sottomenuaperto == "si"){
//URL DEL LINK
if ($value['attributes']['url'] != ""){
if ($value['attributes']['url'] == $paginacorrente){
$menusecondario .= '<li id="paginacorrente" title="Questa è la pagina corrente: ' . "$paginacorrente" . '">' . $value['attributes']['testo'] . '';
}else{
$menusecondario .= '[*]<a href="' . $value['attributes']['url'] . '"';
//DESCRIZIONE DEL LINK
if ($value['attributes']['descrizione'] != ''){
$menusecondario .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
}
$menusecondario .='">';
//TESTO DEL LINK
$menusecondario .= $value['attributes']['testo'] . '</a>' . '';
}
}
}
}
}
if ($pagcorrsott == "si"){
//SE LA PAGINA CORRENTE è IN UN SOTTOMENU
//echo('devo rifare il menù');
//echo($n);
//echo($arr_vals[$n]['attributes']['url']);
$menuprincipale = '<div id="menu"><ul id="menuprincipale">';
$menusecondario = '<ul id="menusecondario">';
$n = -1;
foreach ($arr_vals as $value) {
$n++;
if ($value[level] == 2){
//URL DEL LINK
if ($value['attributes']['url'] != ""){
//echo($n);
//echo($value['attributes']['url']);
//echo($arr_vals[$n]['attributes']['url']);
//echo('
');
if ($value['attributes']['url'] == $arr_vals[$tagprec]['attributes']['url']){
//echo('sezione');
$menuprincipale .= '<li id="tabcorrente">' . $arr_vals[$tagprec]['attributes']['testo'] . '' . '';
}else{
$menuprincipale .= '[*]<a href="' . $value['attributes']['url'] . '"';
//DESCRIZIONE DEL LINK
if ($value['attributes']['descrizione'] != ''){
$menuprincipale .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
}
$menuprincipale .='">';
//TESTO DEL LINK
$menuprincipale .= $value['attributes']['testo'] . '</a>' . '';
}
}
}
if ($value[level] == 3){
//SE I TAGS FANNO PARTE DEL SOTTOMENU E SON FRATELLI DELLA PAGINA ATTUALE
if ($tagprec <= $n && $n <= $tagsucc){
//echo($value['attributes']['url']);
if ($value['attributes']['url'] == $paginacorrente){
$menusecondario .= '<li id="paginacorrente" title="Questa è la pagina corrente: ' . "$paginacorrente" . '">' . $value['attributes']['testo'] . '';
} else {
$menusecondario .= '[*]<a href="' . $value['attributes']['url'] . '"';
//DESCRIZIONE DEL LINK
if ($value['attributes']['descrizione'] != ''){
$menusecondario .= ' title="' . $value['attributes']['testo'] . ': ' . $value['attributes']['descrizione'];
}
$menusecondario .='">';
//TESTO DEL LINK
$menusecondario .= $value['attributes']['testo'] . '</a>' . '';
}
}
}
}
}
$menuprincipale .= '[/list]';
$menusecondario .= '[/list]</div>';
echo ("$menuprincipale");
echo ("$menusecondario");
?>
mi aiutate a migliorarlo/ottimizzarlo?
e grazie