Version 4 — Novembre 2022 — 41.243.xx.xx
Objectif : ouvrir une boîte modale sur n’importe quelle page en javascript, avec pose d’un cookie pour ne l’afficher qu’une seule fois, et au moyen des outils de base fournis avec SPIP.
[Erreur...15]Il est possible de configurer l’affichage d’une modale « splash » dans ?exec=configurer_mediabox, mais elle s’affichera sur n’importe quelle page du site, on cherche à avoir quelque chose d’un peu plus souple.
NB : ce sont des notes en vrac
<blockquote class="spip_poesie">
«
<blockquote class="spip_poesie"> </blockquote>»
<cadre>
<cadre>
<cadre>
<cadre>
<cadre>
<cadre>
<cadre>
<cadre>
<cadre class='spip'>
<cadre class='php'>
<var><samp>Hacker protector</samp></var>
Pour la modale, on utilise la mediabox [mediabox->https://contrib . spip.net/MediaBox] tout simplement.
Dans cet exemple, le contenu de la modale sera dans un squelette à part « modale.html », qui contient le contenu d’un article / page unique :
<BOUCLE_modale(ARTICLES) {page = #ENV{pageunique}}>
<h1>#TITRE</h1>
#TEXTE
etc.
</BOUCLE_modale>
Ensuite, on ne veut afficher cette modale que sur une rubrique disposant d’une certaine composition, et que si l’article associé existe.
Dans le <head>
du squelette de la rubrique, on ajoute un script inline.
Au premier affichage de la modale, on pose un cookie avec une durée de N jours.
NB : pour cet exemple, il s’agit de l’inclusion head/rubrique.html
de z-core, à cet endroit jQuery n’est pas encore chargé, c’est pourquoi on met window.onload
au lieu de $(document).ready
ou autre.
On utilise également le paramètre var_zajax=content
de zcore.
<BOUCLE_rubrique_head(RUBRIQUES){id_rubrique}>
<BOUCLE_modale(ARTICLES) {page=truc} {0,1} {si #COMPOSITION|=={machin}}>
<script>
window.onload = function (){
var cookie_modale = 'modalsplash_rubrique_[(#_rubrique_head:COMPOSITION)]';
if (!Cookies.get(cookie_modale)) {
$.fn.mediabox({
href: '[(#URL_PAGE{modale}|parametre_url{pageunique,#PAGE,&}|parametre_url{var_zajax,content,&})]',
title: '#TITRE',
minHeight: '75%',
onComplete: Cookies.set(cookie_modale, 'ok', { expires: 14 }),
});
}
}
</script>
</BOUCLE_modale>
<BOUCLE_rubrique_head>