Artikelpreis prüfen im Warenkorb und Minibasket

Hallo,

ich habe ein Problem eventuell auch mangelndes Grundverständnis.

Mein Vorhaben ist folgendes:

Im Shop sollen Artikel zu “Tagespreisen” angeboten werden. “Tagespreise” in Anführungszeichen, da die Preise nicht jeden Tag aktualisiert werden sollen, sondern der Artikel praktisch ohne Preisangabe gekauft werden können soll. Die Frage, ob das sinnvoll ist oder nicht, stellt sich hier nicht.

Mein Ansatz ist der, dass ich diese Artikel einfach mit einem Preis von 0,00 Euro einpflege und dann an allen Stellen im Frontend, an denen der Preis 0,00 Euro beträgt, den Preis durch den Begriff “Tagespreise” ersetze.

Dies habe ich auf der Detailseite und in den Listendarstellungen im Frontend in etwa so lösen können:

[{assign var=“tagespreis” value=$product->getFPrice()}]
[{if $tagespreis == “0,00”}]
Tagespreis
[{else}]
[{if $product->isRangePrice()}]

In den Warenkörben (Minibasket und Basket) gelingt es mit nicht den Preis auszulesen und einer Variablen zuzuordnen. Folgendes führt zu nichts in der basketcontents_table.tpl:

[{* product quantity * price *}]
[{assign var=“tagespreis” value=$basketitem->getPrice()}]
[{if $tagespreis == “0,0”}]
Tagespreis
[{else}]
[{oxprice price=$basketitem->getPrice() currency=$currency}]
[{/if}]

Es wäre schon, wenn mir jemand auf den richtigen Weg helfen könnte.

Könnte daran liegen: Einfache Smarty Abfrage $oxcmp_basket->getPrice() > 0

Vielen Dank!!!, aber…

mit

[{assign var=“tagespreis” value=$oxcmp_basket->getPrice()}]
[{if $tagespreis->getPrice() == “0,00”}]
Tagespreis
[{else}]
[{oxprice price=$basketitem->getPrice() currency=$currency}]
[{/if}]

funktioniert es auch in den Warenkörben BIS man sich als Kunde angemeldet hat. Nach dem Login ist die Preisangabe in den Warenkörben wieder “0,00”. Ändert sich die Variable / der Name nachdem sich ein Kunde angemeldet hat. Vielleicht im Zusammenhang mit der Session oder Order oder ähnlichem?

Beim Testen ist mir nun noch aufgefallen, dass diese Variante nur funktioniert so lange der gesamte Warenkorb “0,00” Euro beträgt. Die Überprüfung bezieht sich scheinbar nicht auf das einzelne Produkt, sondern auf den gesamten Warenkorb. Ein Versuch mit:

[{assign var=“tagespreis” value=$oxcmp_basketitem->getPrice()}]

führt zum Absturz auf der Warenkorbseite im Frontend.

GELÖST:

[{assign var=“tagespreis” value=$basketitem->getPrice()}]
[{if $tagespreis->getPrice() == “0,00”}]
Tagespreis
[{else}]
[{oxprice price=$basketitem->getPrice() currency=$currency}]
[{/if}]

Es funktioniert an allen Stellen mit der Abfrage, die auch hinter price=… erfolgt. Also eigentlich so, wie ich es am Anfang auch versucht hatte. Mir war aber irgendwie nicht klar - und ist es immer noch nicht - warum ich die Variable “tagespreis” bei der Verwendung in der Bedingung mit “tagespreis->getPrice()” verwenden muss, wenn ich ihr doch vorher einen Wert zugewiesen habe. Vielleicht mein Smartydefizit.

Auf jeden Fall noch mal Danke an rubbercut!!

Es wird im Beitrag der Verlinkung besprochen: Erst wird ein Preis-Object erstellt, daraus dann der eigentliche Preis gezogen.

Nein :wink: