Ist es machbar/möglich, dass Varianten mit Bestand 0 autoamtisch im Frontend nicht mehr angezeigt werden?
Ein- oder mehrdimensionale Varianten?
eindimensionale, Frage brauch ich auch…
Eindimensionale.
Datei frontend/detail/buy.tpl Vorher {foreach from=$sArticle.sVariants item=variant} <option value="{$variant.ordernumber}">
{if $variant.additionaltext}
{$variant.additionaltext}
{else}
{$variant.ordernumber}
{/if}
</option> {/foreach}
Nachher {foreach from=$sArticle.sVariants item=variant} {if $svariant.instock \> 0} <option value="{$variant.ordernumber}">
{if $variant.additionaltext}
{$variant.additionaltext}
{else}
{$variant.ordernumber}
{/if}
</option>{/if} {/foreach}
Cool Danke :thumbup: Funktioniert das jetzt auch bei bestehenden Varianten die schon auf 0 sind, oder nur bei neu angelegten?
Das dürfte auch bei bestehenden funktionieren. Der DB-Cache verhindert ggf. das die Daten in Echtzeit verfügbar sind - damit sich das IMMER auf den aktuellen Lagerbestand bezieht - kannst du mal in die Datei engine/core/class/sArticles.php schauen. Dort ca. Zeile 2887. $getArticleVariants =$this-\>sSYSTEM-\>sDB\_CONNECTION-\>CacheGetAssoc($this-\>sSYSTEM-\>sCONFIG['sCACHEARTICLE'],$sql,false,"article\_".$getArticle["articleID"]);
Da müsste man das CacheGetAssoc durch GetAssoc ersetzen…
ich bekomm da nen error: SQLSTATE[42000] 86400’
Ah sorry. $this-\>sSYSTEM-\>sCONFIG['sCACHEARTICLE'],
Diesen Teil auch entfernen!! Also das $sql der erste Parameter der Funktion ist!
Dann gibt es ne Fehlermeldung: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '86400' at line 1 in Vendor/Zend/library/Zend/Db/Statement/Pdo.php on line 234
Wenn ich das als CacheGetAssoc aktualisiert sich das wann?
Okay nun habe ich ein Problem. Nun wird nur noch die erste Variante angezeigt. Hab die Originaldatei wieder hochgeladen. Bleibt aber so…
Schick mir mal kurz FTP - Daten + Link zum Artikel per PN.
Funktioniert nun. Du hattest {$svariant.instock > 0} - also einen kleinen Schreibfehler! Ist in meiner Vorlage unten falsch. Sorry dafür Zusätzlich frage ich oben nun auch die Daten des Hauptartikels ab (ist ja letztlich auch eine Variante) und blende den ggf. auch aus. Hier nochmal der komplette Block. {block name='frontend\_detail\_buy\_variant'} <select name="sAdd" id="sAdd" class="variant">
<option value="">{s name="DetailBuyValueSelect"}{/s}</option>
{if $sArticle.instock > 0}
<option value="{$sArticle.ordernumber}">
{if $sArticle.additionaltext}
{$sArticle.additionaltext}
{else}
{$sArticle.articleName}
{/if}
</option>
{/if}
{foreach from=$sArticle.sVariants item=variant}
{if $variant.instock > 0}
<option value="{$variant.ordernumber}">
{if $variant.additionaltext}
{$variant.additionaltext}
{else}
{$variant.ordernumber}
{/if}
</option>
{/if}
{/foreach}
</select> {/block}
Dank dir! Mein Herz ist schon in die Hose gerutscht! :thumbup:
Edit