Řazení produktů ve virtuemart 2 podle skutečné ceny
Je třeba bohužel hacknout core soubor /administrator/components/com_virtuemart/models/product.php
Tam je část, kde se vytváří SQL dotaz. Použijeme do něj jednoduchou podmínku (ano, podmínku přímo do SQL dotazu !): Pokud je hodnota `override` rovna 1, řadím podle hodnoty `product_override_price`, pokud ne, řadím podle `product_price` modifikované daňovou sazbou (v době psaní článku byla 21% DPH, takže proto hodnota 1.21). A takto to má vypadat:
case 'product_price':
$orderBy =" ORDER BY
CASE `override`
WHEN 1 THEN `product_override_price` * 1
ELSE `product_price` * 1.21
END ";
Příklad není dokonalý, místo napsání daně natvrdo hodnotou 1.21 bych měl zobnout do daňových sazeb a použít aktuální hodnotu z db, ale na to už jsem byl líný. Spíše mi šlo jen o ukázání cesty, jak to lze vyřešit přímo v SQL.