Es gibt auch ein Problem wenn man mehrere Attribute bei einem Produkt benutzt, z.B Größe und Farbe.
Wählt man nun zunächst die Größe wird Preisaufschlag und Artikelnummer korrekt angezeigt.
Wird danach noch die Farbe gewählt die keinen Preisaufschlag mehr beinhaltet, wird wieder auf den Ausgangspreis ohne Aufschlag zurück gesetzt.
Kann man da noch etwas machen? In meinen Fall würde es reichen wenn weitere Optionen die keinen Aufschlag haben und zusätzlich gewählt sind, beim Preis nicht berücksichtigt werden.
Dieses kleine Script ist nur für eindimensionale Attribute gedacht, wobei ich bei Kleidung (Größe und Farbe sowie Bestand) immer mein Master/Slave Modul verwenden würde.
Hier ein paar Zeilen die ausgetauscht werden können...
Preis aktualisieren, wenn dem Attribut eine Differenz zugewiesen wurde:
var o_model = {{/literal}{foreach name=o item=od from=$options}{foreach name=i item=oi from=$od.DATA}{if !($smarty.foreach.i.first && $smarty.foreach.o.first)},{/if}{$oi.ID}:{literal}{{/literal}model:"{$oi.MODEL}"{if $oi.PRICE != ''},price:"{if $oi.FULL_PRICE}{$oi.FULL_PRICE}{/if}"{/if}{literal}}{/literal}{/foreach}{/foreach}{*(c) hackersolutions.com*}{literal}};
Preis aktualisieren, wenn dem Attribut eine Differenz zugewiesen wurde und Artikelnummer nur ändern, wenn dem Attribut eine zugewiesen wurde:
var o_model = {{/literal}{foreach name=o item=od from=$options}{foreach name=i item=oi from=$od.DATA}{if !($smarty.foreach.i.first && $smarty.foreach.o.first)},{/if}{$oi.ID}:{literal}{{/literal}{if $oi.MODEL || $oi.PRICE}model:"{$oi.MODEL}"{if $oi.PRICE}{if $oi.MODEL},{/if}price:"{if $oi.FULL_PRICE}{$oi.FULL_PRICE}{/if}"{/if}{/if}{literal}}{/literal}{/foreach}{/foreach}{*(c) hackersolutions.com*}{literal}};
Damit bei einer Auswahl der zweiten Attributsgruppe (ohne Preis oder Artikelnummer) nicht der vorherige Wert genommen wird:
(typeof o_model[$(this).val()]['model'] != "undefined") ? p_model.html(o_model[$(this).val()]['model']) : '';
(typeof o_model[$(this).val()]['price'] != "undefined") ? p_price.html(o_model[$(this).val()]['price']) : '';
Es sollte eigentlich erkennbar sein, welche Zeilen mit den oben genannten ersetzt werden können.
...
Oh... Stimmt.
Dann hat h-h-h es wohl nacheditiert.
Da war ich was schnell mit schreiben.
Ja das Script funktioniert super.
Nur bei Preispräfix = leider nicht. Es addiert den Wert zum Preis.
Ja, der Beitrag wurde nachträglich noch erweitert.
Was ist hier mit Preispräfix gemeint? Als Preis ersetze ich den aktuellen Preis mit dem Attribut-FULL_PRICE und berechne nichts weiter an dieser Stelle.
Viele Grüße,
h-h-h