• User Newbie

    Menù dinamico... aiuto!

    Ciao a tutti ragazzi/e,
    sono nuova nel campo Php.. e per questo chiedo una mano a tutti voi.

    Quello che sto cercando di realizzare è un menù di navigazione, (in realtà il menù c'è già.. ma è scritto in html) scritto in una sola pagina, per esempio "menu.php", che però riesca a riconoscere quando è in una determinata pagina e quindi colorarsi in un modo diverso. Ho cercato su internet ma non sono riuscita a trovare nulla, forse perchè cerco con le parole chiave sbagliate, non lo so.

    Per il momento questo menù si trova in una pagina php che ho richiamato in tutte le altre pagine, ma purtroppo se sono sulla pagina "Blog" (per esempio) non si riesce a percepire dal menù.. nn so se mi spiego..

    Comunque.. Se vi può essere utile vi posto il menù, molto semplice:
    [HTML]<div id="navbar-collapse-1" class="navbar-collapse collapse pull-right">
    <ul class="nav navbar-nav">
    <li><a href="index.php" data-toggle="dropdown">Home</a></li>
    <li><a href="team.php">Il Team</a></li><li class="dropdown"> <a href="blog.html" data-toggle="dropdown" class="dropdown-toggle">Blog </a>
    <ul class="dropdown-menu multilevel" role="menu">
    <li> <a href="blog-pc.html">Guida Pc</a> </li>
    <li> <a href="blog-mac.html">Guida Mac</a> </li>
    <li> <a href="blog-come-si-fa.html">Come si fa?</a> </li>
    </ul>
    </li>
    <li><a href="contatti.php" data-toggle="dropdown" class="dropdown-toggle">Contatti</a></li>
    </ul></div>[/HTML]

    Spero che possiate darmi qualche dritta,
    grazie molte
    D.


  • User Attivo

    Ciao MercuriDesign e benvenuta nel ForumGT!

    io farei una funzione che richiama il menu che ha in input un parametro relativo al numero di pagina. In questo modo ogni pagina che chiamerà il menu lo farà con un valore diverso del parametro. In questo modo puoi sapere in che pagina sei e colorare il menu di conseguenza


  • User Newbie

    in parole di codice cosa dovrei scrivere? :bho:


  • Moderatore

    Ciao MercuriDesign,

    ti spiego in codice ciò che ha detto PietroR.

    Crei la funzione contenente il menù ed un parametro variabile come questo esempio

    [PHP]
    <?php
    function getMenu($class){
    echo '<div id="navbar-collapse-1" class="navbar-collapse collapse pull-right '.$class.'">
    <ul class="nav navbar-nav">
    <li><a href="index.php" data-toggle="dropdown">Home</a></li>
    <li><a href="team.php">Il Team</a></li><li class="dropdown"> <a href="blog.html" data-toggle="dropdown" class="dropdown-toggle">Blog </a>
    <ul class="dropdown-menu multilevel" role="menu">
    <li> <a href="blog-pc.html">Guida Pc</a> </li>
    <li> <a href="blog-mac.html">Guida Mac</a> </li>
    <li> <a href="blog-come-si-fa.html">Come si fa?</a> </li>
    </ul>
    </li>
    <li><a href="contatti.php" data-toggle="dropdown" class="dropdown-toggle">Contatti</a></li>
    </ul></div>';
    }
    ?>
    [/PHP]

    Poi dentro il tuo foglio di stile dichiari le classi con i rispettivi colori, come ad esempio:

    
    .giallo{background:yellow;}
    .rosso{background:red;}
    
    

    Poi ti basta richiamare il menù dentro le tue pagine richiamando la funzione e passando la classe desiderata:

    [PHP]
    getMenu("giallo");
    [/PHP]

    ed il gioco è fatto.


  • User Attivo

    Ma in questo modo non si colorerebbe tutto il menu e non solo la voce blog (in caso contrario ho preso un abbaglio..)?


  • User Newbie

    ok, ultima cosa.. e poi vi dico se funziona 🙂
    Io prima per richiamare il menù scrivevo:

    [PHP]<?php include('menu.php'); ?>[/PHP]

    Adesso per richiamare il menù con la funzione e relativa classe come devo scrivere?


  • User Newbie

    @PietroR said:

    Ma in questo modo non si colorerebbe tutto il menu e non solo la voce blog (in caso contrario ho preso un abbaglio..)?

    Secondo te non è giusto il metodo di MiWebDesign? cosa faresti tu?


  • User Attivo

    Secondo me si colora tutto il menu in questo modo, però chiedo conferma anche a MiWebDesign, visto che il codice è stato scritto da lui.


  • User Attivo

    Potrsti anche aggiungere un javascriopt che vede la url e se corrisponde alla voce di menù aggiunge una claasse "active".

    In Jquery dovrebbe venire facile da fare.


  • User Attivo

    Scusami: il concetto analogo, più lungo ma elimina js, lo puoi sviluppare anche in php, leggendo l'url della pagina ed estraendo tutto con un cofronto del tipo "se contiene" url .

    Es: se su miosito.it/blog-mac.html

    ----------> funzione che fa il match dell'url (del tipo $var_url che è blog-mac.html )

    ----------> metti tutte le voci di menù in un array e le stampi da un ciclo che verifica se quella voce di menù (o menglio, il suo link) corrisponde a quella riga

    ----------> f(x)
    if ( $var_url == $voce_di_menu)

    ----------> definisci la classe da mettere nel <a href> $active = class="ative"

    <a href="blog-mac.html" $active >Guida Mac</a>


  • Moderatore

    Sì in quel modo si colora tutto il menù, se vuoi colorare solo un tasto metti la posizione dentro di esso e fai un controllo della posizione che vuoi assegnargli dentro il menù.

    Non hai specificato che volevi colorare la VOCE e non tutto il menù.

    Quello che sto cercando di realizzare è un menù di navigazione ( **soggetto **), (in realtà il menù c'è già.. ma è scritto in html) scritto in una sola pagina, per esempio "menu.php", che però riesca a riconoscere quando è in una determinata pagina e quindi colorarsi ( azione ricollegata al soggetto di cui si sta parlando ) in un modo diverso.

    Questo è il codice aggiornato della funzione.

    [PHP]
    <?php
    function getMenu($position){
    echo '<div id="navbar-collapse-1" class="navbar-collapse collapse pull-right">
    <ul class="nav navbar-nav">
    <li class="'; if($position=="1"){echo "activemenu";} echo '"><a href="index.php" data-toggle="dropdown">Home</a></li>
    <li class="'; if($position=="2"){echo "activemenu";} echo '"><a href="team.php">Il Team</a></li><li class="dropdown"> <a href="blog.html" data-toggle="dropdown" class="dropdown-toggle">Blog </a>
    <ul class="dropdown-menu multilevel '; if($position=="3"){echo "activemenu";} echo '" role="menu">
    <li class="'; if($position=="4"){echo "activemenu";} echo '"> <a href="blog-pc.html">Guida Pc</a> </li>
    <li class="'; if($position=="5"){echo "activemenu";} echo '"> <a href="blog-mac.html">Guida Mac</a> </li>
    <li class="'; if($position=="6"){echo "activemenu";} echo '"> <a href="blog-come-si-fa.html">Come si fa?</a> </li>
    </ul>
    </li>
    <li class="'; if($position=="7"){echo "activemenu";} echo '"><a href="contatti.php" data-toggle="dropdown" class="dropdown-toggle">Contatti</a></li>
    </ul></div>';
    }
    ?>
    [/PHP]

    Vedi gli if? Corrispondono alla posizione che vuoi colorare, quindi se sei dentro contatti e devi richiamare il menù anzichè l'include scrivi:

    [PHP]
    <?php
    getMenu("7");
    ?>
    [/PHP]

    Ed alla classe **.activemenu **dal tuo foglio di stile dai le proprietà che vuoi, ad es:

    
    .activemenu{background:black;}
    
    

    Ci sono altri 300 modi per farlo. Se questo non ti piace te ne dico altri.


  • User Attivo

    Ciao MercuriDesign
    questo è un esempio di un menu che farei io

    
    <?php
    function menu($menu)
    {
        ?>
        <a href="<?=PATH?>clienti.php"><div class="menuItem <?=$menu==2?'menuItemSelected':''?>"> 2 Clienti</div></a>
        <a href="<?=PATH?>magazzino.php"><div class="menuItem <?=$menu==3?'menuItemSelected':''?>"> 3 Magazzino</div></a>
        <a href="<?=PATH?>utenti.php"><div class="menuItem <?=$menu==5?'menuItemSelected':''?>">5 Utenti</div></a>
        <a href="<?=PATH?>impostazioni.php"><div class="menuItem <?=$menu==6?'menuItemSelected':''?>"> 6 Impostazioni</div></a>
        <?php
    }
    
    dove menuItemSelected è una classe css che colora il div in modo diverso
    
    

  • User Newbie

    @MiWebDesign said:

    Non hai specificato che volevi colorare la VOCE e non tutto il menù.

    Intanto mi scuso se non mi sono spiegata bene..
    Comunque ho provato il tuo metodo ma il menù è scomparso 😞
    inoltre nella pagina dove l'ho richiamatomi dice Fatal error: Call to undefined function getMenu() on line 39****


  • User Newbie

    @PietroR said:

    Ciao MercuriDesign
    questo è un esempio di un menu che farei io

    >
    <?php
    function menu($menu)
    {
        ?>
        <a href="<?=PATH?>clienti.php"><div class="menuItem <?=$menu==2?'menuItemSelected':''?>"> 2 Clienti</div></a>
        <a href="<?=PATH?>magazzino.php"><div class="menuItem <?=$menu==3?'menuItemSelected':''?>"> 3 Magazzino</div></a>
        <a href="<?=PATH?>utenti.php"><div class="menuItem <?=$menu==5?'menuItemSelected':''?>">5 Utenti</div></a>
        <a href="<?=PATH?>impostazioni.php"><div class="menuItem <?=$menu==6?'menuItemSelected':''?>"> 6 Impostazioni</div></a>
        <?php
    }
    
    dove menuItemSelected è una classe css che colora il div in modo diverso
    
    >```
    
    ok adesso provo questo metodo e ti faccio sapere