Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* cambiare il colore di background " al volo"
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
xbandx
Eroe
Eroe


Registrato: 31/05/06 21:12
Messaggi: 41

MessaggioInviato: 12 Mar 2010 19:04    Oggetto: * cambiare il colore di background " al volo" Rispondi citando

salve ho incontrato questo sito per caso [link rimosso] e mi piace un sacco la modalita' di cambio del colore di background che ha implementato.(vedi in alto a dx i tre quadratini)
Pero' non ho capito come replicarlo, qualcuno riesce a spiegarmelo?

grazie a tutti
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 12 Mar 2010 20:28    Oggetto: Rispondi citando

Ciao,
secondo me funziona così:
1) i quadratini sono link che puntano ad uno script che setta in una variabile di sessione il tipo di foglio stile
2) esiste una variabile di sessione che memorizza la pagina aperta in quel momento
3) lo script del punto 1 quando viene eseguito sceglie il foglio stile in base all'id passato (ogni quadretto ha un suo id) e lo scrive nalla var di sessione; poi fa un redirect verso l'ultima pagina visitata dall'utente (la conosce perchè c'è la var in sessione)
4) ogni pagina quando si carica controlla che foglio stile usare in base alla solita var in sessione.

In pratica hai due var in sessione: una per lo stile e l'altra per l'ultima pagina aperta.

Alternativa alla sessione sono i cookies.

Si può fare lo stesso giochino con javascript+cookies; sicuramente la soluzione è più elegante dal punto di vista della programmazione però se uno ha javascript disabilitato la cosa non funziona.
Si potrebbe quindi fare una cosa stupenda ossia si lavora con javascript creando uno script non invasivo e si preparano i link dei quadretti nel modo usuale. Al caricamento lo script js parte e cambia il comportamento dei link in modo da avere le 3 (o un altro numero) chiamate a seconda dello stile.
Se js fosse disabilitato (o non supportato) lo script non farebbe nulla quindi i quadretti funzionerebbero come ti ho illustrato prima.

Ovviamente questa è la soluzione più complicata.

@tutti quanti: per il link contatta me o xbandx in privato, grazie.
Top
Profilo Invia messaggio privato
xbandx
Eroe
Eroe


Registrato: 31/05/06 21:12
Messaggi: 41

MessaggioInviato: 12 Mar 2010 20:36    Oggetto: Rispondi citando

be ho visto che ne sai a pacchi....riusciresti a spiegarmi con un piccolo esempio in php?
grazie mille
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 12 Mar 2010 21:12    Oggetto: Rispondi citando

Giusto due righe al volo.
La cosa va migliorata, sia chiaro però almeno illustra il meccanismo che avevo in mente.
Prima cosa, due fogli stile nella dir "/css"

style_1.css
Codice:

@CHARSET "UTF-8";
body
{
   background-color: #000000;
}
h1
{
   color: #FFFFFF;
}

style_2.css
Codice:

@CHARSET "UTF-8";
body
{
   background-color: #FFFFFF;
}
h1
{
   color: #000000;
}

nota i nomi dei files: terminano per "_" seguito da un numero che guarda caso sarà l'id del foglio.

Lo swapper nella dir "/"
swap_style.php
Codice:

<?php
session_start();  // apre la sessione; se è già aperta prosegue in quella.
$_SESSION['style']=$_REQUEST['id'];  // metto in sessione l'id passato in querystring
$page=isset($_SESSION['page']) ? $_SESSION['page'] : '/uno.php';  // memorizzo la pagina di provenienza e se non c'è imposto /uno.php
header('Location: ' . $page);  // ridireziono alla pagina
exit;
?>


i due files di esempio sempre in "/"

uno.php
Codice:

<?php
   session_start();
   $_SESSION['page']=$_SERVER['PHP_SELF'] . '?' .$_SERVER['QUERY_STRING'];
   $style=isset($_SESSION['style']) ? $_SESSION['style'] : '1';
?>
<html>
   <head>
      <link href="<?php print '/css/style_' . $style . '.css';?>" rel="stylesheet" type="text/css" media="screen" />
   </head>
   <title>
   </title>
   <body>
      <h1>Pagina 1</h1>
      <a href="/swap_style.php?id=1">Stile 1</a><br/>
      <a href="/swap_style.php?id=2">Stile 2</a>
      
      <br/><br/><a href="/due.php">Vai a pagina 2</a>
   </body>
</html>

due.php
Codice:

<?php
   session_start();
   $_SESSION['page']=$_SERVER['PHP_SELF'] . '?' .$_SERVER['QUERY_STRING'];
   $style=isset($_SESSION['style']) ? $_SESSION['style'] : '1';
?>
<html>
   <head>
      <link href="<?php print '/css/style_' . $style . '.css';?>" rel="stylesheet" type="text/css" media="screen" />
   </head>
   <title>
   </title>
   <body>
      <h1>Pagina 2</h1>
      <a href="/swap_style.php?id=1">Stile 1</a><br/>
      <a href="/swap_style.php?id=2">Stile 2</a>
      
      <br/><br/><a href="/uno.php">Vai a pagina 1</a>
   </body>
</html>

Le due pagine funzionano nello stesso modo:
1) aprono la sessione e se è già aperta si appoggiano a quella.
2) impostano il loro indirizzo nella var di sessione 'page'
3) prelevano dalla sessione l'id dello stile.
L'indirizzo del css viene generato da php in modo dinamico componendo il nome con la parte comune + la variabile di sessione.

Il resto è ovvio: i link per cambiare lo stile puntano allo swapper e gli passano l'id corretto. Lui imposterà la sessione e rimanderà alla pagina chiamante che caricherà lo stile in base alla sessione.

Se usi i link "vai a pagina 1" e "vai a pagina 2" vedrai che lo stile impostato in una viene mantenuto nell'altra.

E' una cosina al volo, giusto per darti una dritta.Si può migliorare e anche di molto.

Scappo... bau
Top
Profilo Invia messaggio privato
xbandx
Eroe
Eroe


Registrato: 31/05/06 21:12
Messaggi: 41

MessaggioInviato: 13 Mar 2010 13:37    Oggetto: Rispondi citando

yes yes yes!! grazie mille era quello che cercavo!! ora ci monto su il resto del sito!!
grazie
Top
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 13 Mar 2010 14:37    Oggetto: Rispondi

ok!
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi