Jump to content
guil182

Update cart product page ProductSpin 1.7

Recommended Posts

Bonjour,

j'essaye de bloquer ProductSpin avec max = $product.quantity.

Pour cela, j'ai modifier product-add-to-cart.tpl

  <input
                                type="number"
                                name="qty"
                                id="quantity_wanted"
                                value="{$product.quantity_wanted}"
                                class="input-group"
                                min="{$product.minimal_quantity}"
                                max="{$product.quantity}"
                                step="{$product.minimal_quantity}"
                        >

 

et j'ai surchargé product.js en créant un product.js dans un theme enfant.

$(document).ready(function () {
  createProductSpin();

  prestashop.on('updatedProduct', function (event) {

    if (event && event.product_minimal_quantity) {
      const minimalProductQuantity = parseInt(event.product_minimal_quantity, 10);
      const quantityInputSelector = '#quantity_wanted';
      let quantityInput = $(quantityInputSelector);
      let quantityMax = parseInt($('#pmax').text());

      // @see http://www.virtuosoft.eu/code/bootstrap-touchspin/ about Bootstrap TouchSpin
      quantityInput.trigger('touchspin.updatesettings', {min: minimalProductQuantity,step: minimalProductQuantity,max: quantityMax});
    }

  });

  function createProductSpin()
  {
    const $quantityInput = $('#quantity_wanted');

    $quantityInput.TouchSpin({
      verticalbuttons: true,
      verticalupclass: 'material-icons touchspin-up',
      verticaldownclass: 'material-icons touchspin-down',
      buttondown_class: 'btn btn-touchspin js-touchspin',
      buttonup_class: 'btn btn-touchspin js-touchspin',
      min: parseInt($quantityInput.attr('min'), 10),
      max: parseInt($quantityInput.attr('max'), 10),
      step: parseInt($quantityInput.attr('step'), 10)
    });

    $('body').on('change keyup', '#quantity_wanted', (e) => {
      $(e.currentTarget).trigger('touchspin.stopspin');
      prestashop.emit('updateProduct', {
          eventType: 'updatedProductQuantity',
          event: e
      });
    });
  }
});

 

Ca marche...presque !

En effet, lorsque qu'on arrive sur la page, on peut appuyer très vite sur le "up", la quantité n'est pas bloquée....elle ne se bloque qu'après la réponse Ajax de updated cart 😕

Le résultat : http://prestashop.lenclosdesvins.com/pomerol/20-chateau-la-conseillante-2010.html

Merci d'avance de votre aide

 

Share this post


Link to post
Share on other sites

Normal et logique, le js se charge après le code html de la page.

Il faut bloquer le bouton en html et le débloquer si autorisé en js

Share this post


Link to post
Share on other sites
Posted (edited)

Merci Eolia,

Mais justement ce n'est pas fait avec  product-add-to-cart.tpl et la fonction createProductSpin() ?

Sinon comment faut il faire ?

Edited by guil182 (see edit history)

Share this post


Link to post
Share on other sites

Aucune idée je ne travaille pas sur les 1.7

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More