🪟 Pop-upsGratuit · 0 NahnahPar NAHNAH
Pop-up sondage en une question
Petite fenêtre qui pose UNE question (« Comment nous as-tu connus ? ») avec des réponses en pastilles ; la réponse t’est envoyée par le formulaire de contact Shopify. Merci animé, aucune récompense promise, une seule fois par période choisie.
Aperçu en direct
Données de démonstration (produits, menus, textes d’exemple) : dans ta boutique, ce sont les tiennes.
Photos : Unsplash / Pexels (exemples de l’aperçu, jamais inclus dans le code).
Code à copier
Fichier complet sections/nahnah-popup-sondage-une-question.liquid (Liquid, CSS et JS inclus).
{%- comment -%} NAHNAH AI · Pop-up sondage en une question (bibliothèque Sections & effets) {%- endcomment -%}
<div class="nn-popup-sondage-une-question" style="--nn-mh: {{ section.settings.marge_haut }}px; --nn-mb: {{ section.settings.marge_bas }}px; --nn-fond: {{ section.settings.couleur_fond }}; --nn-texte: {{ section.settings.couleur_texte }}; --nn-accent: {{ section.settings.couleur_accent }};" data-nn-invitation="{{ section.settings.invitation }}" data-delai="{{ section.settings.delai }}" data-jours="{{ section.settings.jours }}" data-cle="nn-sondage-{{ section.id }}">
{%- assign nn_rep = section.settings.reponses | split: '/' -%}
<div class="nn-popup-sondage-une-question__carte" role="dialog" aria-labelledby="nn-sondage-q-{{ section.id }}" data-nn-carte hidden>
<button type="button" class="nn-popup-sondage-une-question__fermer" data-nn-fermer aria-label="Fermer">×</button>
{%- form 'contact', class: 'nn-popup-sondage-une-question__form' -%}
<div class="nn-popup-sondage-une-question__corps" data-nn-corps>
<p class="nn-popup-sondage-une-question__question" id="nn-sondage-q-{{ section.id }}">{{ section.settings.question | escape }}</p>
<input type="hidden" name="contact[email]" value="{{ shop.email | escape }}">
<input type="hidden" name="contact[body]" value="" data-nn-corps-message>
<div class="nn-popup-sondage-une-question__reponses" role="radiogroup" aria-labelledby="nn-sondage-q-{{ section.id }}">
{%- for r in nn_rep -%}{%- assign nn_r = r | strip -%}{%- if nn_r != blank -%}
<label class="nn-popup-sondage-une-question__reponse"><input type="radio" name="nn-reponse" value="{{ nn_r | escape }}" data-nn-reponse><span>{{ nn_r | escape }}</span></label>
{%- endif -%}{%- endfor -%}
</div>
<button type="submit" class="nn-popup-sondage-une-question__envoyer" data-nn-envoyer disabled>{{ section.settings.envoyer | escape }}</button>
</div>
{%- if form.posted_successfully? -%}<p class="nn-popup-sondage-une-question__merci" role="status">✓ {{ section.settings.merci | escape }}</p>{%- endif -%}
{%- endform -%}
</div>
</div>
{% schema %}
{
"name": "Sondage une question",
"tag": "section",
"class": "nn-section-popup-sondage-une-question",
"settings": [
{
"type": "text",
"id": "question",
"label": "Question",
"default": "Comment nous as-tu connus ?"
},
{
"type": "text",
"id": "reponses",
"label": "Réponses (séparées par « / »)",
"default": "Instagram / TikTok / Un ami / Une recherche / Autre"
},
{
"type": "text",
"id": "envoyer",
"label": "Texte du bouton",
"default": "Envoyer"
},
{
"type": "text",
"id": "merci",
"label": "Message de remerciement",
"default": "Merci, ça nous aide beaucoup !"
},
{
"type": "range",
"id": "delai",
"label": "Ouverture après",
"min": 5,
"max": 120,
"step": 5,
"default": 20,
"unit": "s"
},
{
"type": "range",
"id": "jours",
"label": "Ne pas réafficher pendant",
"min": 1,
"max": 90,
"step": 1,
"default": 30,
"unit": "jours"
},
{
"type": "checkbox",
"id": "invitation",
"label": "Ouvrir la fenêtre tout de suite",
"default": false,
"info": "Coupé si le visiteur a demandé à réduire les animations."
},
{
"type": "header",
"content": "Couleurs"
},
{
"type": "color",
"id": "couleur_fond",
"label": "Fond",
"default": "#FFFFFF"
},
{
"type": "color",
"id": "couleur_texte",
"label": "Texte",
"default": "#1F2937"
},
{
"type": "color",
"id": "couleur_accent",
"label": "Accent",
"default": "#10B981"
},
{
"type": "header",
"content": "Espacement"
},
{
"type": "range",
"id": "marge_haut",
"label": "Marge haute",
"min": 0,
"max": 120,
"step": 4,
"unit": "px",
"default": 0
},
{
"type": "range",
"id": "marge_bas",
"label": "Marge basse",
"min": 0,
"max": 120,
"step": 4,
"unit": "px",
"default": 0
}
],
"presets": [
{
"name": "Sondage une question"
}
]
}
{% endschema %}
{% stylesheet %}
.nn-popup-sondage-une-question__carte { position: fixed; right: 16px; bottom: 16px; z-index: 900; width: min(360px, calc(100vw - 32px)); padding: 20px 18px 18px; border-radius: 20px; background: var(--nn-fond); color: var(--nn-texte); box-shadow: 0 24px 50px -18px rgba(31, 41, 55, 0.45); animation: nn-popup-sondage-une-question-entre 0.55s cubic-bezier(0.2, 1.2, 0.3, 1) both; }
.nn-popup-sondage-une-question__carte[hidden] { display: none; }
.nn-popup-sondage-une-question__fermer { position: absolute; top: 8px; right: 8px; width: 34px; height: 34px; border: 0; border-radius: 50%; background: #F3F4F6; color: inherit; font-size: 20px; cursor: pointer; }
.nn-popup-sondage-une-question__question { margin: 0 30px 12px 0; font-size: 17px; font-weight: 700; }
.nn-popup-sondage-une-question__reponses { display: flex; flex-wrap: wrap; gap: 8px; }
.nn-popup-sondage-une-question__reponse { position: relative; cursor: pointer; }
.nn-popup-sondage-une-question__reponse input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.nn-popup-sondage-une-question__reponse span { display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border: 1.5px solid rgba(31, 41, 55, 0.18); border-radius: 999px; font-size: 14px; font-weight: 600; transition: background-color 0.2s, color 0.2s, border-color 0.2s, transform 0.3s cubic-bezier(0.3, 1.8, 0.5, 1); }
.nn-popup-sondage-une-question__reponse input:checked + span { background: var(--nn-accent); border-color: var(--nn-accent); color: #FFFFFF; transform: scale(1.05); }
.nn-popup-sondage-une-question__reponse input:focus-visible + span { outline: 2px solid var(--nn-accent); outline-offset: 2px; }
.nn-popup-sondage-une-question__envoyer { width: 100%; min-height: 46px; margin-top: 14px; border: 0; border-radius: 12px; background: var(--nn-texte); color: #FFFFFF; font: inherit; font-weight: 700; cursor: pointer; transition: opacity 0.2s; }
.nn-popup-sondage-une-question__envoyer:disabled { opacity: 0.4; cursor: not-allowed; }
.nn-popup-sondage-une-question__merci { margin: 6px 0 0; font-weight: 700; color: var(--nn-accent); animation: nn-popup-sondage-une-question-merci 0.5s cubic-bezier(0.3, 1.6, 0.5, 1) both; }
.nn-popup-sondage-une-question button:focus-visible { outline: 2px solid var(--nn-accent); outline-offset: 2px; }
@keyframes nn-popup-sondage-une-question-entre { from { opacity: 0; transform: translateY(30px) scale(0.95); } }
@keyframes nn-popup-sondage-une-question-merci { from { opacity: 0; transform: scale(0.8); } }
@media (prefers-reduced-motion: reduce) {
.nn-popup-sondage-une-question *, .nn-popup-sondage-une-question *::before, .nn-popup-sondage-une-question *::after { animation: none !important; transition: none !important; }
}
{% endstylesheet %}
{% javascript %}
(function () {
var reduit = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
function brancher(racine) {
if (racine.dataset.nnPret) return;
racine.dataset.nnPret = "1";
var carte = racine.querySelector("[data-nn-carte]");
if (!carte) return;
var cle = racine.getAttribute("data-cle"), jours = +racine.getAttribute("data-jours") || 30, invitation = racine.getAttribute("data-nn-invitation") === "true";
var envoyer = racine.querySelector("[data-nn-envoyer]"), message = racine.querySelector("[data-nn-corps-message]");
function memoire(v) { try { if (v === undefined) return window.localStorage.getItem(cle); window.localStorage.setItem(cle, v); } catch (e) { return null; } }
racine.querySelectorAll("[data-nn-reponse]").forEach(function (r) {
r.addEventListener("change", function () { envoyer.disabled = false; message.value = "Sondage — " + racine.querySelector(".nn-popup-sondage-une-question__question").textContent + " : " + r.value; r.parentNode.classList.add("nn-popup-sondage-une-question__reponse--actif"); racine.querySelectorAll("[data-nn-reponse]").forEach(function (x) { if (x !== r) x.parentNode.classList.remove("nn-popup-sondage-une-question__reponse--actif"); }); });
});
var form = carte.querySelector("form");
if (form) form.addEventListener("submit", function () { memoire(String(Date.now())); });
racine.querySelector("[data-nn-fermer]").addEventListener("click", function () { carte.hidden = true; if (!invitation) memoire(String(Date.now())); else setTimeout(function () { carte.hidden = false; }, 1500); });
if (invitation) { setTimeout(function () { carte.hidden = false; }, 500); return; }
if (Date.now() - (+memoire() || 0) < jours * 86400000) return;
setTimeout(function () { carte.hidden = false; }, (+racine.getAttribute("data-delai") || 20) * 1000);
}
function tout() { document.querySelectorAll(".nn-popup-sondage-une-question").forEach(brancher); }
tout();
document.addEventListener("shopify:section:load", tout);
})();
{% endjavascript %}
Licence NAHNAH AI : utilisation libre dans tes boutiques (y compris commerciales), modification permise, revente de l’élément seul interdite.
Prompt à copier
À coller dans Claude ou ChatGPT avec le fichier téléchargé (ou le code copié) : l’assistant t’aide à l’installer et à l’adapter à ta marque.
Tu es un expert des thèmes Shopify Online Store 2.0. Aide-moi à installer puis à adapter à ma marque cet élément gratuit de la bibliothèque NAHNAH AI.
Élément : « Pop-up sondage en une question » (Pop-ups)
Description : Petite fenêtre qui pose UNE question (« Comment nous as-tu connus ? ») avec des réponses en pastilles ; la réponse t’est envoyée par le formulaire de contact Shopify. Merci animé, aucune récompense promise, une seule fois par période choisie.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/popup-sondage-une-question
Fichier : nahnah-popup-sondage-une-question.liquid (bouton « Télécharger » de la page) ou le code copié avec le bouton « Copier » : je te le joins ou je le colle après ce message.
Emplacement dans le thème : sections/nahnah-popup-sondage-une-question.liquid (Liquid, puis {% stylesheet %} et {% javascript %}, dans ce seul fichier).
Étapes d’installation :
1. Dans Shopify : Boutique en ligne → Thèmes → bouton « … » du thème → Modifier le code.
2. Dossier « sections » → « Ajouter une section » (ou « Nouveau fichier ») → nomme-la « nahnah-popup-sondage-une-question ».
3. Efface le contenu proposé, colle le code de l’onglet Liquid (fichier complet), puis Enregistrer.
4. Ouvre Personnaliser → Ajouter une section → choisis-la, règle les textes et les couleurs, puis Enregistrer.
Ce que j’attends de toi :
- Guide-moi pas à pas dans Shopify : Boutique en ligne → Thèmes → « … » → Modifier le code → dossier sections → Ajouter une section, puis Personnaliser → Ajouter une section.
- Propose-moi d’adapter les couleurs, les textes et les liens à ma marque : demande d’abord mes couleurs (codes hexadécimaux), mon ton et mes liens.
- Garde le bloc {% schema %} et tous ses réglages (identifiants, types, presets) : je dois pouvoir tout régler ensuite dans l’éditeur de thème.
- Rends-moi le fichier complet modifié, prêt à coller, sans faux avis, fausse urgence ni chiffre inventé.
Si tu as le connecteur NAHNAH AI (MCP), récupère directement le code exact avec l’outil obtenir_code_element (id : popup-sondage-une-question).Installer dans ma boutique
En un clic, la section est ajoutée à un thème de ta boutique Shopify connectée (un thème non publié par défaut).
Chargement de tes boutiques…
Installer dans Shopify
- Dans Shopify : Boutique en ligne → Thèmes → bouton « … » du thème → Modifier le code.
- Dossier « sections » → « Ajouter une section » (ou « Nouveau fichier ») → nomme-la « nahnah-popup-sondage-une-question ».
- Efface le contenu proposé, colle le code de l’onglet Liquid (fichier complet), puis Enregistrer.
- Ouvre Personnaliser → Ajouter une section → choisis-la, règle les textes et les couleurs, puis Enregistrer.
Installer via le MCP
Depuis Claude, Claude Code ou ChatGPT connecté à NAHNAH AI, demande : « Donne-moi le code de l’élément popup-sondage-une-question de la bibliothèque NAHNAH AI et les étapes pour l’installer ». L’assistant récupère le code et les étapes (outil obtenir_code_element), gratuitement.
Boutique connectée à NAHNAH AI : l’assistant peut aussi l’installer directement (outil installer_element).
Connecter le MCP