menu con sfondo dinamico

Discussioni inerenti lo sviluppo di markup XHTML e CSS validi.

Moderatori: antoscarface, Kagemitsu

Regole del forum
Per scrivere del codice all'interno di ogni post, utilizzare il tag: [syntax=il_linguaggio]codice[/syntax] sostituendo "il_linguaggio" con il linguaggio del codice che dovete inserire, ad esempio: html, css, javascript, php, asp, ecc...

menu con sfondo dinamico

Messaggioda luke » martedì 15 marzo 2011, 9:57

Ciao

Ho seguito il tutorial su come sviluppare un sito in corporate style:

http://www.yourinspirationweb.com/examp ... corporate/

Una volta sistemato tutto il layout questo deve essere
lo stesso per tutte le pagine del sito.

Per richiamare la stessa struttura su tutte le pagine si usano gli include con
le classiche suddivisioni in header, menu, content e footer ecc ecc.

Vorrei inserire tra l'include dell'header un menu in uno stile simile a quello del tutorial di cui sopra
con lo sfondo il rettangolino con bordi arrotondato e sfondo azzurrino,
questo per intenderci

Immagine

Vorrei fare in modo che questo sfondo sia disponibile (in modo dinamico visto che il menu lo devo inserire tra l'include in quanto
elemento fisso per ogni pagina del sito) per tutte le pagine.
Ad esempio se è selezionata la pagina "profile" lo sfondo del link sia visibile per questa e per le altre no.

Come posso ottenere una cosa del genere?

Devo ricorrere a javascript?


Grazie
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Re: menu con sfondo dinamico

Messaggioda luke » giovedì 17 marzo 2011, 13:34

niente?
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Re: menu con sfondo dinamico

Messaggioda antoscarface » giovedì 17 marzo 2011, 15:52

se ho capito quello che chiedi, devi ricorrere al linguaggio lato server più che altro. Inserisci dentro un array gli elementi della navigazione e poi tramite un foreach elabori l'array, stampando di volta in volta l'elemento, controllando che sia uguale alla pagina corrente. In sostanza, una cosa del genere:
Sintassi: php [ Scarica ] [ Nascondi ]
  1. <?php
  2. // ti crei l'array, da includere su tutte le pagine
  3. $nav_items = array(
  4.     'Home' => 'index.php',
  5.     'Profile' => 'profile.php',
  6.     'Services' => 'services.php',
  7.     'Patners' => 'patners.php'
  8. );
  9.  
  10. // crei una variabile con ilnome della pagina attuale
  11. $actual_page = basename(__FILE__);
  12. ?>
  13.  
  14. <ul>
  15. <?php
  16.     foreach( $nav_items as $name => $link )
  17.     {
  18.         // controlli se la pagina che stai processando dall'array, sia quella attuale.. in caso affermativo, aggiunge una classe 'current' che andrai a formattare nel css, in base a quello che ti serve
  19.         if( $link == $actual_page )  
  20.             $current = ' class="current"';
  21.         else  
  22.             $current = '';
  23.  
  24.         echo "<li><a href=\"$link\">$name</a></li>";
  25.     }
  26. ?>
  27. </ul>
  28.  
antoscarface

Amministratore

Avatar utente
 
Messaggi: 723
Iscritto il: giovedì 21 gennaio 2010, 1:08
Località: Siracusa

Re: menu con sfondo dinamico

Messaggioda luke » giovedì 17 marzo 2011, 18:48

