TUTORIEL – Installer un formulaire Divi avec compteur de places et bouton Reset
Étape 1 – Accéder à votre page Divi
-
- Connectez-vous à votre tableau de bord WordPress.
- Ouvrez la page où vous souhaitez ajouter votre formulaire.
- Cliquez sur « Activer le Visual Builder ».
Étape 2 – Ajouter un Formulaire de contact Divi
-
- Cliquez sur « + » Ajouter un nouveau module.
- Sélectionnez « Formulaire de Contact » dans la liste.
- Configurez les champs que vous souhaitez (Nom, Email, Téléphone, etc.).
- Cliquez sur l’onglet Avancé > ID et Classes CSS.
- Dans la case ID CSS, entrez un identifiant unique, par exemple :
formulaire-gymnaste
⚠️ Règles :
-
Pas d’espaces
-
Pas d’accents
-
Chaque formulaire doit avoir un ID différent
Étape 3 – Ajouter le Compteur de places
-
- Juste au-dessus ou en-dessous de votre formulaire, ajoutez un Module Code.
- Collez dans ce module le code du compteur correspondant au formulaire.
🔵 Le code ci-dessous (exemple pour « Gymnaste »).
Assurez-vous que les IDs dans le code correspondent bien à l’ID CSS donné au formulaire.
<!-- Bloc Compteur Gymnaste -->
<div id="compteur-formulaire-gymnaste" class="compteur-box">
<p><strong>Places restantes :</strong> <span id="places-formulaire-gymnaste">10</span></p>
<p id="waitlist-formulaire-gymnaste" style="display:none;">Plus de places disponibles. Inscription sur liste d'attente.</p>
<!-- BOUTON RESET (caché au début) -->
<button id="reset-formulaire-gymnaste" style="display:none;">🔄 Réinitialiser ce compteur</button>
</div>
<style>
/* 🎨 Style simple */
.compteur-box {
margin: 20px 0;
font-family: 'Arial', sans-serif;
text-align: left;
}
.compteur-box p {
margin: 5px 0;
font-size: 16px;
color: #333;
}
/* Message liste d'attente */
#waitlist-formulaire-gymnaste {
font-size: 16px;
color: red;
margin-top: 8px;
}
/* Bouton reset */
#reset-formulaire-gymnaste {
margin-top: 15px;
padding: 8px 15px;
background-color: #e74c3c;
color: white;
border: none;
border-radius: 5px;
font-size: 14px;
cursor: pointer;
}
</style>
<script>
// 🎯 Paramètres personnalisables
const placesMaxFormulaireGymnaste = 10;
const messageListeAttenteGymnaste = "Plus de places disponibles. Inscription sur liste d'attente.";
let placesFormulaireGymnaste = localStorage.getItem('placesFormulaireGymnaste') !== null
? parseInt(localStorage.getItem('placesFormulaireGymnaste'))
: placesMaxFormulaireGymnaste;
// Mise à jour de l'affichage
function majAffichageFormulaireGymnaste() {
document.getElementById('places-formulaire-gymnaste').innerText = placesFormulaireGymnaste;
if (placesFormulaireGymnaste <= 0) {
document.getElementById('places-formulaire-gymnaste').parentElement.style.display = 'none';
document.getElementById('waitlist-formulaire-gymnaste').innerText = messageListeAttenteGymnaste;
document.getElementById('waitlist-formulaire-gymnaste').style.display = 'block';
} else {
document.getElementById('places-formulaire-gymnaste').parentElement.style.display = 'block';
document.getElementById('waitlist-formulaire-gymnaste').style.display = 'none';
}
}
document.addEventListener('DOMContentLoaded', function() {
majAffichageFormulaireGymnaste();
// Cibler le bon formulaire via son ID CSS personnalisé
const formulaireGymnaste = document.querySelector('#formulaire-gymnaste form');
if (formulaireGymnaste) {
formulaireGymnaste.addEventListener('submit', function() {
setTimeout(() => {
if (placesFormulaireGymnaste > 0) {
placesFormulaireGymnaste--;
localStorage.setItem('placesFormulaireGymnaste', placesFormulaireGymnaste);
majAffichageFormulaireGymnaste();
}
}, 500);
});
}
// Gestion du bouton Reset
const boutonReset = document.getElementById('reset-formulaire-gymnaste');
if (window.location.search.includes('admin=1')) {
boutonReset.style.display = 'inline-block';
}
boutonReset.addEventListener('click', function() {
if (confirm("Voulez-vous vraiment remettre ce compteur à zéro ?")) {
localStorage.removeItem('placesFormulaireGymnaste');
placesFormulaireGymnaste = placesMaxFormulaireGymnaste;
majAffichageFormulaireGymnaste();
alert('Compteur Gymnaste réinitialisé !');
boutonReset.style.display = 'none'; // cacher après reset
}
});
});
</script>
Étape 4 – Modifier les paramètres (messages, couleurs, police…)
Dans votre Module Code, vous pouvez facilement personnaliser :
Ce que vous souhaitez changer | Où le changer |
---|---|
Nombre de places | Dans la ligne :const placesMaxFormulaireGymnaste = 10; (modifiez le chiffre 10 ) |
Message liste d’attente | Dans la ligne :const messageListeAttenteGymnaste = "Plus de places disponibles. Inscription sur liste d'attente."; (modifiez le texte entre guillemets) |
Couleur du texte principal | Dans le bloc <style> , ligne :color: #333; (modifiez #333 par la couleur souhaitée, exemple : #000000 pour noir) |
Couleur du message de liste d’attente | Dans la ligne CSS :#waitlist-formulaire-gymnaste { color: red; } (modifiez red par la couleur de votre choix) |
Police d’écriture | Dans :font-family: 'Arial', sans-serif; (remplacez 'Arial' par la police désirée, par exemple 'Roboto' , 'Open Sans' , etc.) |
Taille du texte | Dans :font-size: 16px; (modifiez 16px à votre convenance, par exemple 18px , 20px …) |
Étape 5 – Afficher le bouton Reset uniquement pour vous (Admin)
-
- Par défaut, le bouton Reset est invisible pour tout le monde.
- Pour vous permettre d’afficher ce bouton :
Il suffit d’ajouter ?admin=1
à la fin de votre URL.
Exemple :
-
URL normale ➔
https://fsg-carouge.anouchkamoritz-studio.ch/formulaire-dinscription-parents-enfants/
- URL Admin (affiche le bouton Reset) ➔
https://fsg-carouge.anouchkamoritz-studio.ch/formulaire-dinscription-parents-enfants/?admin=1
✅ En utilisant cette URL, le bouton Reset deviendra visible uniquement pour vous.
Étape 6 – Réinitialiser le compteur
-
- Ouvrez votre page avec l’URL incluant
?admin=1
. - Cliquez sur le bouton « 🔄 Réinitialiser ce compteur » qui apparaît sous votre formulaire.
- Confirmez votre choix dans la boîte de dialogue qui s’affiche.
- Le compteur sera immédiatement remis à son nombre initial.
- Ouvrez votre page avec l’URL incluant
Remarques importantes
- Un ID CSS unique est nécessaire pour chaque formulaire. (Ex :
formulaire-gymnaste
,formulaire-responsable
, etc.) - Vous pouvez ajouter autant de formulaires que vous souhaitez sur une même page, il suffit de dupliquer le code et de changer les IDs correspondants.
- Le bouton Reset reste totalement invisible pour les visiteurs classiques, garantissant la sécurité du système.
Remplacer une partie du code
-
- Ouvrez le Module Code Divi dans lequel vous avez déjà inséré le script (lié à votre formulaire Zumba).
- Repérez dans le code la fonction nommée :
https://fsg-carouge.anouchkamoritz-studio.ch/formulaire-function majAffichageFormulaireZumba() {
...
}
3 Supprimez tout le contenu de cette fonction, puis remplacez-le par le code suivant :
function majAffichageFormulaireZumba() {
const compteurSpan = document.getElementById('places-formulaire-zumba');
const boutonEnvoyer = document.querySelector('#formulaire-zumba button[type="submit"]');
compteurSpan.innerText = placesFormulaireZumba;
if (placesFormulaireZumba <= 0) {
compteurSpan.parentElement.style.display = 'none';
document.getElementById('waitlist-formulaire-zumba').innerText = messageListeAttenteFormulaireZumba;
document.getElementById('waitlist-formulaire-zumba').style.display = 'block';
// 🔴 Désactiver le bouton d’envoi
if (boutonEnvoyer) {
boutonEnvoyer.disabled = true;
boutonEnvoyer.style.opacity = '0.6';
boutonEnvoyer.style.cursor = 'not-allowed';
boutonEnvoyer.innerText = "Inscriptions closes";
}
} else {
compteurSpan.parentElement.style.display = 'block';
document.getElementById('waitlist-formulaire-zumba').style.display = 'none';
// ✅ Réactiver le bouton s’il a été désactivé
if (boutonEnvoyer) {
boutonEnvoyer.disabled = false;
boutonEnvoyer.style.opacity = '1';
boutonEnvoyer.style.cursor = 'pointer';
boutonEnvoyer.innerText = "Envoyer";
}
}
}
Que fait ce code exactement ?
🎯 Action | ✅ Résultat |
---|---|
Le quota est atteint (ex. 10 inscriptions) | Le bouton « Envoyer » devient inactif, grisé, et le texte change en « Inscriptions closes » |
Un utilisateur tente d’envoyer le formulaire après quota | ❌ Le bouton est bloqué, aucune action possible |
L’administrateur utilise le bouton Reset | ✅ Le compteur revient à la valeur initiale et le bouton devient à nouveau actif automatiquement |
-
-
Cette méthode ne bloque que l’envoi du formulaire côté utilisateur.
-
Elle est fiable pour empêcher des inscriptions sur un même appareil, mais ne synchronise pas le quota entre utilisateurs (car cela nécessiterait un stockage côté serveur ou une base de données).
-