Nous allons voir dans ce tutoriel shopify comment proposer à vos clients un code promo selon la quantité mise dans leur panier ! Ce système sera mis en place sur vos fiches produits avec une information en temps réel de la somme restante à dépenser afin d’avoir un code promo exclusif !

Voir le résultat ici: https://dgeodev.myshopify.com/products/produit-2

Comment mettre le système en place ?

Rendez-vous dans l’administration de votre boutique – cliquez sur Boutique en ligne – Actions – Modifier le code.

Code HTML – Placement

Ouvrez le dossier Sections et trouvez le fichier product-template.liquid –  écrivez des petits « toto1, toto2 toto3 » un peu partout afin de trouver l’emplacement idéal ! Selon les thèmes la zone du formulaire d’achat se trouve dans Snippets – ouvrez donc ce dossier et recherchez un product-form.liquid ou nom avec un form dedans :p et répétez la technique du toto et copiez/collez le code suivant:

<div class="ptgdContainer">
  <p>
    <svg enable-background="new 0 0 512 512" height="20" width="20" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><g><path d="m203.556 345.012 70.71-212.133c2.619-7.859-1.628-16.354-9.487-18.974-7.858-2.619-16.354 1.628-18.974 9.487l-70.71 212.133c-2.619 7.859 1.628 16.354 9.487 18.974 1.573.524 3.173.773 4.745.773 6.28.001 12.133-3.974 14.229-10.26z"/><path d="m309.533 279.203c24.813 0 45-20.187 45-45s-20.187-45-45-45-45 20.187-45 45 20.187 45 45 45zm0-60c8.271 0 15 6.729 15 15s-6.729 15-15 15-15-6.729-15-15 6.729-15 15-15z"/><path d="m139.827 189.203c-24.813 0-45 20.187-45 45s20.187 45 45 45 45-20.187 45-45-20.186-45-45-45zm0 60c-8.271 0-15-6.729-15-15s6.729-15 15-15 15 6.729 15 15-6.728 15-15 15z"/><path d="m509 186-52.307-69.743 2.041-14.283c.667-4.674-.904-9.39-4.243-12.728l-31.82-31.82 31.819-31.82c5.858-5.857 5.858-15.355 0-21.213-5.857-5.857-15.355-5.857-21.213 0l-31.819 31.82-31.82-31.82c-3.338-3.339-8.054-4.905-12.728-4.243l-148.493 21.213c-3.213.459-6.19 1.948-8.485 4.243l-183.848 183.848c-21.445 21.444-21.445 56.338 0 77.782l155.563 155.564c3.182 3.182 6.666 5.881 10.353 8.118v6.082c0 30.327 24.673 55 55 55h220c30.327 0 55-24.673 55-55v-262c0-3.245-1.053-6.404-3-9zm-471.703 80.023c-9.748-9.748-9.748-25.608 0-35.356l180.312-180.312 136.118-19.445 26.517 26.517-21.213 21.213-10.607-10.607c-5.857-5.857-15.355-5.857-21.213 0s-5.858 15.355 0 21.213l42.427 42.427c2.929 2.929 6.768 4.394 10.606 4.394s7.678-1.465 10.606-4.394c5.858-5.857 5.858-15.355 0-21.213l-10.607-10.607 21.213-21.213 26.517 26.517-19.446 136.118-180.311 180.312c-4.722 4.722-11 7.322-17.678 7.322s-12.956-2.601-17.678-7.322zm444.703 190.977c0 13.785-11.215 25-25 25h-220c-13.164 0-23.976-10.228-24.925-23.154 13.567-.376 27.022-5.714 37.353-16.046l183.848-183.848c2.295-2.295 3.784-5.272 4.243-8.485l13.173-92.21 31.308 41.743z"/></g></svg>
    <span class="ptgdTextBefore">Il reste</span>
    <strong id="price_to_get_discount" class="price_to_get_discount ptgdLoader"></strong>
    <span class="ptgdTextAfter">à dépenser pour obtenir votre bon de réduction !</span>
  </p>
</div>

Code CSS – Mise en forme

