Jak hacknout Virtuemart, aby šlo vkládat do košíku množství s desetinnou čárkou
Máte eshop ve Virtuemartu, který potřebuje prodávat zboží, které se prodává v jednotkách, které nejsou jen celá čísla? Např. pokud Váš internetový obchod prodává koberce a zákazník může chtít zadat do košíku množství 14,6 m2, narazíte u Virtuemartu na problém - jakékoliv množství zadané s desetinnou čárkou vám odmítne vůbec vložit a pokud místo desetinné čárky použijete tečku, tak se sice tváří, že je to ok, ale v košíku pak číslo zaokrouhlí na celé číslo.
Našla jsem na fóru Virtuemartu hack, který toto umí překonat a v tomto článku se s Vámi o ono tajemství podělím.
1. Úprava pole product_quantity v tabulce jos_vm_order_item v databázi
Přihlašte se přes PhpMyAdmin do databáze a v tabulce jos_vm_order_item změnte typ pole product_quantity z int(11) na decimal(12,2).
2. Úprava souboru ps_cart.php
Upravte soubor administrator/components/com_virtuemart/classes/ps_cart.php takto:
A. $total_quantity = 0; změňte na
$total_quantity = 0.0;
B. $quantity = intval($quantity); změňte na
$quantity = round($quantity, 2);
C. } elseif( $total_quantity == 0 ) { změňte na
} elseif( round($total_quantity) == 0 ) {
D. if ($quantity == 0 && strtolower($func) == "cartupdate") { změňte na
if (round($quantity) == 0 && strtolower($func) == "cartupdate") {
E. if ($quantity == 0) { změňte na
if (round($quantity) == 0) {