PDA

View Full Version : need help, php+mootools



Mez
20th September 2010, 17:10
Devo creare un menu dinamico con sottomenu, mi spiego meglio:
Pagina1
pagina2
pagina4
pagina5
pagina6

Pagina 3
pagina7
pagina8
pagina9
pagina10

e cosi via, a sottolivelli mi servirebbe...solo che vorrei che il sottomenu sia a comparsa/scomparsa a click, aggiungendo un effetto mootools (o jquery è indifferente) e in php.
E con una classe che mi tenga evidenziato il link attivo, su cui sono

Non so se mi sono spiegato :D

Amiag
20th September 2010, 17:54
Tipo questo ?
http://demos.mootools.net/Accordion

altrimenti girati un po i forum di mootools (o jquery se preferisci), ci sono una marea di script user-made ...

Mez
21st September 2010, 11:08
tipo questo: http://www.dynamicdrive.com/dynamicindex17/ddaccordionmenu-glossy.htm

solo che mi servirebbe in php, io ne ho uno ma non multilevel...


<?php
$pagina = basename ($_SERVER["PHP_SELF"]); // rilevo il nome della pagina attiva


$nome = array (
"Vassoi Difetti di Pregio",
"Ciotole 21 grammi",
"Serie S-nodo",
"- tavolo",
"- coffeetable",
"- sedia",
"- libreria",
"- comodino",
"- specchiera",
"Ciotole A zampa",
"Ciotola Multistrato",
"Tronco da sfogliare",
"Tavolo Aliante",
"Libreria Zig-zag",
"Culla Viola",
"Portafrutta Guggenheim",
"Appendiabiti Re povero",
"Letto Mezzomezzo",
"Amaca a dondolo"
); // array nomi menu

$link = array (
"vassoidp.php",
"21grammi.php",
"#",
"tavolos.php",
"coffet.php",
"sedias.php",
"libreria.php",
"comosnodo.php",
"specchiera.php",
"zampa.php",
"multistrato.php",
"tronco.php",
"aliante.php",
"libreria_zigzag.php",
"culla.php",
"guggenheim.php",
"appendiabiti.php",
"letto.php",
"amaca.php"
); // array nomi links

$con = count($nome);// conta i valori array
$inc = 0;

echo "<ul>";

while ($inc < $con)
{
if ($pagina == $link[$inc]) // Se la pagina selezionata corrisponde al nome
{
echo "<li class='selected'>" . $nome[$inc] . "</li>\n";
}
else
{
echo "<li><a href='" . $link[$inc] . "' title='" . $nome[$inc] . "'>" . $nome[$inc] . "</a></li>\n";
}

$inc = $inc + 1;
}
?>
</ul>


io ho usato questo sino ad ora, ma il tizio comincia a rompere il cazzo volendo quello a scomparsa

Amiag
21st September 2010, 11:27
Beh non mi sembra male quello che hai linkato, perche non puoi usare quello ?

Mez
21st September 2010, 11:33
Eh... come potrei fondere le cose? Farlo multilevel con la classe jQuey?

Amiag
21st September 2010, 12:04
Si intendevo usare quella classe .js dell'esempio

farlo a comparsa/scomparsa solo con HTML liscio come fai ora e' impossibile devi usare per forza javascript

non conosco php benissimo ma per includere un .JS basta stampare il solito tag <script>


Se tu vedi il sorgente di quell'esempio il menu e' un html semplice come il tuo manipolato poi da js :


<div class="glossymenu">
<a class="menuitem" href="http://www.dynamicdrive.com/">Dynamic Drive</a>
<a class="menuitem submenuheader" href="http://www.dynamicdrive.com/style/">CSS Examples</a>
<div class="submenu">
<ul>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C1/">Horizontal CSS Menus</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C2/">Vertical CSS Menus</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C4/">Image CSS</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C6/">Form CSS</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C5/">DIVs and containers</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C7/">Links & Buttons</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/category/C8/">Other</a></li>
<li><a href="http://www.dynamicdrive.com/style/csslibrary/all/">Browse All</a></li>
</ul>
</div>
ETCETC

Mez
21st September 2010, 12:57
Ok, metterlo in un file .php e includerlo nelle pagine ci posso arrivare anche io, il problema sta nel "active link" mi deve rimanere attivo, per far capire alle persone in che sezione sono, di solito lo faccio con "<li class='selected'>" e con il php per rilevare la pagina in cui è

Amiag
21st September 2010, 13:38
Ok, metterlo in un file .php e includerlo nelle pagine ci posso arrivare anche io, il problema sta nel "active link" mi deve rimanere attivo, per far capire alle persone in che sezione sono, di solito lo faccio con "<li class='selected'>" e con il php per rilevare la pagina in cui è

quello lo puoi lasciare come' non dovrebbe dar problemi ...



oppure volendo una cosa simile si puo fare anche da javascript usando le proprieta' location.href o location.pathname
http://www.javascriptkit.com/jsref/location.shtml

Mez
21st September 2010, 14:37
Cioè tu mi dici di tenere il menu fatto da me o quello classico <ul><li></li></ul> ?

Non mastico bene il javascript, ma se mi spieghi bene la "location.href" potrei usare il 2° che mi è più comodo anche, tanto con l'include del php lo piazzo al posto di quello che ho ora...
Potresti farmi un esempio?

Amiag
21st September 2010, 15:07
Anche il tuo usa <ul><li> , sono uguali come struttura html :


echo "<ul>";

while ($inc < $con)
{
if ($pagina == $link[$inc]) // Se la pagina selezionata corrisponde al nome
{
echo "<li class='selected'>" . $nome[$inc] . "</li>\n";
}

Se tu accedi alla tua pagina e guardi l'html dal browser vedrai sono uguali ...


Farlo con javascript invece e' abbastanza piu complicato, ma fondamentalmente devi fare la stessa cosa che fai con php, cioe iterare su tutti gli elementi della lista (gli elementi <li>) e per ognuno fare il controllo

if(location.pathname == (<url del tuo link>))
element.className = "selected"

Mez
21st September 2010, 17:34
Risolto! grazie del tuo aiuto! Praticamente ho usato una via semplice, usato il menu scaricato, modificando i vari link cosi:



<a href=”index.php” class=”<?php if($nomepagina == “index.php”) {echo “attivo”;} else {echo “inattivo”;}; ?>” <span>Home</span></a>
<a href=”link2.php” class=”<?php if($nomepagina == “link2.php”) {echo “attivo”;} else {echo “inattivo”;}; ?>” <span>Home</span></a>


e nel css
.active & .inactive

thx!