Jump to content

Pobranie danych przy updateCart w js


Recommended Posts

Witam

Szukam i szukam i nie mogę znaleźć. Może ktoś podpowie.

W custom.js mam kawałek kodu i chcę pobrać po odświeżeniu koszyka aktualną wartość zakupów. I nie mogę tego ogarnąć. Do jakiego obiektu i jakiej zmiennej się odwołać?

Mam taki kod:

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

//no i właśnie co tutaj?

}

 

Share this post


Link to post
Share on other sites

Dzięki za pomoc przede wszystkim. Niestety próbowałem z prestashop.cart ale mam że nie zdefiniowane. datego kodu który podałeś mam

jQuery.Deferred exception: can't access property "totals", prestashop.cart is undefined 

Share this post


Link to post
Share on other sites

Używam właśnie najnowszej. To świeża instalka 1.7.7. A tą zmienną właśnie mam jako niezdefiniowaną. Dziwne bo na event reaguje. W ogóle jak tam console.log(preastsop) to mam preastsop:undefined. Kurde ja to robią w custom.js może co powyżej tego kodu trzeba zadeklarować?

Mam coś takiego w pliku custom.js

$(document).ready(function () {
    if (typeof prestashop !== 'undefined') {
        prestashop.on('updateCart', function (event) {
       
           
            console.log(' preastsop:' + prestashop.cart +'');
        }
        );
    }
});

 

Share this post


Link to post
Share on other sites

Tak. jest. 

https://kosmetyczna.netteria.net/

A generalnie chodzi mi o koszyk. Dopisałem kawałek kodu który liczy ile brakuje do darmowej wysyłki. Problem w tym że w widoku koszyka można zmieniać jego zawartość i chciałem aby ten kawałek kodu reagował. Wymyśliłem więc że sobie dla tego zdarzenia wyliczę na nowo i wstawię w to swoje okno.

Share this post


Link to post
Share on other sites

Dziwne. Najwyraźniej te warunki coś krzaczyły. Zostawiłem tylko

console.log('preastsop: zmienna:' + prestashop.cart.totals.total.amount + '');


prestashop.on('updateCart', function () {
    console.log('preastsop: zmienna 2: ' + prestashop.cart.totals.total.amount + '');

});

i teraz widać. Problem jest tylko taki że widać przed aktualizacją a nie po. A żeby wyliczyć to mi potrzebna ta nowa wartość:(

Share this post


Link to post
Share on other sites

Ok, może komuś kiedyś się przyda. Mało elegancko może ale działa:

$(document).ready(function () {
    if (typeof prestashop !== 'undefined') {
        prestashop.on('updateCart', function (event) {
            setTimeout(function () {
                $('.mycart').hide();
                $('.freeshippingbox_hide').show();
                var freeshipping_price = $('#freeshipping_price').attr('value');
                var currenc_my = $('#currenc_my').attr('value');
                var total = $('#cart-subtotal-products .value').text();
                if(isEmpty(currenc_my) || currenc_my.length === 0){
                    currenc_my = "";
                }
                if(isEmpty(freeshipping_price) || freeshipping_price.length === 0){
                    freeshipping_price = 0;
                }
                if(isEmpty(total) || total.length === 0){
                    total = "0";
                }
                $('.total_sum').html(total);
                total = total.replace(",", ".");
                total = total.replace(" ", "");
                total.trim();
                
                total = total.replace(""+currenc_my+"", "");
                 if(isEmpty(currenc_my) || currenc_my.length === 0){
                    currenc_my = "";
                }
                if(isEmpty(freeshipping_price) || freeshipping_price.length === 0){
                    freeshipping_price = 0;
                }
                if(isEmpty(total) || total.length === 0){
                    total = "0";
                }
                var remaining_to_spend = freeshipping_price - total;
                if(remaining_to_spend<=0){
                    remaining_to_spend = 0;
                    $('.freeshippingbox_hide').hide();
                }else{
                    $('.freeshippingbox_hide').show();
                }
                $('.remaining_to_spend').html(remaining_to_spend.toFixed(2) + ' ' + currenc_my);
            }, 1000);
        }
        );
    }
});

 

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
×
×
  • Create New...

Important Information

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