Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513

    modifica a script per menu

    Ciao a tutti. Per un sito che sto realizzando sono intenzionato ad usare il seguente script per menu, che mi consente di applicare una classe al[*] corrispondente alla pagina corrente:

    Codice PHP:
    <?php
    $pagine 
    = array ('Home' =>'http://www.sanguenellevene.net/index.php',
                     
    'Biografia' =>'#',
                     
    'Discografia' =>'http://www.sanguenellevene.net/discografia/barabba.php',
                     
    'Tour' =>'#',
                     
    'forum' =>'http://www.sanguenellevene.net/forum/index.php',
                     );
    echo
    "<ul>";
    foreach (
    $pagine as $text => $link)
      {
      
    $out.="\n<li ";
      if (
    basename($_SERVER['PHP_SELF']) == basename($link))
           
    $out.="class='active'>[url=".$link."]".$text."[/url]\n";
      else
          
    $out.=">[url=".$link."]".$text."[/url]\n";
      }
      echo 
    $out;
    echo 
    "[/list]\n";

    ?>
    Lo script funziona perfettamente, solamente io avrei bisogno di applicare oltre alla classe predefinita anche un css inline all'ultimo marcatore[*] del menu, dato che tutti i[*] hanno impostato un bordo a sinistra per dividere le varie voci e vorrei mettere all'ultimo anche un bordo destro a conclusione del menu. Non so se sono stato chiaro, per spiegarmi meglio allego anche due immagini, una col menu come mi viene restituito e una che mostra come dovrebbe essere con lo stile css inline.

    Spero possiate aiutarmi, grazie mille a tutti!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    scusate, credo di non aver capito bene la gestione del forum riguardo gli allegati...spero di essermi spiegato ugualmente (o altrimenti li ripostero)

    Grazie ancora a tutti!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    Io da ignorante credo ci siano piu modi per far fare allo script quello che vorrei...magari provo a scriverlo in italiano e qualche anima pia poi riesce a portarmelo in php:

    bisognerebbe dire allo script:

    - controlla se $pagine equivale al valore forum e allora stampa....
    oppure
    -quando stampi l'ultimo[*] della lista, stampalo cosi: <li style="border-right: 1px solid #666666">
    oppure
    - quando stampi il[*] numero cinque stampalo cosi: .......

    spero di esser riuscito a spiegarmi meglio, grazie mille a chi mi aiutera!

  4. #4
    Il tuo problema è piuttosto semplice da risolvere, e prevede l'uso di un minimo di logica.
    Per stampare il CSS inline nell'ultimo item della lista devi dire a PHP quanti items ci sono e quindi chiedergli di contare quelli che tratta nel ciclo FORECH.

    Codice PHP:
    <?php 
    $pagine 
    = array ('Home' =>'http://www.sanguenellevene.net/index.php'
                     
    'Biografia' =>'#'
                     
    'Discografia' =>'http://www.sanguenellevene.net/discografia/barabba.php'
                     
    'Tour' =>'#'
                     
    'forum' =>'http://www.sanguenellevene.net/forum/index.php'
                     ); 
    // di quante voci è composto il mio menu???
    $num count($pagine);
    // inizializzo un contatore
    $i 1;
    // inizializzo la variabile stringa $out per evitare NOTICE da
    // parte dello script
    $out "";


    echo
    "<ul>"
    foreach (
    $pagine as $text => $link
    // controllo che il numero del ciclo sia uguale a quello
    // che definisce l'ultimo ITEM di lista da inserire
    // uso l'operatore ternario in luogo del solito IF
    ($i == $num) ? $style " style=\"border-right: 1px solid #666666\" " $style "" ;

      { 
      
    $out.="\n<li $style"
      if (
    basename($_SERVER['PHP_SELF']) == basename($link)) 
           
    $out.="class='active'>[url=".$link."]".$text."[/url]\n"
      else 
          
    $out.=">[url=".$link."]".$text."[/url]\n"
      } 
      echo 
    $out
    echo 
    "[/list]\n"
    ?>
    Vedi un po' se così funziona???
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    Ciao e grazie per l'aiuto! Purtroppo no, cosi non funziona...con le tue modifiche ora lo script mi stampa esclusivamente l'ultima voce della lista, e non viene neanche aggiunto il bordo

  6. #6
    Nel copia/incolla devo avere saltato qualche riga, infatti non è chiusa la parentesi graffa del ciclo FOREACH.
    Vado a riscrivere cercando di evitare di fare errori.
    Codice PHP:
    <?php 
    $pagine 
    = array ('Home' =>'http://www.sanguenellevene.net/index.php'
                     
    'Biografia' =>'#'
                     
    'Discografia' =>'http://www.sanguenellevene.net/discografia/barabba.php'
                     
    'Tour' =>'#'
                     
    'forum' =>'http://www.sanguenellevene.net/forum/index.php'
                     ); 
    // di quante voci è composto il mio menu??? 
    $num count($pagine); 
    // inizializzo un contatore 
    $i 1
    // inizializzo la variabile stringa $out per evitare NOTICE da 
    // parte dello script 
    $out ""


    echo
    "<ul>"
    foreach (
    $pagine as $text => $link) {
    // controllo che il numero del ciclo sia uguale a quello 
    // che definisce l'ultimo ITEM di lista da inserire 
    // uso l'operatore ternario in luogo del solito IF 
    ($i == $num) ? $style " style=\"border-right: 1px solid #666666\" " $style "" 
      
    $out.="\n<li{$style}"
      if (
    basename($_SERVER['PHP_SELF']) == basename($link)) {
           
    $out.="class='active'><a href=\"javascript:void(0)\">$text</a>\n"
      } else {
          
    $out.="><a href=\"$link\">$text</a>\n"
      }
    $i++;
    }
    echo 
    $out
    echo 
    "[/list]\n"
    ?>
    Ad ogni modo trovo sia inutile stare ad inserire il link della pagina che si sta visualizzando.
    Ti consiglio di elaborare una classe apposita per gli elementi di lista che non presentano il link, oppure di usare il javascript.void (nello script qui sopra la scritta javascript è stata modificata per motivi di sicurezza: OCCHIO ALLA SINTASSI).

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    ci siamo quasi, ma c'è ancora un problema, ho provato a smanettare un pò ma ho risolto niente.
    ora lo script funziona ma purtroppo oltre ad assegnare all'ultima voce del menu il css inline gli assegna anche la class="active", anche se appunto non ci si trova in quella pagina...praticamente ora nel menu ho evidenziata la voce corrispondente alla pagina corrente più l'ultima voce della lista

  8. #8
    Ho testato lo script e qui da me funziona correttamente.
    Eccotene la versione aggiornata, migliorata e commentata.
    Codice PHP:
    <?php
    $pagine 
    = array (
                     
    'Home' =>'http://www.sanguenellevene.net/index.php'
                     
    'Biografia' =>'#'
                     
    'Discografia' =>'http://www.sanguenellevene.net/discografia/barabba.php'
                     
    'Tour' =>'#'
                     
    'forum' =>'http://www.sanguenellevene.net/forum/index.php'
                     ); 
    // di quante voci è composto il mio menu??? 
    $num count($pagine); 
    // inizializzo un contatore 
    $i 1
    // inizializzo la variabile stringa $out per evitare 
    // NOTICE da parte dello script 
    $out ""


    echo
    "<ul>\n"
    foreach (
    $pagine as $text => $link) { 
    /*
    controllo che il numero del ciclo sia uguale a quello 
    che definisce l'ultimo ITEM di lista da inserire 
    uso l'operatore ternario in luogo del solito IF 
    */
    ($i == $num) ? $style " style=\"border-right: 1px solid #666666\"" $style "" 
    /*
    controllo che l'indirizzo del link corrisponda a quello della pagina visualizzata 
    */
    (basename($_SERVER['PHP_SELF']) == basename($link)) ? $class " class=\"active\"" $class "" 
    /*
    se l'indirizzo del link corrisponda a quello della pagina visualizzata 
    modifico il link e metto il void di JS
    */
    (basename($_SERVER['PHP_SELF']) == basename($link)) ? $link "javascript:void(0)" $link $link 
    /*
    ricorda che il trattino tra JAVA e SCRIPT qui sopra, è messo dal forum
    e lo devi correggere (togliendolo) dal tuo script
    */
    $out.="\t<li{$style}{$class}><a href=\"$link\">$text</a>\n";


    $i++; 

    echo 
    $out
    echo 
    "[/list]\n"
    ?>
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Un piccolo appunto.
    Visto che i link del menu sono tutti interni al tuo sito, puoi anche usare URL relative in luogo di quelle assolute.
    Codice PHP:
    $pagine = array ( 
                     
    'Home' =>'index.php'
                     
    'Biografia' =>'biografia.php'
                     
    'Discografia' =>'discografia.php'
                     
    'Tour' =>'tour.php'
                     
    'forum' =>'forum/index.php'
                     ); 
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    513
    ho appena avuto modo di capire come mai lo script non funziona (o almeno non in modo preciso).
    Nel menu io ho queste due voci:

    Codice PHP:
    'Home' =>'http://www.sanguenellevene.net/index.php'
    Codice PHP:
    'forum' =>'http://www.sanguenellevene.net/forum/index.php'
    evidentemente lo script non riesce a vedere che la seconda index.php è in un'altra cartella, e cosi quando sono nella home page del sito mi considera come voce attiva sia la prima che l'ultima...

    Comunque ho risolto facilmente il problema eliminando index.php dall'ultimo link...

    Codice PHP:
    'forum' =>'http://www.sanguenellevene.net/forum/'
    non so se sia soluzione ortodossa ma sembra funzionare

    Grazie ancora per l'aiuto!!

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.