Hallo Community,
hatte bei mir den Fall entdeckt, dass für ein Produkt ein Special-Preis eingetragen war, der genauso hoch war wie der eigentliche Produktpreis (ist wohl durch die Synchronisierung mit meinem Wawi passiert, da ist es auch egal), was zu der unschönen Anzeige (s. Screenshot) geführt hat, wo dem Kunden das Produkt als "Schnäppchen" angepriesen wurde mit dem Hinweis "...sie sparen 0%!" - na klasse!
Also habe ich mal geschaut, wo das Produkt ausgelesen wird - mit Hilfe einer zusätzlichen Zeile SQL kann ich den Fall in Zukunft ausschließen. Betroffene Datei:
\templates\current-template\source\boxes\specials.php.
Die SQL-Abfrage (ab ca. Zeile 32) sieht dann bei mir so aus:
if ($random_product = xtc_random_select("SELECT
p.products_id,
pd.products_name,
p.products_price,
p.products_tax_class_id,
p.products_image,
s.expires_date,
p.products_vpe,
p.products_vpe_status,
p.products_vpe_value,
s.specials_new_products_price
FROM ".TABLE_PRODUCTS." AS p,
".TABLE_PRODUCTS_DESCRIPTION." AS pd,
".TABLE_SPECIALS." AS s
WHERE p.products_status = '1'
AND p.products_id = s.products_id
AND pd.products_id = s.products_id
AND pd.language_id = '".$_SESSION['languages_id']."'
AND s.status = '1'
AND CAST(s.specials_new_products_price AS DECIMAL(10,2)) < CAST(p.products_price AS DECIMAL(10,2))
".$group_check."
".$fsk_lock."
ORDER BY s.specials_date_added DESC
LIMIT ".MAX_RANDOM_SELECT_SPECIALS)) {...
Die Zeile
AND CAST(s.specials_new_products_price AS DECIMAL(10,2)) < CAST(p.products_price AS DECIMAL(10,2)) checkt einfach ob der Specialspreis beschnitten auf zwei Stellen nach dem Komma kleiner ist, als der eigentliche Produktpreis - et voila! - somit werden keine gleichteuren (oder gar teurere) Specials angeboten. Die Verwendung von CAST() ist notwendig, da die Werte ja als String gespeichert werden, und somit kein direkter numerischer Vergleich möglich ist. Vielleicht nützt's ja jemandem!
LG Whiteflash
Linkback: https://www.modified-shop.org/forum/index.php?topic=34648.0