2009-10-24 3 views
0

Je pense que j'aurai besoin d'utiliser javascript pour le faire, donc je l'ai mis ici sur le débordement de la pile. Donc, j'ai deux thèmes pour mon site web, la seule différence est que l'un est une couleur unie (arrière-plan), l'autre une image répétée, donc je n'ai pas fait de fichiers css séparés pour eux. J'ai deux liens dans la barre de navigation qui changent (avec javascript). Dans le fichier CSS, c'est la couleur unie, donc quand la page se charge, elle commence comme ça. Lorsque le lien du thème de l'image est cliqué, il définit le document.body.backgroundImage sur l'image et lorsque le lien du thème de couleur unie est pressé, il définit simplement l'image de fond sur "" (vide), de sorte que vous puissiez voir la couleur . Donc, comment puis-je rendre le thème persistant, ne pas changer quand l'utilisateur va à une autre page, et quand ils reviennent une autre fois. Merci.Gardez le même thème de site Web .. cookies?

EDIT: Je peux utiliser PHP ou javascript.

+0

Je recommanderais une solution basée sur PHP car le thème original sera visible jusqu'à ce que la page se charge et que le javascript finisse d'être exécuté. – donohoe

+0

J'utilise javascript pour définir les coookies, et php pour les charger. J'utilise javascript car il est facile de l'exécuter quand un lien est cliqué. – mk12

Répondre

2

Si vous utilisez tous les javascript et ne pas le code de Serverside à travailler avec, voici un exemple JS pour définir et lire un cookie:

Ajouter cette fonction à votre JS, puis l'exécuter lorsque le thème est changé:

function set_theme(name){ 
    document.cookie='sel_theme='+name+';'; 
    }//so, run set_theme('whatevername'); when it is set by the user 

Pour lire le cookie et définir le thème de la charge de la page (en utilisant jQuery ou $ similaire (document) de .ready() serait mieux que onload, bien, mais voici un js/dom droit exemple)

window.onload=function(){ 
var cookie_pos=document.cookie.indexOf('sel_theme=');//locate value in cookie 
if(cookie_pos!=-1){//if string was found 
    var cookie_flavor=substr(cookie_pos+10,document.cookie.indexOf(';',cookie_pos));//extract the value of the cookie 
    /*then run your already existing change theme function using the extracted name*/ 
    }  
+0

Merci, je vais essayer ça demain. – mk12

+0

Très bien, je noterai aussi que vous pouvez faire javascript: alert (document.cookie) dans la barre d'adresse ou tapez document.cookie dans la console dans firebug pour voir le contenu actuel des cookies. – JAL

+0

Je pourrais aussi utiliser PHP. Serait-ce mieux que javascript? Si oui, comment le ferais-je en PHP? – mk12

0

Vous pouvez utiliser une session pour suivre les préférences de l'utilisateur sur le serveur. Lorsque l'utilisateur revient et a sélectionné un thème (que vous pouvez déterminer à partir des variables de session), le serveur fournit le code HTML dont backgroundImage est défini au lieu d'une couleur unie. Lorsque l'utilisateur bascule les préférences, vous pouvez envoyer une requête ajax qui met à jour les variables de session.

+0

Pourriez-vous expliquer un peu plus comment faire cela? – mk12

+1

Cela dépend beaucoup du codage côté serveur. Utilisez-vous un CMS ou un framework comme Joomla ou Drupal, une plate-forme de blogs ou quelque chose du genre, et utilise-t-il PHP ou similaire? J'ai ajouté un exemple JS si vous n'avez aucun contrôle ou expérience en modifiant le code côté serveur mais je suis d'accord, le faire côté serveur est une meilleure solution (vous pouvez combiner les deux aussi, définir le cookie avec JS comme je décris et puis lisez-le avec PHP et imprimez le bon thème en premier lieu) – JAL

+0

Je peux utiliser php, mais d'autres alors que c'est maintenant tout simplement html et javascript. – mk12

Questions connexes