maraguta Posted March 10, 2016 Share Posted March 10, 2016 Cześć. Dodałem pole(w nowym wierszu) do tabeli w schopping-cart.tpl. Pole zlicza procent ze zmiennej total.Problem polega na tym że po dodaniu kolejnego produktu do koszyka wartości liczbowe w innych polach(razem(brutto) i razem) zmieniają się natomiast pole z wyliczaniem procentu zmienia się dopiero jak odświeżę stronę. Cześć. Dodałem pole(w nowym wierszu) do tabeli w schopping-cart.tpl. Pole zlicza procent ze zmiennej total. Jak wrzucam do koszyka nowe produkty to wszystkie pola zmieniaja wartości jak trzeba,zliczają procent , ale jak dodaje ilosc sztuk jakiegoś produktu konkretnego(ikonką plusa/minusa) to pole wyliczajace 5% z "total" się nie zmienia chyba że odświeżę stronę. Dodam Ze nie tworzyłem nowej zmiennej w schopping-cart.tpl lecz skopiowałem zmienną której dopisałem mnożenie przez 0.05. Kod: [Zaznacz] <td colspan="{$col_span_subtotal}" class="text-right">{if $display_tax_label}{l s='Total products (tax incl.)'}{else}{l s='Total products'}{/if}</td> <td colspan="2" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="price" id="total_product">{displayPrice price=$total_products_wt}</td> </tr>dodałem to: <tr> <td colspan="{$col_span_subtotal}" class="text-right">{if $display_tax_label}{l s='Your donation'}{else}{l s='Your donation'}{/if}</td> <td colspan="2" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="price" id="total_product">{displayPrice price=$total_products_wt*0.05}</td> </tr> Nie mam pojęcia który fragment kodu w pliku cart-summary.js za to odpowiada i gdzie dopisać..cart_quantity_up?.... szukam w komentarzach pliku przy ajaxach...jak zrobić żeby obsłużyło to moje dodatkowe pole?Dziękuję za ewentualną podpowiedź. Link to comment Share on other sites More sharing options...
REGE Posted March 10, 2016 Share Posted March 10, 2016 W funkcji updateCartSummary(json) dodaj: $('#total_product').html(json.total_price_without_tax * 0.05); Drobna uwaga: Dobrą praktyką jest nazywanie pól aktualizowanych przez AJAX, dodając prefiks ajax_, czyli w Twoim przypadku np. tak "ajax_total_product". Pozdrawiam Link to comment Share on other sites More sharing options...
Adam40 Posted March 15, 2016 Share Posted March 15, 2016 Witam, mam podobny problem więc piszę tutaj. Chciałem pod normalną ceną brutto pokazać (cenę + dostawa) np 20zł w product.tpl dopisałem wiersz {convertPrice price=($productPrice+20)|floatval} jak produkt kosztuje np 100 zł to pokazuje poniżej poprawnie cenę, a pod spodem cenę z dostawą 120, ale jak zmienię atrybut tego produktu to nie odświeża mi tej ceny z dostawą i gdy produkt kosztuje drożej np 150zł to nadal pokazuje cenę z dostawą 120 a nie 170 Jak zrobić aby za każdą zmianą atrybutu odświeżało mi to pole? Link to comment Share on other sites More sharing options...
maraguta Posted March 15, 2016 Author Share Posted March 15, 2016 (edited) W funkcji updateCartSummary(json) dodaj: $('#total_product').html(json.total_price_without_tax * 0.05); Drobna uwaga: Dobrą praktyką jest nazywanie pól aktualizowanych przez AJAX, dodając prefiks ajax_, czyli w Twoim przypadku np. tak "ajax_total_product". Pozdrawiam Mam! Wielkie dzięki REGE dodałem do instrukcji warunkowej w if i else tam gdzie w funkcji zaczyna się // Cart summary a masz może pomysł na to (dodałem pole i nie odbieram go w panelu admina ) Pozdrawiam Edited March 15, 2016 by maraguta (see edit history) Link to comment Share on other sites More sharing options...
maraguta Posted March 15, 2016 Author Share Posted March 15, 2016 (edited) W funkcji updateCartSummary(json) dodaj: $('#total_product').html(json.total_price_without_tax * 0.05); Drobna uwaga: Dobrą praktyką jest nazywanie pól aktualizowanych przez AJAX, dodając prefiks ajax_, czyli w Twoim przypadku np. tak "ajax_total_product". Pozdrawiam Działa zlicza ,ale nie wiem czy w odpowiednie miejsce wstawiłem ten fragment kodu, albo powinienem jakoś inaczej to zrobić. Chodzi to że przeładowuje stronę za każdym zwiększeniem/zmniejszeniem ilości produktu w koszyku. Poprzednio nie zliczało mi tego pola, ale ceny zmieniały sie w pozostałych polach bez przeładowywania strony. Jak temu zaradzić? if (priceDisplayMethod !== 0) $('#total_product').html(formatCurrency(json.total_products, currencyFormat, currencySign, currencyBlank)); $('#total_product').html(json.total_price_without_tax * 0.1); else.... chyb że powinienem tak zrobić: $('#total_product').html(formatCurrency(json.total_products, currencyFormat, currencySign, currencyBlank, json.total_price_without_tax * 0.1)); else... Edited March 15, 2016 by maraguta (see edit history) Link to comment Share on other sites More sharing options...
maraguta Posted March 15, 2016 Author Share Posted March 15, 2016 ..dalej muli. Jak zrobić żeby zliczało bez automatycznego odświeżania strony po zwiększeniu/zmniejszeniu ilości produktu? wróciłem do: if (priceDisplayMethod !== 0) $('#total_product').html(formatCurrency(json.total_products, currencyFormat, currencySign, currencyBlank)); $('#total_product').html(json.total_price_without_tax * 0.1); else.... Link to comment Share on other sites More sharing options...
REGE Posted March 15, 2016 Share Posted March 15, 2016 maraguta,problem polega na tym, że w PrestaShop masz już zdefiniowany element o id total_product, a atrybut id musi być niepowtarzalny w obrębie strony! Tak więc spróbuj zmienić id swojego elementu (zarówno w HTML jak i w JS). Link to comment Share on other sites More sharing options...
REGE Posted March 15, 2016 Share Posted March 15, 2016 Adam40, znajdź plik /themes/nazwa_szablonu/js/product.js, odszukaj function updatePrice() a następnie fragment kodu: $('#our_price_display').text(formatCurrency(priceWithDiscountsDisplay * currencyRate, currencyFormat, currencySign, currencyBlank)).trigger('change'); i poniżej dodaj kod odświeżający Twoją cenę: $('#id_twojej_ceny').text(formatCurrency(priceWithDiscountsDisplay * currencyRate + 20, currencyFormat, currencySign, currencyBlank)).trigger('change'); 1 Link to comment Share on other sites More sharing options...
maraguta Posted March 17, 2016 Author Share Posted March 17, 2016 (edited) maraguta,problem polega na tym, że w PrestaShop masz już zdefiniowany element o id total_product, a atrybut id musi być niepowtarzalny w obrębie strony! Tak więc spróbuj zmienić id swojego elementu (zarówno w HTML jak i w JS). zmieniłem id i co najważniejsze dodałem formatCurrency, currencyFormat, currencySign, currencyBlank. Teraz działa bez odświeżania całej strony. Dzięki Pozdrawiam Edited March 17, 2016 by maraguta (see edit history) Link to comment Share on other sites More sharing options...
Adam40 Posted March 22, 2016 Share Posted March 22, 2016 Adam40, znajdź plik /themes/nazwa_szablonu/js/product.js, odszukaj function updatePrice() a następnie fragment kodu: $('#our_price_display').text(formatCurrency(priceWithDiscountsDisplay * currencyRate, currencyFormat, currencySign, currencyBlank)).trigger('change'); i poniżej dodaj kod odświeżający Twoją cenę: $('#id_twojej_ceny').text(formatCurrency(priceWithDiscountsDisplay * currencyRate + 20, currencyFormat, currencySign, currencyBlank)).trigger('change'); REGE kod działa przy zmianie atrybutów i też nie odświeża całej strony. Dzięki! 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