Jump to content

<Solved> Versandgewicht refresh


Claudiocool

Recommended Posts

Hallo zusammen,

 

mir fiel gerade auf, wenn ich im Warenkorb bin und bei einem Artikel die Menge ändere, bleibt das Versandgewicht dasselbe, es aktualisiert sich nicht.

Oha, dachte ich, da kann einem dann ein ausländischer Kunde, der ja Versandkosten nach Gewicht bezahlen muss, ein nettes Schnippchen schlagen... Neee, das funktioniert kurioserweise....

 

So, also zeigt er das neue versandgewicht nur nicht an, gerechnet wird es aber korrekt. Also scheint hier nur die Anzeige nicht zu refreshen.

 

Ist das bei Euch auch so?

 

Ich frage, weil ich ausschließen möchte, dass hier irgendein Modul reinspuckt.

Edited by Claudiocool (see edit history)
Link to comment
Share on other sites

  • 3 months later...

Hm..... ein Screenshot von meiner Waage bei meinen 120kg? :D

 

okay, keine Sorge, hab schon verstanden, hihi.....

 

Der erste Shot zeigt einen Artikel, der wird mit 500g angezeigt, alles passt. Dann gehe ich auf das Plus-Symbol und erhöhe auf 5, alle Preise gehen mit, nur das Gewicht wird nicht refreshed ind er Anzeige, obwohl der Wert später in der versandkostenrechnung stimmt.

 

post-1323095-0-00620300-1500500411_thumb.jpg

 

post-1323095-0-14202800-1500500421_thumb.jpg

Link to comment
Share on other sites

Da muss ich dann nach einer Option suchen. Bei mir im Warenkorb steht da nix.

 

Aber trotzdem:

 

Ich habe mir das Javascript des Warenkorbs kürzlich wegen anderer Herausforderungen zur Brust genommen.

Es ist eine Herausforderung, sich da zurechtzufinden.

 

Aber am Ende werden es nicht mehr als etwa 3 Zeilen sein - SOFERN das Gesamtgewicht im Browser auch immer ankommt.

Die Sache im Browser selbst per Javascript ausrechnen will man nicht.

Link to comment
Share on other sites

Kurze Erklärung noch - auf das Risiko hin, dass gewisse Leute das hier auch schon wissen.

 

Der Warenkorb wird - egal ob Front- oder Backend sehr stark durch Javascript gesteuert. D.h. die Seite wird nur einmal zu Beginn geladen, danach passiert alles per Script (d.h. auf dem Client/im Browser). Die Seite bleibt also bestehen, aber die Inhalte ändern sich.

 

Das einzige, was der Server dann jeweils liefert, sind Daten, welche durch AJAX-Requeste (im Browser-Dev.Tool als XHR angezeigt) angefordert werden. Zu AJAX lese man hier: https://de.wikipedia.org/wiki/Ajax_(Programmierung)

 

Z.B. bei Änderung der Menge muss ein neuer Endpreis her. Dieser kommt - Staffelpreise sei dank - via AJAX vom Server. Nur der kann die neuen Preise liefern. Dann gibt es AJAX-Requeste für die Berechnung der Versandkosten, Änderung von Adressen, lesen oder akzeptieren der AGB und noch VIELES mehr.

 

Die Frage ist nun, ob das Gesamtgewicht nur Initial beim Anzeigen des Korbes übermittelt wird, oder ob es dafür einen passenden AJAX - Request (in Javascript) bzw. dessen Handler (in PHP) gibt. Ist das der Fall, dann kann man diesen Handler über einen Event triggern, so dass er bei jedem Produkte-Update ausgeführt wird. Das wären dann ca. 1-3 Zeilen Code. Gibt es den Handler für Gewicht bzw. Gewichtsänderungen nicht, muss man ihn erst schreiben.

Edited by Scully (see edit history)
Link to comment
Share on other sites

Hallo zusammen,

 

mir fiel gerade auf, wenn ich im Warenkorb bin und bei einem Artikel die Menge ändere, bleibt das Versandgewicht dasselbe, es aktualisiert sich nicht.

Oha, dachte ich, da kann einem dann ein ausländischer Kunde, der ja Versandkosten nach Gewicht bezahlen muss, ein nettes Schnippchen schlagen... Neee, das funktioniert kurioserweise....

 

So, also zeigt er das neue versandgewicht nur nicht an, gerechnet wird es aber korrekt. Also scheint hier nur die Anzeige nicht zu refreshen.

 

Ist das bei Euch auch so?

 

Ich frage, weil ich ausschließen möchte, dass hier irgendein Modul reinspuckt.

 

Hallo Claudio,

wenn ich das so lese, vermute ich mal, daß du die Änderungen, unserer allseits so geschätzten Moderatoren-Kollegin vorgenommen hast, wie z.B. hier beschrieben :

https://www.prestashop.com/forums/topic/453596-how-to-show-weight-of-product-in-your-shopping-cart/?do=findComment&comment=2413288

 

