1 – Pré-requis
Vous devez tout d’abord télécharger Jquery ainsi que le javascript de gestion des cookies.
Vous devez insérer le code suivant pour prendre en compte ces fichiers javascript.
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="js/jquery.cookie.js"></script>
$.cookie('cookie'); // récupérer cookie
$.cookie('cookie', 'valeur'); // créer un cookie avec une valeur
$.cookie('cookie', 'valeur'', { expires: 7 }); // créer un cookie avec une expiration dans 7 jours
$.cookie('cookie', '', { expires: -1 }); // effacer cookie
2 – Deux affichages différents pour les news
Voici un code basique permettant de créer un affichage normal de news comportant un titre, une image et un contenu; un second affichage de type liste ou seul le titre est présent.
<div class="normal"> <p>Titre du poste </p> <p><img src="images/zorrito.png" width="48" height="48" alt="zorrito" style="float:left;"/>Texte Texte Texte Texte Texte Texte Texte</p> <p>Texte Texte Texte Texte Texte Texte Texte</p> <p>Titre du poste 1 </p> <p><img src="images/zorrito.png" width="48" height="48" alt="zorrito" style="float:left;"/>Texte Texte Texte Texte Texte Texte Texte</p> <p>Texte Texte Texte Texte Texte Texte Texte</p> </div> <div class="liste"> <p>Titre du poste </p> <p>Titre du poste 1 </p> </div>
3 – Gestion de l’affichage lors de l’accès au site
Il va falloir récupérer le cookie et stocker la valeur de ce dernier dans une variable javascript.
<script type="text/javascript">
var affichage = $.cookie('swap_tuto'); //variable permettant de savoir le style de l'affichage
if (affichage == null) { var affichage = 'normal';} // si aucun cookie est créé, on aura un affichage standard par défaut.
if (affichage == 'normal') {$(document).ready(function(){ //si on a quitté sur un affichage normal on reviendra sur un affichage normal
$("a.changer_vue_avec").removeClass("swap");
$('div.liste').hide();
});}
if (affichage == 'liste') {$(document).ready(function(){
$("a.changer_vue_avec").addClass("swap");
$('div.normal').hide();
}); }
<script>
3 – Création du cookie suivant l’affichage sélectionné
Suivant le type d’affichage que nous aurons choisi, nous allons attribuer une valeur au cookie correspondant à la vue choisie.
$(document).ready(function(){
$("a.changer_vue_avec").toggle(function(){
if (affichage == 'normal')
{
$(this).addClass("swap");
$('div.normal').fadeOut('fast');
$('div.liste').fadeIn('fast');
$.cookie('swap_tuto', 'liste',{ expires: 99 });
}
if (affichage == 'liste')
{
$(this).removeClass("swap");
$('div.liste').fadeOut('fast');
$('div.normal').fadeIn('fast');
$.cookie('swap_tuto', 'normal',{ expires: 99 });
}
}, function () {
if (affichage == 'normal')
{
$(this).removeClass("swap");
$('div.liste').fadeOut('fast');
$('div.normal').fadeIn('fast');
$.cookie('swap_tuto', 'normal',{ expires: 99 });
}
if (affichage == 'liste')
{
$(this).addClass("swap");
$('div.normal').fadeOut('fast');
$('div.liste').fadeIn('fast');
$.cookie('swap_tuto', 'liste',{ expires: 99 });
}
});
});
4 – Conclusion, démo et fichiers
J’espère que ce tutorial vous aura été utile.
Vous pouvez télécharger les fichiers d’example et voir une démo.
Lorsque vous testez la démo, changer de vue, et rafraichissez votre page pour voir l’effet des cookie (sauvegarde ou non de votre vue)












hugoqbd
étrangement les tutoriels sur les cookies combiné à jQuery sont assez rares. Donc merci !
nikita
Merci beaucoup , je cherchais ça depuis un moment
David
Très bon tutoriel ! Est-il possible de réaliser la même chose si l’internaute à choisi de fermer une div (style post-it, que l’on peut faire disparaître grâce à jQuery)? J’imagine que oui, on le voit par exemple sur Facebook, après je pense qu’ils se servent de leur BDD pour sauvegarder les actions de l’internaute et non un cookie.
zorrito
Bien sur que cela est possible.
Après comme tu dis sur facebook, cela doit être stocké dans une bdd et c’est préférable, notamment si un utilisateur efface ses cookies ca pourrait vite être l’anarchie :)
On peux imaginer qu’à la création d’un post-it, on stocke en bdd une information quant à la visibilité du « post-it »
Lors de la fermeture de ce div, on lui fait modifier la valeur de la visibilité dans la bdd et on la passe à 0.
Ce post it ne s’ouvrira donc plus.