antoscarface ha scritto:se ho capito quello che chiedi, devi ricorrere al linguaggio lato server più che altro. Inserisci dentro un array gli elementi della navigazione e poi tramite un foreach elabori l'array, stampando di volta in volta l'elemento, controllando che sia uguale alla pagina corrente. In sostanza, una cosa del genere:
Sintassi: php [ Scarica ] [ Nascondi ]
  1. <?php
  2. // ti crei l'array, da includere su tutte le pagine
  3. $nav_items = array(
  4.     'Home' => 'index.php',
  5.     'Profile' => 'profile.php',
  6.     'Services' => 'services.php',
  7.     'Patners' => 'patners.php'
  8. );
  9.  
  10. // crei una variabile con ilnome della pagina attuale
  11. $actual_page = basename(__FILE__);
  12. ?>
  13.  
  14. <ul>
  15. <?php
  16.     foreach( $nav_items as $name => $link )
  17.     {
  18.         // controlli se la pagina che stai processando dall'array, sia quella attuale.. in caso affermativo, aggiunge una classe 'current' che andrai a formattare nel css, in base a quello che ti serve
  19.         if( $link == $actual_page )  
  20.             $current = ' class="current"';
  21.         else  
  22.             $current = '';
  23.  
  24.         echo "<li><a href=\"$link\">$name</a></li>";
  25.     }
  26. ?>
  27. </ul>
  28.  


Penso di aver capito. Grazie.

Ma nel codice sopra non manca qualcosa?

Sintassi: php [ Scarica ] [ Nascondi ]
  1. ..
  2. if( $link == $actual_page )  
  3.             $current = ' class="current"';
  4.         else  
  5.             $current = '';
  6.  
  7.         echo "<li><a href=\"$link\">$name</a></li>";
  8.  
  9. ........
  10.  


Non dovrebbe essere riportato nell'echo il risultato del controllo della condizione if?
Una cosa del genere insomma (magari mi sbaglio):

echo "<li><a href=\"$link\" $current>$name</a></li>";

Grazie
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Re: menu con sfondo dinamico

Messaggioda antoscarface » venerdì 18 marzo 2011, 1:34

si esatto, scusami... mi era sfuggito! :)
antoscarface

Amministratore

Avatar utente
 
Messaggi: 723
Iscritto il: giovedì 21 gennaio 2010, 1:08
Località: Siracusa

Re: menu con sfondo dinamico

Messaggioda luke » venerdì 18 marzo 2011, 10:38

antoscarface ha scritto:si esatto, scusami... mi era sfuggito! :)


Figurati! Grazie ancora a te per la dritta.

Appena torno a casa provo la soluzione con gli include php.

Ciao
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Re: menu con sfondo dinamico

Messaggioda luke » venerdì 18 marzo 2011, 11:36

Sono riuscito a provare il codice, ma c'è un problema

La variabile:

$actual_page = basename(__FILE__);

mi restituisce sempre header.php visto che ho inserito il menu nell'header.
Come si può risolvere?

Grazie
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Re: menu con sfondo dinamico

Messaggioda luke » venerdì 18 marzo 2011, 16:50

al momento ho risolto
inserendo

$actual_page = basename(__FILE__);

ad inizio di ogni pagina ancor prima dell'include che richiama l'header, ma non mi piace tanto come soluzione.
ma se non si può fare alternativamente.........

grazie
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Re: menu con sfondo dinamico

Messaggioda antoscarface » sabato 19 marzo 2011, 11:36

prova con
Sintassi: php [ Scarica ] [ Nascondi ]
  1. $actual_page = basename( $_SERVER['PHP_SELF'] );

da inserire solo in header.php
antoscarface

Amministratore

Avatar utente
 
Messaggi: 723
Iscritto il: giovedì 21 gennaio 2010, 1:08
Località: Siracusa

Re: menu con sfondo dinamico

Messaggioda luke » martedì 22 marzo 2011, 1:01

antoscarface ha scritto:prova con
Sintassi: php [ Scarica ] [ Nascondi ]
  1. $actual_page = basename( $_SERVER['PHP_SELF'] );

da inserire solo in header.php



Ottimo! Grazie.
luke

Avatar utente
 
Messaggi: 19
Iscritto il: giovedì 17 febbraio 2011, 11:29

Prossimo

Torna a XHTML & CSS



cron