Masquer automatiquement variants en rupture de stock

Bonjour,

J’aimerais que les variants soient masqués automatiquement quand les stock tombe à 0.

Je travaille avec le thème envy.
Quelqu’un a t-il une solution ?

Merci pour votre aide,

Yohan.

1 Like

Bonjour

Si tu utilises l’application oberlo, tu peux le faire via les paramètres de l’application

Bonjour,

Essayez de mettre ça à la fin de theme.js.liquid :

document.addEventListener('DOMContentLoaded', function() {
  const productJson = document.querySelectorAll('[id=ProductJson-');
  if (productJson.length > 0) {
    for (let i = 0; i < productJson.length; i++) {
      const current = productJson[i];
      const sectionId = current.id.replace('ProductJson-', '');
      const section = document.querySelector('[data-section-id="' + sectionId + '"]');
      const product = JSON.parse(current.text);

      if (product.options.length === 1) {
        const unavailableVariants = [];

        for (let j = 0; j < product.variants.length; j++) {
          const variant = product.variants[j];

          if (!variant.available) {
            unavailableVariants.push(variant);
          }
        }

        if (unavailableVariants.length > 0) {
          const mutationCallback = function() {
            const variantOptions = section.querySelectorAll('.single-option-selector option');

            if (variantOptions.length > 0) {
              for (let k = 0; k < unavailableVariants.length; k++) {
                const unavailableVariant = unavailableVariants[k];

                for (let l = 0; l < variantOptions.length; l++) {
                  const option = variantOptions[l];

                  if (unavailableVariant.title === option.value) {
                    option.remove();
                  }
                }
              }

              if (typeof observer === 'object' && typeof observer.disconnect === 'function') {
                observer.disconnect();
              }
            }
          }

          const observer = new MutationObserver(mutationCallback);
          const addToCartForm = document.querySelector('form[action*="/cart/add"]');

          mutationCallback();

          if (window.MutationObserver && addToCartForm.length) {
            const config = { childList: true, subtree: true };

            if (typeof observer === 'object' && typeof observer.disconnect === 'function') {
              observer.disconnect();
            }

            observer.observe(addToCartForm, config);
          }
        }
      }
    }
  }
});
1 Like

Bonjour,

Je n’ai pas theme.js.liquid, mais juste theme.je dans assets. Et
malheureusement cela ne fonctionne pas …

Bonjour,
Cela ne fonctionne que pour les produits achetés en drop shipping ?

##- Veuillez saisir votre réponse au-dessus de cette ligne -##

bonjour

Merci pour votre réponse,

est ce que ce code est compatible pour version DOWN 6.0.2 aussi s’il vous plait?

merci

Bonjour,

Vous devrez ajouter une condition qui vérifie si la variante est en stock. Voici un exemple de code que vous pouvez utiliser pour masquer les variantes non disponibles :

{% for variant in product.variants %}

{% if variant.available %}

{{ variant.title }}

{% else %}

{% endif %}

{% endfor %}