[Résolu] déposer un cookie

Bonjour

Je sais créer une boîte modale de mon cru (la spash_boite ne me convient pas totalement) à l’ouverture du site mais je voudrais bien sûr déposer un cookie pour que cette boîte modale ne s’affiche pas à changement de page.
Je ne trouve pas doc pour faire cela.
Une piste ?

je charge le script jquery.cookies.js https://plugins.jquery.com/cookie/ que jai stocké dans un dossier assets/js du dossier squelette

puis il suffit de lancer le script personnalisé

le tout dans le squelette de la page juste avant la fenêtre modale

le nom du cookie est pop. Si pop est null alors on afffiche via bootstrap la modale appelée en_avant
le cookie pop prend alors la valeur 1 pour ne pas afficher le meme jour la fenetre modale à chaque ouverture de la page mais seulement le lendemain du fait de la durée du cookie

en fait j’utilise la bibliothèque jquery pour gérer les cookies et le framework bootstrap pour plein de petites choses dont les fenêtres modales

William

Le 26 août 2024 à 20:53, Jean-Christophe via Discuter de SPIP noreply@discuter.spip.net a écrit :

Jean-Christophe J-C
Août 26

Bonjour

Je sais créer une boîte modale de mon cru (la spash_boite ne me convient pas totalement) à l’ouverture du site mais je voudrais bien sûr déposer un cookie pour que cette boîte modale ne s’affiche pas à changement de page.
Je ne trouve pas doc pour faire cela.
Une piste ?


Voir le sujet ou répondre à ce courriel pour répondre.

Pour vous désabonner de ces courriels, cliquez ici.

Merci beaucoup pour cette piste. Il faudra que je creuse ça même si je n’y connais rien en js.
Néanmoins, ça me gêne un peu que jQuery Cookie soit « This version is old school. » . Pas de risque de ce côté là ?

non le old scholl concerne le serveur, les hébergement se font sur github pour la nouvelle ecole
quant au jcookie il est chargé fonctionne sans problème sur un site

normalement le code que je t’ai envoyé fonctionne tel quel il suffit de mettre à jour le nom de la modal

n’hésite pas à me recontacter

Le 28 août 2024 à 11:54, Jean-Christophe via Discuter de SPIP noreply@discuter.spip.net a écrit :

Jean-Christophe J-C
Août 28

Merci beaucoup pour cette piste. Il faudra que je creuse ça même si je n’y connais rien en js.
Néanmoins, ça me gêne un peu que jQuery Cookie soit « This version is old school. » . Pas de risque de ce côté là ?


Voir le sujet ou répondre à ce courriel pour répondre.

Pour vous désabonner de ces courriels, cliquez ici.

Pas besoin de jquery.cookie, SPIP propose par défaut js-cookie pour ça :slight_smile:

Ah ok, je l’ai trouvé dans /prive/javascript

Donc maintenant je fais comment pour déposer un cookie à l’ouverture de la boîte modale

Au hasard, tu t’inspires du module que tu souhaites dupliquer ?

Bon je ne m’en sors pas.
Je reprendrais ça calmement en octobre car en voyage d’ici là.
Merci à tous.

Hello

Je m’y suis remis et en fouillant sur le web j’ai fait une page modale paramétrable avec cookie avec du html, du php, du js et du spip.
Le code est visible ici modale.html · master · spip-contrib-squelettes / escal · GitLab

Merci de votre aide et de vos conseils.

Si quelqu’un pouvait jeter un coup d’oeil à mon code et me dire ce qu’il en pense, ce serait sympa.
Y a-t-il mieux à faire ? Plus élégant ? Y a-t-il un risque de sécurité ?
D’après mes tests en local, la boîte modale se réaffiche à chaque réouverture de site puis aux 2 ou 3 clics suivants. Mais c’est assez variable. Bref ce n’est pas parfait et je ne comprends pas pourquoi.

Ton code insère du php pour conditionner l’affichage de la boucle, je ne pense pas que ça soit la bonne manière de faire… mais je ne comprend le diagnostic que tu partages.

Ah, donc ça ne marche pas ?
Tu ne le disais pas dans ton message précédent.

Donc elle se réaffiche aux 2 ou 3 clics suivants… Et qu’est ce qu’elle fait après ?

Tout de même, tu poses un cookie à chaque fois, du coup il est toujours là quand tu testes, au moins aux prochaines requêtes ?
Je ne connais pas bien le fonctionnement de setcookie et de $_COOKIE mais en tout cas je trouve ça chelou

En fait je n’y connais rien php et en js. J’ai juste récupéré des bouts de code que j’ai essayé de faire fonctionner.
Ce que je cherche à faire, c’est de déposer un cookie qui expire au bout de X jours. Si pas de cookie, on affiche la boite modale et si le cookie est présent, on ne l’affiche pas.

Quand j’ai fait mes tests hier, tout me semblait ok. Mais ce matin, et de façon aléatoire, la boîte modale réapparaissait parfois. Je viens juste de retester et tout me semble fonctionner correctement.

J’avoue être un peu perdu.

Sans creuser et sans corriger le fait d’insérer du php dans le html (ce qui par principe n’est pas la bonne manière de faire), déjà ne fait pas de setcookie quand le cookie est déjà là, ce que tu testes la ligne d’après. Car sinon, sauf comportement particulier pas impossible de la machine à cookie, ça doit le renouveler à chaque fois et ça ne doit pas arranger tes affaires. C’est à dire déplace la ligne setcookie juste après le else {

Ah oui, logique.
Merci beaucoup.