Ich kenne den Bug, dass die Vergleiche vom FPrice und FTPrice nicht korrekt funktionieren und deswegen nicht passend der durchgestrichene UVP angezeigt wird, wenn der FPrice und der FTPrice sich in einer Stelle der Länge unterscheiden.
Ich habe mir da einen kleinen umständlichen Workaround gebaut, der in meinem Fall funktioniert:
Ist schon eine gute Idee, aber scheint den immer noch nicht zu interessieren.
Ich versteh einfach nicht was da im Hintergrund passiert:
Wenn ich gucke, ob der FPrice >= 200 ist, kriegt der das für alle Preise von 100 bis 999,99 gebacken, aber Artikel mit einem FPrice von <= 99,99 sagt er mir, dass dieser >= 200 ist.
Das macht einfach keinen Sinn…
Ich probier weiter. Aber trotzdem Danke, die Idee war schonmal sehr gut, damit probiere ich
Ich komme langsam der Sache näher. Dein Tipp war wieder gut.
Und zwar steht wirklich im FPrice wenn da steht “ab 1.200,00” die “ab 1.200,00” drin und liegt somit als String vor.
Jetzt bin ich dabei zu gucken, ob dieses ab enthalten ist oder nicht. Weil wenn es enthalten kann ich nich Stringketten ersetzen, weil es eben kein String ist.
Ich such mir schon die Fingerwund, und das einzige was ich finde ist string_format. Das macht mir aber den ganzen String kaputt so das nur noch 0 enthalten sind.
Soweit bin ich:
[{if $product->getFPrice()}]
[{if !strstr($product->getFPrice(),"ab") }]
[{math equation="y - x" x=200 y=$product->getFPrice()|replace:".":""|replace:",":"." format="%.2f" assign="variable"}]
[{ if $variable >= 0}]
Über 200 euro
[{/if}]
[{else}]
[{math equation="y - x" x=200 y=$product->getFPrice()|string_format:"%.2f"|replace:"ab":""|replace:".":""|replace:",":"." assign="variable"}]
[{ $product->getFPrice()|string_format:"%.2f"|replace:"ab":""|replace:".":""|replace:",":"." }]
[{ if $variable >= 0}]
Über 200 euro
[{/if}]
[{/if}]
[{/if}]
Im Klartext: Ich suche jetzt wie ich einen String in einen Int bekomme. Da String_format mir das Ding kaputt macht muss das irgendwie anders gehen. Wenn ich das habe kann ich die Rechnung durchführen und es müsste klappen …
Sorry, da weiß ich jetzt selbst nicht mehr weiter. Vielleicht kommst du mit substring weiter, dann beginnt der String erst nach dem ‘ab’ inkl. dem folgenden Leerzeichen. Also nach 3 Zeichen quasi.
Deswegen muss ich den $aktuellerArtikelPreis in einen int bekommen. Mit (int) oder string_format klappt es einfach nicht … das ist ja zum verrückt werden
Ich antworte nochmal weil ich die Lösung hab.
Das Problem war der FPrice, wenn da steht “ab 123”, wenn der Artikel Variantenkinder hat und eben der günstigste Preis drin steht.
Das hat Probleme gemacht, weil nicht nur der Preis dann darin steht sondern wirklich “<span class…ab</span> 1.234,00”.
Deswegen muss man den ganzen Kram vorne abschneiden umd en überhaupt vergleichen zu können. Das ganze sieht so aus:
[{if $product->getFPrice()}]
[{if strpos($product->getFPrice(),"ab") === false }]
[{math equation="y - x" x=200 y=$product->getFPrice()|replace:".":""|replace:",":"." format="%.2f" assign="variable"}]
[{else}]
[{math equation="y - x" x=200 y=$product->getFPrice()|substr:34|replace:".":""|replace:",":"." assign="variable"}]
[{/if}]
[{ if $variable >= 0}]
Hinweis, wenn der Artikel über 200 kostet ...
[{/if}]
[{/if}]
Mag nicht sonderlich toll sein, aber es funktioniert.
Vielleicht für den einen oder anderen eben auch interessant, um so Artikel zu markieren die eben als Beispiel über 200€ liegen.
Viel Spaß damit!
EDIT: Hab statt strstr nun strpos benutzt, weil es laut PHP besser in der Speichernutzung ist.
EDIT2: Bei mehreren Sprachen müsst ihr das wenn irgendwie abfangen und vielleicht nicht nicht abschneiden sondern nach dem ganze Teil im String suchen und diesen ersetzen …