ich habe da ein kleines Problem mit der Mindestbestellabnahme in den Warenkorb.
Wir haben einen Getränke-Shop mit Shopware 5, und möchten das man nicht weniger als 3 Kisten bestellen kann, erst dann soll der Bestellbutton aktiv sein.
Es soll nicht über den Mindestbestellwert laufen (Da die Kisten unterschiedliche Preise haben). Es sollen aber auch 3 unterschiedliche Kisten gekauft werden können.
Hat da einer eine Idee wie ich das Problem lösen kann?
Gibt es da eine Abfrage zu, wie z.B.
„Wenn 3Kisten dann Bestellbutton aktiv und wenn nur 2 oder weniger Kisten dann Bestellbutton deaktiviert“.
Danke im voraus
PS: Es sollte über eine Script gelöst werden und nicht über die im Backend Produkt Mindestabnahme, da 1 Kiste gekauft werden kann aber solange nicht mindestens 3 unterschiedliche oder gleiche Kisten im Warenkorb sein dürfen.
Ich hoffe ich habe es soweit gut erklärt, dass es verständlich ist. WENN NICHT BITTE NACHFRAGEN.
Die einfach Variante wäre im Warenkorb die Anzahl zu ermitteln und den Button ggf. zu blockieren oder mittels CSS zu deaktivieren (durch setzen einer CSS Klasse) - hm, das müsste im Template machen sein, wenn die Anzahl 3 fest ist. Ist jetzt nur so eine Idee, habe ich selber noch nicht ausprobiert.
Sollte das noch von anderen Faktoren abhängig oder beeinflussbar sein, dann wäre eine Plugin-Lösung der richtige Weg.
Erstmal vielen Dank für die Info.
Ja so weit bin ich ja auch, dass man es mit einer Abfrage schön lösen könnte, hast du da ein Ansatz für mich evtl. Also wo wie in etwas SERVER_REQUEST_… denke das es nur ein Ansatz ist.
Brauche nur leider wie schon beschrieben HILFE wie man es genau umsetzt.
Eine Abfrage auf eine URI ist kein Problem, nur wie mache ich das auf den Warenkorb Inhalt?
Nur den Button zu blockieren führt aber zu sofort zu Frust, da der Kunde ja nicht weiß warum das so ist.
Außerdem stellt sich die Frage, ob diese Regel für alle Artikel gilt oder nur für bestimmte (=> ggf. zusätzliches Freitextfeld am Artikel)
Wenn Du in deinem Theme den OffCanvas-Warenkorb nutzt (also der am rechten Rand einblendet sobald du einen Artikel in den Warenkorb legst), kannst Du die Variable $basketInfoMessage setzen, um der BenutzerIn direkt nach Änderungen im Warenkorb einen Hinweis zu geben, dass er/sie noch weitere Artikel in den Warenkorb legen muss, um die Bestellung abschließen zu können.
Sicher kann man auch ein Plugin bauen, aber wenn Du das nur für einen Shop benötigst, dann lohnt der zusätzliche Aufwand nicht, einfach eigenes Theme erstellen und ändern, fertig.
Falls Du Dich nicht so tief in Shopware reinschaffen willst, würde ich dir empfehlen, professionelle Hilfe in Anspruch zu nehmen.
Hallo phil, auf die Frage zurückzukommen, ob ich alle Artikel damit abfragen möchte, Ja ich möchte das es bei allen Artikel funktioniert. Der User, der dann bestellen will, bekommt eine Info, wenn er nur 1 oder 2 Artikel in den Warenkorb hat.
Leider habe ich keinen Ansatz an Code dafür, dieser würde mir schon helfen wie ich die Abfrage mache, wenn 1 oder 2 Artikel im Warenkorb sind, wird der Button einfach auf „is–icon-right is–disabled“ setzen.
Das eigene Theme habe ich ja auch schon, das ist nicht das Problem, auch im Code weiß ich schon wo ich was finde. Nur mir fehlt der Code in Smarty eine Abfrage wie z.b. bei PHP, da geht, es ja, auch wenn ich abfrage, wenn URL dann führe dieses oder jenes aus. Nur in Smarty code, wenn wie viele Artikel im Warenkorb sind, fehlt mir halt.
Hättest du da eine code für mich denn ich dann anpassen kann?
Das ist nur ein ganz einfaches Beispiel! Einfach in einer Testumgebung testen und ggf. noch anpassen. Mehr ist es eigentlich nicht. Es blendet die Button komplett aus. Man kann es aber auch umstellen um den Button eine zusätzliche CSS Klasse zu verleihen, welche den Button auf inaktiv setzt.
{extends file='parent:frontend/checkout/cart.tpl'}
{block name="frontend_checkout_actions_confirm"}
{if $sBasket.content|count > 2}
{$smarty.block.parent}
{else}
Bitte mind. 3 Artikel in den Warenlob legen.
{/if}
{/block}
{block name="frontend_checkout_actions_confirm_bottom"}
{if $sBasket.content|count > 2}
{$smarty.block.parent}
{else}
Bitte mind. 3 Artikel in den Warenlob legen.
{/if}
{/block}
leider tut sich da nichts, wenn ich es in meinem Theme einbinden unter frontend/checkout/cart.tpl , habe ich da was vergessen?
Ich habe in der frontend/checkout/ajax_cart.tp drin, die den Hinweis gibt, wenn was in den Warenkorb gelegt wird Mindestbestellwert. Diese Funktion benötige ich ja dann nicht mehr wenn deine Funktioniert.
Folgender Code:
Ich hatte aber lieber dein Code wenn er funktionieren würde, denn hier habe ich die Möglichkeit so wie ich das aus deinem Code sehe, individuell einzustellen wie viele Artikel.
Könntest Du da bitte nochmal drüber schauen, was ich falsch mache?
Habe ich gemacht, ich habe die cart.tpl in Frontend/EIGENES-THEME/frontend/checkout drin, habe den Cache und alles neue kompiliert aber im Warenkorb „offcanvas“ kommt leider weder die Meldung "Bitte mind. 3 Artikel in den Warenlok legen. " noch irgendwas, ich kann Artikel rein legen, selbst bei einem ist der Button Aktiv. Ich glaube ich sehe den Wald vor lauter Bäumen nicht.
Wenn Anpassungen, dann muss es in beiden Templates passieren. In der „ajax_cart.tpl“ verbirgt sich der Button im Block „{block name=‚frontend_checkout_ajax_cart_open_checkout_inner‘}“. Muss also auch ein extra Template angelegt werden.
Naja, eigentlich funktioniert es ja, aber da halt noch weitere Artikel im Warenkorb liegen (Pfand, Mindermengenzuschlag) und somit die Bedingung „Anzahl Positionen im Warenkorb > 2“ erfüllt ist, ist es halt doch nicht so einfach wie gedacht.
Vermutlich musst du doch einen {foreach} über alle Einträge machen, und zB nur die aus einer bestimmten Kategorie zählen…