# Gelöst: Inaktive Varianten ausblenden

**URL:** <https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [15. Mai 2012 um 14:12 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127 "2012-05-15T14:12:10Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [15. Mai 2012 um 14:12 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/1 "2012-05-15T14:12:10Z")

</div>

Ich möchte inaktive Varianten ausblenden und habe dafür eine abgewandelte details/buy.tpl geschrieben: [code]{extends file="…/\_default/frontend/detail/buy.tpl"} {block name=‘frontend\_detail\_buy\_variant’ replace} {s name=“DetailBuyValueSelect”}{/s} {if (!isset($sArticle.active) || $sArticle.active)} \<option value="{$sArticle.ordernumber}"\> {if $sArticle.additionaltext} {$sArticle.additionaltext} {else} {$sArticle.articleName} {/if} \</option\> {/if} {foreach from=$sArticle.sVariants item=variant} {if ($variant.active)} \<option value="{$variant.ordernumber}"\> {if $variant.additionaltext} {$variant.additionaltext} {else} {$variant.ordernumber} {/if} \</option\> {/if} {/foreach} \</select\> {/block}[/code] Leider funktioniert die Abfrage auf "active" nur für den Hauptartikel. Das Feld "active" in den article\_details ist korrekt belegt, wird hier aber offenbar nicht abgefragt. Mit dem Skript oben werden alle Varianten ausgeblendet. Aufgefallen ist mir noch, das in der Tabelle s\_articles das Feld "active" als int(1) definiert ist, während "aktive" in s\_articles\_details als int(11) definiert ist.

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [21. Mai 2012 um 17:57 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/2 "2012-05-21T17:57:39Z")

</div>

Offenbar wird die Variable “Active” für Varianten übehaupt nicht ausgewertet. Ich vermute man muss den entsprechenden Viewport so erweitern, dass das Feld “Acive” aus der sArticlesDetails an dieser Stelle zur Verfügung steht!?

---

<div class="post-metadata">

**Author:** ![SebastianKloepper](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sebastiankloepper/32/21435_2.png) [@SebastianKloepper](https://forum.shopware.com/u/SebastianKloepper)\
**Post date:** [21. Mai 2012 um 19:49 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/3 "2012-05-21T19:49:34Z")

</div>

Hi, ein active gibt es bei Varianten nicht! Das ist noch aus älteren Versionen in der DB Struktur. Du müsstest z.B. einfach im Template nach dem Lagerbestand gehen. Beispiel: Ausblenden wenn Bestand \< 1 Oder du nutzt ein eigenes Artikelattribut, mit dem du dann Varianten ein- und ausblenden kannst. Das müsstest du dann ebenfalls einfach im Template abfragen.

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [21. Mai 2012 um 20:36 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/4 "2012-05-21T20:36:26Z")

</div>

Auch wenn es eine alte Variable ist, gibt es sie noch und sie wird auch noch völlig korrekt von `$update = array("ordernumber"=\>$ordernumber, "instock"=\>$bestand, "active"=\>$active, "weight"=\>$gewicht);` gesetzt! Ausblenden bei Bestand=0 ist für den Shop, um den es hier geht leider keine Option. Es muss tatsächlich „Active“ auch für Varianten gesetzt werden können. Hier z.B. kann eine Größe temporär auch beim Vorlieferanten nicht lieferbar sein: [Shop](http://www.flashback.de/hanfprodukte/hanf-jeans/canvas-herren/944/hanf-jeans-blau). Diese soll dann inaktiv sein. Andere Größen sind kurzfristig lieferbar und sollen auch dann im Shop aktiv sein, wenn der Lagerbestand Null ist. Ein Attribut könnte nur alle oder keine Variante ausblenden, ist also auch nicht die Lösung. Da das richtige Feld mit den richtigen Daten in der richtigen Datenbanktabelle zur Verfügung steht, müsste es doch eine Möglichkeit geben, dieses auch abzufragen…

---

<div class="post-metadata">

**Author:** ![SebastianKloepper](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sebastiankloepper/32/21435_2.png) [@SebastianKloepper](https://forum.shopware.com/u/SebastianKloepper)\
**Post date:** [21. Mai 2012 um 21:12 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/5 "2012-05-21T21:12:19Z")

</div>

Hi, die Attribute kannst du natürlich für jede Variante setzen. Die sind Varianten-fähig. Wie bereits geschrieben, bietet Shopware standardmäßig keine Option an einzelne Varianten zu deaktivieren. Die Felder gibt es daher auch nicht im Backend. Dann muss du das Template also entsprechend umbauen, sowie die Variablen in der Storefront zur Verfügung stellen. Über ein Script/Schnittstelle müsste dann noch das DB Feld gefüllt werden. Ein Attribut wäre daher sicher schneller und die Attribute stehen dir überall wo es relevant ist zur Verfügung.

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [21. Mai 2012 um 22:32 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/6 "2012-05-21T22:32:54Z")

</div>

Wo muss man denn ansetzen, um in der buy.tpl die Variable zur Verfügung zu stellen? Die buy.tpl selbst anzupassen ist ja nicht das ganz große Problem, das Skript habe ich ja eingangs schon gepostet und solange `$update = array("ordernumber"=\>$ordernumber, "instock"=\>$bestand, $active"=\>$active, "weight"=\>$gewicht); $import-\>sArticle($update);` die Daten noch korrekt in die sArticlesDetails Tabelle schreibt muss da ja auch nichts mehr angepasst werden. Es müsste nur an geeigneter Stelle das active-Feld der sArticlesDetails ausgelesen und im Template zur Verfügung gestellte werden. Wo wäre das denn? Aber danke für den Tip mit den Attributen, als schnelle Lösung werde ich das so erstmal einbauen. Dazu wäre noch wichtig zu wissen, wie man in der Schleife `{foreach from=$sArticle.sVariants item=variant}` an den Attributwert kommt. $variant.attr4 funktioniert nicht.

---

<div class="post-metadata">

**Author:** ![mutabor](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/mutabor/32/16707_2.png) [@mutabor](https://forum.shopware.com/u/mutabor)\
**Post date:** [22. Mai 2012 um 08:14 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/7 "2012-05-22T08:14:51Z")

</div>

Hallo Tigersoft. Wenn Du das geschaft hast, kannst Du dann mal den Lösungsweg hier aufzeigen. Ich suche schon seit längerem nach einer Lösung für das Problem. Da ich mich mit dem ganzen Programmierzeug nicht so auskenne ist es eher ein learning bei doing. Ich danke im Voraus.

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [23. Mai 2012 um 14:44 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/8 "2012-05-23T14:44:14Z")

</div>

[quote=“Sebastian Klöpper”]Hi, Ein Attribut wäre daher sicher schneller und die Attribute stehen dir überall wo es relevant ist zur Verfügung.[/quote] Genau da hapert es. Wie kann ich in der details/buy.tpl auf die Attribute der Varianten zugreifen?

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [30. Mai 2012 um 10:40 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/9 "2012-05-30T10:40:20Z")

</div>

Hallo Herr Klöpper, ist hier noch mit einer Antwort zu rechnen?

---

<div class="post-metadata">

**Author:** ![Tigersoft](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@Tigersoft](https://forum.shopware.com/u/Tigersoft)\
**Post date:** [1. Juni 2012 um 17:51 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/10 "2012-06-01T17:51:48Z")

</div>

OK, selber gelöst. Mit `{$variant|@print\_r} ` kann man sich in Smarty einen Array Dump anzeigen lassen und wie Herr Klöpper richtig gesagt hat, sind die Attributwerte auch in dem Varianten-Array enthalten. Die komplette Lösung lautet also für “active” in attr4: [code] {\* Mastertemplate erben \*} {extends file="…/\_default/frontend/detail/buy.tpl"} {block name=‘frontend\_detail\_buy\_variant’ replace} {s name=“DetailBuyValueSelect”}{/s} {if (!isset($sArticle.active) || $sArticle.active)} \<option value="{$sArticle.ordernumber}"\> {if $sArticle.additionaltext} {$sArticle.additionaltext} {else} {$sArticle.articleName} {/if} \</option\> {/if} {foreach from=$sArticle.sVariants item=variant} {if $variant.attr4 &gt; 0} \<option value="{$variant.ordernumber}"\> {if $variant.additionaltext} {$variant.additionaltext} {else} {$variant.ordernumber} {/if} \</option\> {/if} {/foreach} \</select\> {/block} [/code] Keine Ahnung, warum das beim ersten Test nicht geklappt hat, vielleicht lag es am Variablentyp von attr4 [jetzt int(1)] oder am Cache.

---

<div class="post-metadata">

**Author:** ![phein123](https://avatars.discourse-cdn.com/v4/letter/p/b9e5f3/32.png) [@phein123](https://forum.shopware.com/u/phein123)\
**Post date:** [20. Oktober 2014 um 23:42 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/11 "2014-10-20T23:42:55Z")

</div>

Moin, Das sieht nach einer tollen Lösung aus - funzt bei mir aber nicht? Wo muss ich das genau einbauen, und ist das für die aktuelle Shopware Version überhauopt noch gültig? Vielen Dank… 🙂

---

<div class="post-metadata">

**Author:** ![janico](https://avatars.discourse-cdn.com/v4/letter/j/e95f7d/32.png) [@janico](https://forum.shopware.com/u/janico)\
**Post date:** [16. März 2015 um 17:34 UTC](https://forum.shopware.com/t/gelost-inaktive-varianten-ausblenden/7127/12 "2015-03-16T17:34:22Z")

</div>

\*up\* Ist dies Lösung überhaupt noch gültig? Funktioniert bei mir net. Conexeco Template: 2.2.1 Shopware: 4.3.3 Kann hier jemand ein Input geben? Besten Dank und Gruss Cyril [quote=“Tigersoft”]OK, selber gelöst. Mit `{$variant|@print\_r} ` kann man sich in Smarty einen Array Dump anzeigen lassen und wie Herr Klöpper richtig gesagt hat, sind die Attributwerte auch in dem Varianten-Array enthalten. Die komplette Lösung lautet also für “active” in attr4: [code] {\* Mastertemplate erben \*} {extends file="…/\_default/frontend/detail/buy.tpl"} {block name=‘frontend\_detail\_buy\_variant’ replace} {s name=“DetailBuyValueSelect”}{/s} {if (!isset($sArticle.active) || $sArticle.active)} \<option value="{$sArticle.ordernumber}"\> {if $sArticle.additionaltext} {$sArticle.additionaltext} {else} {$sArticle.articleName} {/if} \</option\> {/if} {foreach from=$sArticle.sVariants item=variant} {if $variant.attr4 &gt; 0} \<option value="{$variant.ordernumber}"\> {if $variant.additionaltext} {$variant.additionaltext} {else} {$variant.ordernumber} {/if} \</option\> {/if} {/foreach} \</select\> {/block} [/code] Keine Ahnung, warum das beim ersten Test nicht geklappt hat, vielleicht lag es am Variablentyp von attr4 [jetzt int(1)] oder am Cache.[/quote]
