Precedente :: Successivo |
Autore |
Messaggio |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 04 Giu 2006 17:30 Oggetto: * evidenziare voce menų selezionata |
|
|
Ciao a tutti, qualcuno sa dirmi come fare in menų che una volta cliccato su una determinata voce, questa resti selezionata in modo tale da capire che parte del sito sto visitando?
Ovviamente senza usare javascript... ma solo html e css... (sempre se č possibile)
Grazie
PS: spero di essermi spiegato abbastanza bene..  |
|
Top |
|
 |
ioSOLOio Amministratore


Registrato: 12/09/03 19:01 Messaggi: 16342 Residenza: in un sacco di...acqua
|
Inviato: 04 Giu 2006 18:15 Oggetto: |
|
|
tramite css...
puoi semplicemente creare la classe che definisce come deve essere il menų...quindi crei un id per il menu selezionato
ad esempio:
Codice: |
<A class=mainlevel id=active_menu href="home.htm">Home</A>
<A class=mainlevel href="contattaci.htm">Contattaci</A> |
e nel css
Codice: |
A.mainlevel:link { qua definisci la classe per i link generici del menų
}
#active_menu { qua definisci come vuoi che visivamente sia il link del menų selezionato
} |
|
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 04 Giu 2006 18:45 Oggetto: |
|
|
Si, ho capito, ma questo sistema funziona sicuramente in una pagina html... ma per una php? Intendo dire che se ho un menų che č uguale per 100 pagine, mi conviene usare gli include del php per inserirlo in tutte le pagine, questo per evitare di modificare un mare di volte le pagine. In pratica il menų lo scrivo solo una volta, non credo che il sistema valido per le pagine html pure funzioni... dico bene?  |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 04 Giu 2006 19:56 Oggetto: |
|
|
atigra ha scritto: | Si, ho capito, ma questo sistema funziona sicuramente in una pagina html... ma per una php? Intendo dire che se ho un menų che č uguale per 100 pagine, mi conviene usare gli include del php per inserirlo in tutte le pagine, questo per evitare di modificare un mare di volte le pagine. In pratica il menų lo scrivo solo una volta, non credo che il sistema valido per le pagine html pure funzioni... dico bene?  |
piccola correzione sulla comunque giusta risposta di iosoloio: class="nomeclasse" cioe' aperte e chiuse virgolette (o il validatore s'arrabbia )
tu usi php e' vero, ma cio' che viene servito al client e' una pagina in html (o xhtml) ed e' quella che formatterai col css
da qualche parte nel tuo codice ci sara' il comando che "mette assieme" il tag < a href= "blablabla" >bla< /a > ed e' li' che devi agire, aggiungendo una classe a quel tag a e poi formattandolo di conseguenza 
L'ultima modifica di rebelia il 31 Lug 2006 12:25, modificato 1 volta |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 05 Giu 2006 08:38 Oggetto: |
|
|
In php non c'č nessun problema, quando crei il menu lato server puoi analizzare ad esempio la variabile $_server['SCRIPT_NAME'] e se corrisponde alla voce di menų relativa inserire come suggerito da ioSOLOio e Rebelia la classe apposita per la formattazione grafica. |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 05 Giu 2006 09:04 Oggetto: |
|
|
horus ha scritto: | In php non c'č nessun problema, quando crei il menu lato server puoi analizzare ad esempio la variabile $_server['SCRIPT_NAME'] e se corrisponde alla voce di menų relativa inserire come suggerito da ioSOLOio e Rebelia la classe apposita per la formattazione grafica. |
Mmhhhmmm... provo e vediamo cosa riesco a combinare, al limite vi rompo ancora le scatole.  |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 05 Giu 2006 10:22 Oggetto: |
|
|
Ho capito... ho bisogno ancora di voi.
Dunque, posto il codice che ho fatto:
stile.css
Codice: |
#menu {
width: 100%;
margin: 3px auto 3px auto;
border: none; /*1px solid #2A73F8;*/
}
#menu ul {
list-style: none;
margin: 0px;
padding: 0px;
}
#menu ul li {
display: inline;
margin: 0px;
padding: 12px;
}
#menu a {
color: #0292D9;
font-weight: bold;
text-decoration: none;
}
#menu a:visited {
color: #056788;
}
#menu a:hover {
color: #FFFFFF;
background: #7EDAF8;
}
|
Questo uno dei file .php:
Codice: |
<div id="esterno">
<div id="menu">
<?php include ("menu.txt"); ?>
</div>
<div id="corpo">
questa č <b>index.php</b>
</div>
</div>
|
Questo č menu.txt:
Codice: |
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="utility.php">Utility</a></li>
<li><a href="fotogallery.php">Fotogallery</a></li>
<li><a href="tpr.php">TPR</a></li>
<li><a href="link.php">Links</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
</ul>
|
Non ho capito cosa inserire e dove... soprattutto per quanto riguarda il php. Se avete tempo...  |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 05 Giu 2006 10:35 Oggetto: |
|
|
atigra ha scritto: |
Questo č menu.txt:
Codice: |
<ul>
<li><a href="index.php">Home</a></li>
<li class="attivo"><a href="utility.php">Utility</a></li>
<li><a href="fotogallery.php">Fotogallery</a></li>
<li><a href="tpr.php">TPR</a></li>
<li><a href="link.php">Links</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
</ul>
|
|
Codice: |
.attivo a {color: #000;}
|
edit: pero' non credo tu possa gestire cosi' la cosa, perche' usi il file txt semplicemente come un include percio' lo inserisci uguale in *tutte* le pagine, mentre invece dovresti creare dinamicamente il menu pagina per pagina e nella pagina in uso evidenziare la relativa voce di menu, ma non puoi farlo cosi' come l'hai impostato ora |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 05 Giu 2006 10:44 Oggetto: |
|
|
Acc... quindi la cosa come si potrebbe risolvere? Creare un menų dinamicamente non saprei neppure da dove partire...  |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 05 Giu 2006 11:29 Oggetto: |
|
|
per il php mi sa che devi aspettare che horus passi qua attorno, sorry
cmq se hai soltanto le pagine elencate nel file txt rinuncia all'inclusione e inserisci l'elenco in ogni pagina togliendo il tag a alla pagina in cui ti trovi (nella home togli il tag al punto elenco home etc) |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 05 Giu 2006 11:48 Oggetto: |
|
|
rebelia ha scritto: | per il php mi sa che devi aspettare che horus passi qua attorno, sorry
cmq se hai soltanto le pagine elencate nel file txt rinuncia all'inclusione e inserisci l'elenco in ogni pagina togliendo il tag a alla pagina in cui ti trovi (nella home togli il tag al punto elenco home etc) |
Aspetterō HORUS... č anche vero che per poche pagine si puō pensare di fare come dici tu, rinunciando alla comoditā delle inclusioni. Perō io volevo imparare quel sistema cosė si puō applicare sempre e per tutte le pagine, poche o tante che siano.  |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 05 Giu 2006 12:04 Oggetto: |
|
|
atigra ha scritto: | Perō io volevo imparare quel sistema cosė si puō applicare sempre e per tutte le pagine, poche o tante che siano.  |
e fai bene  |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 05 Giu 2006 12:53 Oggetto: |
|
|
Eccomi.
Dunque, se usi un file txt non puoi fare quello che dicevo io. L'idea č rinominare il file in menu.php in modo che venga interpretato e non solo copiato e poi modificarlo in qualcosa tipo:
Codice: | <?php
// definisce l'array di pagine
$pagine = array ('Home' => 'index.php','Utility' => 'utility.php','Fotogallery' => 'fotogallery.php',...);
// inizia l'elenco
echo '<ul>';
// per ogni elemento dell'array di pagine
foreach ($pagine as $text => $link)
{
// inizia la voce di elenco
echo '<li';
// se sono nella pagina linkata
if ($_server['SCRIPT_NAME'] == $link)
{
// aggiunge la classe appropriata
echo ' class="attivo"';
}
// inserisce link e testo
echo '><a href="' . $link . '">' . $text . '</a></li>';
}
// chiude l'elenco
echo '</ul>';
?> |
Come sempre scrivo di getto senza testare, non garantisco che vada al primo tentativo ma credo sia un buon punto di partenza per i tuoi studi e tentativi. |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 05 Giu 2006 13:20 Oggetto: |
|
|
Ringrazio tutti per la collaborazione. Vi spiego a che punto sono arrivato con la soluzione di Horus.
Il menų funziona perfettamente, l'unica cosa che non va č proprio la funzione "active".
X Horus: io ho rinominato il file menu.txt in menu.php ed inserito il codice che hai postato tu. Poi ho incluso il file menu.php nelle pagine cosė
Codice: |
<?php include ("menu.php"); ?>
|
Che abbia sbagliato l'inclusione?
Meglio se metto tutto il codice delle pagine, che non abbia fatto qualche errore io.
menu.php
Codice: |
<?php
// definisce l'array di pagine
$pagine = array ('Home' => 'index.php','Utility' => 'utility.php','Fotogallery' => 'fotogallery.php','TPR' => 'tpr.php', 'Links' => 'link.php', 'Portfolio' => 'portfolio.php');
// inizia l'elenco
echo '<ul>';
// per ogni elemento dell'array di pagine
foreach ($pagine as $text => $link)
{
// inizia la voce di elenco
echo '<li';
// se sono nella pagina linkata
if ($_server['SCRIPT_NAME'] == $link)
{
// aggiunge la classe appropriata
echo ' class="attivo"';
}
// inserisce link e testo
echo '><a href="' . $link . '">' . $text . '</a></li>';
}
// chiude l'elenco
echo '</ul>';
?>
|
stile.css
Codice: |
body {
background: #FFFFFF;
color: #000000;
text-align: center;
font-family: arial, "century gothic", verdana, sans-serif;
font-size: 80%;
margin: 0px;
padding: 0px;
}
a {
color: #0292D9;
text-decoration: none;
}
a:visited {
color: #056788;
}
a:hover {
color: blue;
text-decoration: none;
}
#esterno {
position: relative; top: 0px;
height: 100%;
width: 100%;
border: none;
margin: 0px auto 0px auto;
}
#menu {
width: 100%;
margin: 3px auto 3px auto;
border: none; /*1px solid #2A73F8;*/
}
#menu ul {
list-style: none;
margin: 0px;
padding: 0px;
}
#menu ul li {
display: inline; /*trasformazione di un elemento blocco in un elemento in linea */
margin: 0px;
padding: 12px;
}
#menu a {
color: #0292D9;
font-weight: bold;
text-decoration: none;
}
#menu a:visited {
color: #056788;
}
#menu a:hover {
color: #FFFFFF;
background: #7EDAF8;
}
#corpo {
height: auto;
width: 100%;
position: relative; /*margin: 10px auto 3px auto;*/
border: none; /*4px solid #06D388;*/
}
#corpo a {
color: #0292D9;
text-decoration: none;
}
#corpo a:visited {
color: #056788;
}
#corpo a:hover {
color: blue;
text-decoration: none; /*underline;*/
}
.attivo a {color: #f7f6f5; background: #ff0000;}
|
le varei pagine (php) hanno:
Codice: |
<div id="esterno">
<div id="menu">
<?php include ("menu.php"); ?>
</div>
<div id="corpo">
questa č <b>index.php</b>
</div>
</div>
|
|
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 05 Giu 2006 13:58 Oggetto: |
|
|
Puō essere che $_server['SCRIPT_NAME'] non abbia il valore sperato (forse c'č anche la cartella), prova a fare da qualche parte in una pagina php:
Codice: | echo $_server['SCRIPT_NAME']; |
e vedi cosa ti scrive, da quello capisci come modificare il controllo
Codice: | if ($_server['SCRIPT_NAME'] == $link) |
per farlo funzionare.
Per capire cosa uno script sbaglia č utile anche il risultato html quindi di una tua pagina eventualmente posta anche quello che arriva al client (tasto destro > HTML) |
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 05 Giu 2006 19:07 Oggetto: |
|
|
Perdonami, ma non sono pratico. Comunque ho provato a mettere quel pezzo di codice in una pagina .php, ecco il risultato
Codice: |
<div id="esterno">
<div id="menu">
<?php include ("menu.php"); ?>
</div>
<div id="corpo">
questa č <b>index.php</b><br /><?php echo $_server['SCRIPT_NAME']; ?>
</div>
</div>
|
Questo il link diretto alla pagina come viene vista dall'utente finale. Non mi pare dia errori...  |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 05 Giu 2006 19:46 Oggetto: |
|
|
non da errori ma in nessun punto del codice e' inserita una classe che ti permetta di formattare il link attivo
Codice: |
<div id="menu">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="utility.php">Utility</a></li>
<li><a href="fotogallery.php">Fotogallery</a></li>
<li><a href="tpr.php">TPR</a></li>
<li><a href="link.php">Links</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
</ul>
</div>
|
il tuo codice invece dovrebbe essere qualcosa del tipo:
Codice: |
<div id="menu">
<ul>
<li><a class="attivo" href="index.php">Home</a></li>
<li><a href="utility.php">Utility</a></li>
<li><a href="fotogallery.php">Fotogallery</a></li>
<li><a href="tpr.php">TPR</a></li>
<li><a href="link.php">Links</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
</ul>
</div>
|
oppure:
Codice: |
<div id="menu">
<ul>
<li class="attivo"><a href="index.php">Home</a></li>
<li><a href="utility.php">Utility</a></li>
<li><a href="fotogallery.php">Fotogallery</a></li>
<li><a href="tpr.php">TPR</a></li>
<li><a href="link.php">Links</a></li>
<li><a href="portfolio.php">Portfolio</a></li>
</ul>
</div>
|
|
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 06 Giu 2006 09:26 Oggetto: |
|
|
Credo mi sia scappato un minuscolo di troppo, ho la fobia per quel tipo di carattere, prova a mettere:
Codice: | $_SERVER['SCRIPT_NAME'] |
|
|
Top |
|
 |
atigra Semidio

Registrato: 21/09/05 11:14 Messaggi: 249
|
Inviato: 06 Giu 2006 12:08 Oggetto: |
|
|
Ok, scrivendolo in maiuscolo non risolvo il problema dell'evidenziare la voce del menų, comunque qui vedi cosa mi restituisce scrivendo
Codice: |
$_SERVER['SCRIPT_NAME']
|
|
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 06 Giu 2006 12:39 Oggetto: |
|
|
OK, ora č giusto ma c'č ancora il path mentre nel menų i link non ce l'hanno, puoi correggere cosė:
Codice: |
if (substr($_server['SCRIPT_NAME'],strrpos($_server['SCRIPT_NAME'],'/')+1) == $link) |
|
|
Top |
|
 |
|