Aller au contenu

🪟 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 %}
Télécharger le fichier .liquid

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

  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.

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

Dans la même catégorie