Gelöst: Inaktive Varianten ausblenden

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}

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!?

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.

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. 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…

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.

1 Like

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.

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.

[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?

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

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}

1 Like

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… :slight_smile:

*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}