# Bestimmte Warenkorb Menge für alle Artikel - erst dann bestellbar ?!?

**URL:** https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395
**Category:** Programmierung
**Created:** [25. Juli 2021 um 08:31 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395 "2021-07-25T08:31:19Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [25. Juli 2021 um 08:31 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/1 "2021-07-25T08:31:19Z")

</div>

Hallo zusammen,

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.

DANKE IN VORRAUS

Gruß TOM

---

<div class="post-metadata">

### Author: ![SmartStylez](https://avatars.discourse-cdn.com/v4/letter/s/a88e4f/32.png) [@SmartStylez](https://forum.shopware.com/u/SmartStylez)
#### Post date: [25. Juli 2021 um 08:36 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/2 "2021-07-25T08:36:46Z")

</div>

Hast du es einmal über die „Mindestabnahme“ beim Produkt selbst versucht?

---

<div class="post-metadata">

### Author: ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)
#### Post date: [27. Juli 2021 um 07:28 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/3 "2021-07-27T07:28:30Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [2. August 2021 um 11:23 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/4 "2021-08-02T11:23:52Z")

</div>

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?

Vielen Dank im voraus

---

<div class="post-metadata">

### Author: ![phil](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/phil/32/13661_2.png) [@phil](https://forum.shopware.com/u/phil)
#### Post date: [2. August 2021 um 19:36 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/5 "2021-08-02T19:36:26Z")

</div>

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)

