Netteria.NET Posted December 11, 2020 Share Posted December 11, 2020 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? } Link to comment Share on other sites More sharing options...
bestcoding.net Posted December 11, 2020 Share Posted December 11, 2020 (edited) W zmiennej 'prestashop' jest dużo danych zawsze aktualnych. prestashop.on( 'updateCart', function () { var wartoscCalegoKoszyka = prestashop.cart.totals.total.amount; }); Edited December 11, 2020 by bestcoding.net (see edit history) 1 Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 11, 2020 Author Share Posted December 11, 2020 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 Link to comment Share on other sites More sharing options...
bestcoding.net Posted December 11, 2020 Share Posted December 11, 2020 Może używasz starszej presty, zerknij co masz w zmiennej: prestashop.cart Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 11, 2020 Author Share Posted December 11, 2020 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 +''); } ); } }); Link to comment Share on other sites More sharing options...
bestcoding.net Posted December 11, 2020 Share Posted December 11, 2020 Konsola przeglądarki też nie znajduje tej zmiennej? Może jakąś literówkę masz. Sklep jest dostępny publicznie? Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 11, 2020 Author Share Posted December 11, 2020 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. Link to comment Share on other sites More sharing options...
bestcoding.net Posted December 11, 2020 Share Posted December 11, 2020 Wydaje się działać poprawnie. Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 11, 2020 Author Share Posted December 11, 2020 No tak, a jednak nie chce się w tym custom.js wyświetlić. Generalnie to mi chodzi o tą wartość samych produktów czyli o te 17.50 Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 11, 2020 Author Share Posted December 11, 2020 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ść:( Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 11, 2020 Author Share Posted December 11, 2020 O i ciekawe. Działa tylko dla jednego zadarzenia. Jak dodaję kolejną sztukę towaru to się wysypuje. Link to comment Share on other sites More sharing options...
Netteria.NET Posted December 12, 2020 Author Share Posted December 12, 2020 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); } ); } }); Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now