Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Menù a tabs con sottomenù generato da XML

    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

  2. #2
    tutte le idee sono ben accette
    ps: up!

  3. #3
    up per la notte... da domattina comincio a piangere
    e non la smetto finchè non mi risponde qualcuno

  4. #4

  5. #5
    vabbè ma non c'è nessuno che mi aiuta?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.