Ich würde daher ein Custom Theme anlegen (siehe [Doku](https://docs.shopware.com/de/shopware-5-de/tutorials-und-faq/aenderungen-am-template-vornehmen?category=shopware-5-de/tutorials-und-faq)) und dort den Checkout entsprechend ergänzen. Dazu musst du mindestens folgende Dateien ableiten und anpassen:  
[shopware/actions.tpl](https://github.com/shopware/shopware/blob/5.7/themes/Frontend/Bare/frontend/checkout/actions.tpl)  
[shopware/cart.tpl](https://github.com/shopware/shopware/blob/5.7/themes/Frontend/Bare/frontend/checkout/cart.tpl)  
[shopware/error\_messages.tpl](https://github.com/shopware/shopware/blob/5.7/themes/Frontend/Bare/frontend/checkout/error_messages.tpl)

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.

LG Phil

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [4. August 2021 um 17:20 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/6 "2021-08-04T17:20:09Z")

</div>

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?

---

<div class="post-metadata">

### Author: ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)
#### Post date: [5. August 2021 um 06:20 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/7 "2021-08-05T06:20:12Z")

</div>

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.

```auto
{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}

```

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [5. August 2021 um 06:30 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/8 "2021-08-05T06:30:45Z")

</div>

Guten Morgen R4M, das sieht sehr gut aus, ich probiere es direkt mal aus.  
Melde mich gleich direkt nochmal wie die funktion sich macht.

Danke schon mal in voraus 👍

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [5. August 2021 um 07:07 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/9 "2021-08-05T07:07:33Z")

</div>

Hallo R4M,

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:

{extends file=„parent:frontend/checkout/ajax\_cart.tpl“}

{block name=‚frontend\_checkout\_ajax\_cart\_alert\_box‘}  
{$smarty.block.parent}  
{if {$sBasket.Amount} \< 25}

class=„kita–alert is–info is–rounded“\>  
{include file=„frontend/\_includes/messages.tpl“ type=„warning“ content="{s name=‚sKitaConfirmInfoMinimumSurcharge‘}Mindestbestellwert 3 Kisten Ihrer Wahl{/s}"}  
gt;  
{else}  
{if {$sBasket.Amount} \< 0}

class=„kita–alert is–info is–rounded“\>  
{include file=„frontend/\_includes/messages.tpl“ type=„warning“ content="{s name=‚sKitaConfirmInfoMinimumSurcharge‘}Mindestbestellwert 0,00 EUR{/s}"}  
gt;  
{/if}  
{/if}

Dieser funktioniert.

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?

Besten Dank

---

<div class="post-metadata">

### Author: ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)
#### Post date: [5. August 2021 um 07:11 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/10 "2021-08-05T07:11:31Z")

</div>

Die „cart.tpl“ muss natürlich in DEIN eigenes Theme! Danach das Theme neu kompilieren.

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [5. August 2021 um 07:28 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/11 "2021-08-05T07:28:09Z")

</div>

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.

PS: Habe mal eine Screenshot beigefügt

 ![Opera Momentaufnahme_2021-08-05_092618](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/5/50cc88f43a1394a7edb52c02cc5600341cd3149f.png)

Und mit meiner Mindestbestellwert sieht es so aus aber da gibt er mir nur die Info Ausgabe und nicht die Kiste Anzahl

 ![Opera Momentaufnahme_2021-08-05_092618_2](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/9/95d129cfe1d6e5490963c48e8c1032f062378b10.png)

---

<div class="post-metadata">

### Author: ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)
#### Post date: [5. August 2021 um 07:40 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/12 "2021-08-05T07:40:31Z")

</div>

Wie schon erwähnt, es ist nur ein einfach Beispiel für den NORMALEN Warenkorb!

Normaler Warenkorb → cart.tpl  
Offcanvas Warenkorb → ajax\_cart.tpl

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.

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [5. August 2021 um 07:50 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/13 "2021-08-05T07:50:10Z")

</div>

Ich nochmal 😉

So sehen meine beiden Templates aus–\>  
Einmal die cart.tpl von dir die in dem Eigenen Theme hinterlegt ist:

```auto
{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}

```

Und einmal das Template für die ajax\_cart.tpl das auch in dem Eigene Theme liegt.

```auto
{extends file='parent:frontend/checkout/ajax_cart.tpl'}

{block name="frontend_checkout_actions_confirm"}

  {if $sBasket.content|count > 2}
    {$smarty.block.parent}
  {else}
  {include file=„frontend/_includes/messages.tpl“ type=„warning“ content="{s name=‚sKitaConfirmInfoMinimumSurcharge‘}Mindestbestellwert 3 Kisten Ihrer Wahl{/s}"}
    
  {/if}

{/block}

```

```auto
{block name="frontend_checkout_actions_confirm_bottom"}

  {if $sBasket.content|count > 2}
    {$smarty.block.parent}
  {else}
  {include file=„frontend/_includes/messages.tpl“ type=„warning“ content="{s name=‚sKitaConfirmInfoMinimumSurcharge‘}Mindestbestellwert 3 Kisten Ihrer Wahl{/s}"}
    
  {/if}

{/block}

```

PS: Kannst Du damit evtl. etwas anfangen?

Danke im voraus

---

<div class="post-metadata">

### Author: ![phil](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/phil/32/13661_2.png) [@phil](https://forum.shopware.com/u/phil)
#### Post date: [6. August 2021 um 19:07 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/14 "2021-08-06T19:07:33Z")

</div>

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…

LG Phil

---

<div class="post-metadata">

### Author: ![seotom](https://avatars.discourse-cdn.com/v4/letter/s/ba9def/32.png) [@seotom](https://forum.shopware.com/u/seotom)
#### Post date: [16. August 2021 um 06:11 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/15 "2021-08-16T06:11:57Z")

</div>

Moin Phil,  
hast du da eine Idee wie es mit der {foreach} funktioniert?

Beste Grüße  
SeoTom

---

<div class="post-metadata">

### Author: ![phil](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/phil/32/13661_2.png) [@phil](https://forum.shopware.com/u/phil)
#### Post date: [17. August 2021 um 12:34 UTC](https://forum.shopware.com/t/bestimmte-warenkorb-menge-fuer-alle-artikel-erst-dann-bestellbar/89395/16 "2021-08-17T12:34:18Z")

</div>

Kuckst Du Smarty Doku: [{foreach}, {foreachelse} | Smarty](https://www.smarty.net/docsv2/de/language.function.foreach.tpl)

LG Phil