Trouvez dans le dossier Assets votre fichier .scss.liquid ou .css.liquid ! généralement theme.scss.liquid ou style.scss.liquid – mettez-vous tout en bas du fichier et copiez/collez le code suivant:

.ptgdContainer p {
  //color:green;
  display:flex;
  align-items: center;  
  flex-wrap:wrap;
 
}
.ptgdContainer svg {
  // fill:green;
  margin-right:7px;
}
.ptgdContainer strong {
  // color:green;
  margin:0 5px;
}
.ptgdLoader { 
  border: 3px solid #F0F0F0; /* Light grey */
  border-top: 3px solid #999; /* Blue */
  border-radius: 50%;
  width: 17px;
  height: 17px;
  animation: spin 2s linear infinite;
}
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

Code Javascript – Fonctionnement et paramètres

Cette fois ci, toujours dans le dossier Assets trouvez le fichier theme.js.liquid ou style.js.liquid bref un fichier .js 😉 et copiez/collez le code ci-dessous:

/* Comment proposer un code promo à partir d'un certain montant d'achat sur Shopify */    

(function() {

  if(document.querySelector('.ptgdContainer')) {

    /* Prix en centimes ou cents */
    let priceToGetDiscount = "20000";     
    const ptgdCurrency = "€";
    const ptgddiscountCode = "CODE30";
    const ptgdTextBeforeSuccess = "Félicitations ! vous pouvez désormais utiliser le code promo";
    const ptgdTextAfterSuccess  = "à l'étape du paiement";

    const ptgdTextBefore = document.querySelector('.ptgdTextBefore');
    const ptgdTextAfter = document.querySelector('.ptgdTextAfter');    

    const ptgdContainer = document.getElementById('price_to_get_discount');    
    const ptgdBtnsSubmit = document.querySelectorAll('button[type="submit"]');  

    const ptgdPrice = document.querySelector('.ptgdContainer strong');


    console.log(ptgdPrice);
    function decimaConverter(num) {
      let number = (num * 100 + 0.01 * 100) / 10000;
      return number.toFixed(2);
    }  

    function cartTotalPrice() {
      setTimeout(function(){ 
        fetch("/cart.js")
        .then(cart => cart.json())
        .then(cart => {
          let priceRemaining =  priceToGetDiscount - cart.total_price;
          if(cart.total_price >= priceToGetDiscount) {               
            ptgdTextBefore.textContent = ptgdTextBeforeSuccess;
            ptgdContainer.textContent = '"'+ptgddiscountCode+'"';
            ptgdTextAfter.textContent = ptgdTextAfterSuccess;

          }
          else {
            if(priceRemaining > 0) {
              ptgdContainer.textContent = `${decimaConverter(priceRemaining)}€`;              
            }
          }
          ptgdPrice.classList.remove('ptgdLoader');


        })
        .catch(error => console.log("Erreur : " + error));
      }, 1000);
    }

    cartTotalPrice();

    ptgdBtnsSubmit.forEach(btn => {      
      if (btn.getAttribute('name') == "add") {
        btn.addEventListener('click', function() {
          cartTotalPrice();
        });
      }
    });

  }

})();

Comment personnaliser tout le système ?

Vous souhaitez modifier les textes, le code promo, les valeurs et le design ? dans ce cas je vous invite à visionner la vidéo ci-dessous :

Merci de me laisser une petite note 😉
[Note moyenne de: 5 sur 1 votes]

🤗 Vous souhaitez me remercier pour mes Tutos ?

Cliquez sur le bouton ci-dessous pour m'encourager à continuer 😉

Payer un Café à Dgeo Dev

Cet article a 2 commentaires

  1. Bonjour, malheureusement sur le thème warehouse le nombre ne veut pas s’afficher. La roulette tourne indéfiniment. Avez-vous une solution ? merci!

  2. Bonjour, j’ai le thème minimal et j’ai le même problème que Didier la roulette tourne sans s’arrêter. Pouvez-vous nous aider? Merci

Laisser un commentaire

Fermer le menu

Envie d'apprendre à Coder et Maitriser ton Thème Shopify  ?

Alors abonne-toi à la chaine et active la cloche pour ne pas louper l'arrivée des prochaines vidéos !

S'abonner à la chaine