Frage

Ich habe in Magento-Backend ein eigenes Produktattribut "Heights" erstellt. Der Eingangstyp ist "Text" (da kein ähnlicher Typ "Float" ist). Um dieses Attribut als Filter zu verwenden, schrieb ich eine kleine Erweiterung. In dieser Erweiterung filtere ich die Produkte mit

generasacodicetagpre.

Wenn eine Produkthöhe 69 cm (69,00) ist und der Filter "<= 80 cm" (LTEQ 80.00) ist, funktioniert der Filter in Ordnung. Es funktioniert jedoch nicht, wenn der Filter "<= 100 cm" ist (LTEQ 100.00). Dies liegt daran, dass Magento das Höhenattribut als varchar erstellt hat, und somit die Funktion AddatTributetoFilter ein Zeichenfolge-Vergleich erstellt. In String-Compare ist "69" größer als "100", da "6" größer als "1" ist.

Gibt es einen Weg, um AddattributetoFilter zu sagen, dass er die Werte als Zahlen anstelle von Zeichenfolgen vergleichen sollte?

(ich weiß, dass der beste Weg wäre, das Attribut zu löschen und eine neue mit Typ "Float" über die Erweiterung erstellen. Der Shop ist jedoch fast fertig und enthält bereits Produkte, sodass ich vermeiden möchte, dass ich solche "großen" Änderungen meiden möchte in diesem Zustand.)

War es hilfreich?

Lösung

Der Kommentar von Prateek mit dem TextPart

Es wird ein MySQL-Vergleich sein, nicht PHP

habe mich zu einer Lösung geführt, ohne den Feldtyp zu ändern.Ich habe meinen Code für mage_catalog_block_product_list in der Funktion _getproductCollection in:

geändert generasacodicetagpre.

Natürlich habe ich den Code im Kern nicht geändert.Ich habe die Funktion in meiner Erweiterung überschrieben.Aufgrund des Typscast werden die Werte als Zahlen anstelle von Zeichenfolgen verglichen. Es ist nicht die sauberste Lösung, aber für mich in Ordnung für mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top