@leoenergy
Also die Checkbox muss auch eine gecodete Logik auslösen, ist das richtig? Wenn der Besucher die Checkbox ankreuzt dann wird der Nettopreis im Warenkorb berechnet. Wenn er die Checkbox nicht ankreuzt dann wird der Bruttopreis berechnet, stimmt’s?
Eine Checkbox in ein Code Block der Produktseite oder in eine Cart Vorlage (mehr dazu hier) händisch programmieren ist machbar - mehr dazu hier (bitte immer zuerst in einer Testumgebung testen bevor man es im Live Theme implementiert). Aber dann die folgende Bedingungslogik noch dazu wird schwierig wenn kaum machbar denn es verlangt einen Call an einen Tax Engine Endpoint im API:
- IF Checkbox = True
- THEN pull total gross price
- ELSE pull net price
Bitte alles weitere mit einem Experten besprechen:
Einen Code den du in den cart.js einbauen kannst um eine Checkbox an einer bestimmten Stelle erscheinen zu lassen die man bestätigen muss sähe wie das folgende Code aus (die Text Strings wie erforderlich anpassen):
Show More
markup $(document).ready(function() { $('body').on('click', '[name="checkout"], [name="goto_pp"], [name="goto_gc"]', function() { if ($('#agree').is(':checked')) { $(this).submit(); } else { alert("Hiermit bestätigen Sie, dass Sie die Bedingung erfüllen.....usw."); return false; } }); });
Finde im main-cart-footer.liquid das HTML Code für den checkout button wie ein <button> oder <input> Element mit dem name attribute = checkout. Das Code könnte wie folgt aussehen:
Auf einer frischen Zeile oberhalb des obigen Checkout Button Codes, füge den folgenden Code ein:
Verwende auch ggf. einen <a href="/pages/terms-and-conditions" target=“_blank”> anstatt bloss <a href="/pages/terms-and-conditions"> so dass die ursprüngliche Warenkorbseite intakt bleibt. Bei dem Code öffnet sich auch die Seite mit den jeweiligen Geschäftsbedingungen in einem neuen Tab, das nach dem Lesen geschlossen werden kann, während das Fenster des Warenkorbs weiterhin für den Kunden zur Kasse bereitsteht. Dies ist notwendig so dass der Kunde darüber lesen kann bevor er zustimmt.
Um den Netto- oder Bruttoproduktpreis und den Gesamtbetrag auf der Warenkorb-Seite anzuzeigen, je nachdem, ob ein Kunde das Kästchen ankreuzt oder nicht, muss man einige Anpassungen im Code vornehmen. Die gesamten Schritte dazu (in einer Testumgebung testen zusammen mit einem Experten):
- Erstelle das Kontrollkästchen wie oben beschrieben mit dem der Kunde zwischen Netto- und Bruttopreisen umschalten kann.
- Füge JavaScript hinzu, um die Umschaltung zw. Netto und Brutto zu steuern: Du musst JavaScript-Code schreiben, um die Umschaltung zu steuern und die Preise und den Gesamtbetrag zu aktualisieren, wenn das Kästchen markiert oder nicht markiert ist.
- Aktualisiere die Liquid-Vorlage damit die Netto- oder Bruttopreise und die Gesamtsumme angezeigt werden, je nachdem, ob das Kontrollkästchen aktiviert ist oder nicht.
Hier ist ein Beispiel für JavaScript, dass du verwenden kannst, um das Umschalten des Kontrollkästchens zu steuern und die Preise und den Gesamtbetrag zu aktualisieren:
Show More
markup // Get the checkbox element var checkbox = document.getElementById("toggle-prices"); // Listen for changes to the checkbox checkbox.addEventListener("change", function() { // Get all the price elements on the page var prices = document.getElementsByClassName("price"); // Loop through all the price elements for (var i = 0; i < prices.length; i++) { // Get the current price var price = parseFloat(prices[i].textContent.replace("$", "")); // Calculate the new price var newPrice = (checkbox.checked) ? price * 1.2 : price / 1.2; // Update the price element with the new price prices[i].textContent = "$" + newPrice.toFixed(2); } // Update the total amount var total = document.getElementById("total-amount"); total.textContent = "$" + calculateTotal().toFixed(2); }); // Calculate the total amount function calculateTotal() { // Get all the price elements on the page var prices = document.getElementsByClassName("price"); // Calculate the total amount var total = 0; for (var i = 0; i < prices.length; i++) { total += parseFloat(prices[i].textContent.replace("$", "")); } return total; }
Hier ist ein Beispiel für Liquid, um die Netto- oder Bruttopreise je nach Zustand des Kontrollkästchens anzuzeigen:
{{ line_item.price | money }}
Hier wird der price Wert wird mit 1,2 multipliziert oder durch 1,2 geteilt, je nach Zustand des Kontrollkästchens, der vom JavaScript-Code gesteuert wird.
Beachte, dass du das Kontrollkästchen in die Cart Vorlage einfügen und sicherstellen musst, dass es eine id des toggle-prices Wert für den JavaScript Code hat um korrekt zu funzen. Außerdem musst du sicherstellen, dass die Preiselemente eine price Klasse hat um den JavaScript zu finden und aktualisieren.
Das alles sind aber nur Ideen ohne Gewähr! Um letztendlich eine solche Lösung umzusetzen wirst du einen Programmierer heuern müssen und gerne kann ich welche empfehlen.
VG,