Und so geht es richtig:

Du öffnest

/themes/deintheme/shopping-cart.tpl

vor </tfoot> (ca Zeile 303)

trägst du ein:

 

<td colspan="{$col_span_subtotal}" class="text-right"><span>{l s='Total weight'}</span></td>

<td colspan="2" class="price"><span class="ajax_block_cart_weight">{$cart->getTotalWeight()|escape:'htmlall':'UTF-8'|number_format:3} {Configuration::get('PS_WEIGHT_UNIT')}</span></td>

</tr>

 

Dann öffnest du die

 /themes/deintheme/modules/blockcart/blockcart-json.tpl
dort suchst du die zeile (ca 94):
"shippingCost": {$shipping_cost|json_encode},
und gibst darunter die neue Zeile ein:

 

"totalWeight": {$total_weight|json_encode},

 

Dann öffnest du die:

 /modules/blockcart/blockcart.php
suchst dort die Zeile (ca 82):
$totalToPay = $params['cart']->getOrderTotal($useTax);
und gibst darunter die neue Zeile ein:

 

$totalWeight = $params['cart']->getTotalWeight().' '.Configuration::get('PS_WEIGHT_UNIT');

 

in der gleichen Datei suchst du die Zeile (ca 155):
'static_token' => Tools::getToken(false),
und gibst darunter die neue Zeile ein:

 

'total_weight' => $totalWeight,

 

als letztes öffnest du die Datei:

/themes/deintheme/js/modules/blockcart/ajax-cart.js
suchst dort die Zeile(ca 811:
$('.ajax_total_price_wt').text(jsonData.total_price_wt);
und gibst darunter die neue Zeile ein:

 

$('.ajax_block_cart_weight').text(jsonData.totalWeight);

Kompillieren nicht vergessen!

 

Grüsse

Whiley

 

 

Link to comment
Share on other sites

 

 

 

als letztes öffnest du die Datei:

/themes/deintheme/js/modules/blockcart/ajax-cart.js
suchst dort die Zeile(ca 811:
$('.ajax_total_price_wt').text(jsonData.total_price_wt);

 

 

 

Hi Whiley, diese Zeile existiert nicht in der Datei....

 

Und die im ersten Abschnitt genannte Aänderung in der shopping Cart.tpl war schon so drin....

Link to comment
Share on other sites

Hallo Claudio,

der Bereich liegt abhängig von der Shopversion  so bei Zeile 790 - 820

das sieht dort etwa so aus:

 

    //update general cart informations everywhere in the page
    updateCartEverywhere : function(jsonData){
        $('.ajax_cart_total').text($.trim(jsonData.productTotal));

        if (typeof hasDeliveryAddress == 'undefined')
            hasDeliveryAddress = false;

        if (parseFloat(jsonData.shippingCostFloat) > 0)
            $('.ajax_cart_shipping_cost').text(jsonData.shippingCost).parent().find('.unvisible').show();
        else if ((hasDeliveryAddress || typeof(orderProcess) !== 'undefined' && orderProcess == 'order-opc') && typeof(freeShippingTranslation) != 'undefined')
            $('.ajax_cart_shipping_cost').html(freeShippingTranslation);
        else if ((typeof toBeDetermined !== 'undefined') && !hasDeliveryAddress)
            $('.ajax_cart_shipping_cost').html(toBeDetermined);

        if (!jsonData.shippingCostFloat && !jsonData.free_ship)
            $('.ajax_cart_shipping_cost').parent().find('.unvisible').hide();
        else if (hasDeliveryAddress && !jsonData.isVirtualCart)
            $('.ajax_cart_shipping_cost').parent().find('.unvisible').show();

        $('.ajax_cart_tax_cost').text(jsonData.taxCost);
        $('.cart_block_wrapping_cost').text(jsonData.wrappingCost);
        $('.ajax_block_cart_total').text(jsonData.total);
        $('.ajax_block_products_total').text(jsonData.productTotal);
        $('.ajax_total_price_wt').text(jsonData.total_price_wt);
        $('.ajax_block_cart_weight').text(jsonData.totalWeight);

        if (parseFloat(jsonData.freeShippingFloat) > 0)

 

Wenn das bei dir anders aussehen sollte häng mal die komplette ajax-cart.js als Anhang an einen post

Grüsse Whiley

Link to comment
Share on other sites

Oooopppsssss. wer lesen kann.... Ich hatte gestern abend warum auch immer die Zeile 157 gesucht :)

Ich werde es heute abend dann in Ruhe testen und berichten.

 

Der erste Abschnitt war schon geändert, aber ich habe gesehen, dass das nur bei Shops ohne AEUC funktionieren wird, was ich natürlich damals im Eifer des Gefechts großzügig übersehen hatte, daher vermute ich, werden deine Codesnippets die Sache wieder richten.

 

Ich werde dann berichten.

Link to comment
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...