🪟 Pop-upsGratuit · 0 NahnahPar NAHNAH
Pop-up alerte retour en stock
Sur une fiche produit épuisée, un bouton ouvre une fenêtre qui enregistre l'e-mail du client via le formulaire contact Shopify pour le prévenir du retour en stock.
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-popups-alerte-retour-stock.liquid (Liquid, CSS et JS inclus).
{%- comment -%} NAHNAH AI · Pop-up alerte retour en stock {%- endcomment -%}
{%- liquid
assign p = product
if p == blank and section.settings.produit != blank
assign p = all_products[section.settings.produit]
endif
-%}
{%- if p != blank -%}
<div class="nn-popups-alerte-retour-stock" data-disponible="{{ p.available }}"
style="--nn-fond:{{ section.settings.fond }};--nn-texte:{{ section.settings.texte_couleur }};--nn-accent:{{ section.settings.accent }};" {% if p.available %}hidden{% endif %}>
<button type="button" class="nn-popups-alerte-retour-stock__declencheur" data-ouvrir aria-haspopup="dialog">🔔 {{ section.settings.libelle_bouton }}</button>
<div class="nn-popups-alerte-retour-stock__calque" hidden>
<div class="nn-popups-alerte-retour-stock__voile" data-fermer></div>
<div class="nn-popups-alerte-retour-stock__boite" role="dialog" aria-modal="true" aria-labelledby="nn-ars-t-{{ section.id }}">
<button type="button" class="nn-popups-alerte-retour-stock__x" data-fermer aria-label="Fermer">×</button>
{%- if p.featured_image -%}{{ p.featured_image | image_url: width: 160 | image_tag: loading: 'lazy', class: 'nn-popups-alerte-retour-stock__img', alt: p.title }}{%- endif -%}
<h2 id="nn-ars-t-{{ section.id }}">{{ section.settings.titre }}</h2>
<p>{{ section.settings.texte | replace: '[produit]', p.title }}</p>
{%- form 'contact', class: 'nn-popups-alerte-retour-stock__form' -%}
{%- if form.posted_successfully? -%}
<p class="nn-popups-alerte-retour-stock__ok" role="status">{{ section.settings.merci }}</p>
{%- else -%}
<input type="hidden" name="contact[body]" value="Alerte retour en stock : {{ p.title | escape }} ({{ shop.url }}{{ p.url }})">
<label for="nn-ars-mail-{{ section.id }}">E-mail</label>
<input id="nn-ars-mail-{{ section.id }}" type="email" name="contact[email]" required autocomplete="email" placeholder="toi@exemple.fr">
<button type="submit">{{ section.settings.libelle_envoyer }}</button>
<small>{{ section.settings.mention }}</small>
{%- endif -%}
{%- endform -%}
</div>
</div>
</div>
{%- endif -%}
{% schema %}
{"name":"Alerte retour en stock","settings":[
{"type":"product","id":"produit","label":"Produit (hors fiche produit)"},
{"type":"text","id":"libelle_bouton","label":"Bouton","default":"Me prévenir du retour en stock"},
{"type":"text","id":"titre","label":"Titre","default":"Victime de son succès !"},
{"type":"text","id":"texte","label":"Texte ([produit] = nom)","default":"Laisse ton e-mail : on te prévient dès que [produit] est de retour."},
{"type":"text","id":"libelle_envoyer","label":"Bouton d'envoi","default":"Me prévenir"},
{"type":"text","id":"mention","label":"Mention","default":"Un seul e-mail, aucune inscription newsletter."},
{"type":"text","id":"merci","label":"Message de confirmation","default":"C'est noté ! Tu seras prévenu(e) en premier."},
{"type":"color","id":"fond","label":"Fond","default":"#ffffff"},
{"type":"color","id":"texte_couleur","label":"Texte","default":"#1f2937"},
{"type":"color","id":"accent","label":"Accent","default":"#e11d48"}],
"presets":[{"name":"Alerte retour en stock"}]}
{% endschema %}
{% stylesheet %}
.nn-popups-alerte-retour-stock__declencheur{width:100%;min-height:48px;padding:12px 18px;border:2px solid var(--nn-accent);border-radius:12px;background:transparent;color:var(--nn-accent);font-weight:700;cursor:pointer}
.nn-popups-alerte-retour-stock__calque{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:16px}
.nn-popups-alerte-retour-stock__calque[hidden]{display:none}
.nn-popups-alerte-retour-stock__voile{position:absolute;inset:0;background:rgba(0,0,0,.5)}
.nn-popups-alerte-retour-stock__boite{position:relative;width:100%;max-width:400px;padding:28px 24px;border-radius:22px;background:var(--nn-fond);color:var(--nn-texte);text-align:center;animation:nn-ars-in .35s ease-out}
.nn-popups-alerte-retour-stock__x{position:absolute;top:8px;right:8px;width:40px;height:40px;border:0;background:none;color:inherit;font-size:24px;cursor:pointer}
.nn-popups-alerte-retour-stock__img{width:80px;height:80px;object-fit:cover;border-radius:16px}
.nn-popups-alerte-retour-stock__boite h2{margin:12px 0 6px;font-size:22px}
.nn-popups-alerte-retour-stock__boite p{margin:0 0 16px;opacity:.75;font-size:14px}
.nn-popups-alerte-retour-stock__form{display:grid;gap:8px;text-align:left}
.nn-popups-alerte-retour-stock__form label{font-size:13px;font-weight:600}
.nn-popups-alerte-retour-stock__form input[type=email]{padding:12px;border:1.5px solid rgba(0,0,0,.15);border-radius:12px;font-size:16px}
.nn-popups-alerte-retour-stock__form button{padding:13px;border:0;border-radius:12px;background:var(--nn-accent);color:#fff;font-weight:700;cursor:pointer}
.nn-popups-alerte-retour-stock__form small{opacity:.6;text-align:center}
.nn-popups-alerte-retour-stock__ok{color:var(--nn-accent);font-weight:700;text-align:center}
.nn-popups-alerte-retour-stock button:focus-visible,.nn-popups-alerte-retour-stock input:focus-visible{outline:3px solid var(--nn-accent);outline-offset:2px}
@keyframes nn-ars-in{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion: reduce){.nn-popups-alerte-retour-stock__boite{animation:none}}
{% endstylesheet %}
{% javascript %}
// Alerte retour en stock NAHNAH : ouverture au clic, focus géré, Échap, réouverture après envoi
(function(){
document.querySelectorAll('.nn-popups-alerte-retour-stock').forEach(function(r){
var calque=r.querySelector('.nn-popups-alerte-retour-stock__calque'),boite=calque.querySelector('[role="dialog"]'),declencheur=r.querySelector('[data-ouvrir]');
function ouvrir(){calque.hidden=false;var c=boite.querySelector('input[type=email]')||boite.querySelector('button');c&&c.focus();}
function fermer(){calque.hidden=true;declencheur.focus();}
r.addEventListener('click',function(e){if(e.target.closest('[data-ouvrir]'))ouvrir();if(e.target.closest('[data-fermer]'))fermer();});
calque.addEventListener('keydown',function(e){
if(e.key==='Escape')fermer();
if(e.key==='Tab'){var f=boite.querySelectorAll('button,input:not([type=hidden])'),a=f[0],z=f[f.length-1];if(e.shiftKey&&document.activeElement===a){e.preventDefault();z.focus();}else if(!e.shiftKey&&document.activeElement===z){e.preventDefault();a.focus();}}
});
// Après envoi, Shopify recharge la page : on rouvre pour afficher la confirmation
if(boite.querySelector('[role="status"]'))ouvrir();
});
})();
{% 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 alerte retour en stock » (Pop-ups)
Description : Sur une fiche produit épuisée, un bouton ouvre une fenêtre qui enregistre l'e-mail du client via le formulaire contact Shopify pour le prévenir du retour en stock.
Page de l’élément (aperçu en direct) : https://ai.nahnah.shop/bibliotheque-shopify/popups-alerte-retour-stock
Fichier : nahnah-popups-alerte-retour-stock.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-popups-alerte-retour-stock.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-popups-alerte-retour-stock ».
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 : popups-alerte-retour-stock).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-popups-alerte-retour-stock ».
- 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 popups-alerte-retour-stock 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