Самое простое - использовать возвращаемые после ajax-запроса данные, которыми js-функция doCart() замещает содержимое блока "Корзина".
Предупреждать alert-ом при нажатии кнопки "в корзину" оказалось на удивление простым в реализации.
==========================
Это дополнение выводит предупреждающее сообщение при добавлении товара в корзину если:
1. количество добавляемого товара меньше минимального количества для заказа.
2. количество добавляемого товара больше имеющегося на складе.
3. весь имеющийся на складе товар и так уже в корзине
.
Установка:
1. в файле cart_functions.php в функции cartAddToCart
заменяем
return true;
на
return $count_to_order;
2. в файле cart.php
2.1 заменяем строки
for ( $mcn = 0; $mcn < $_GET["multyaddcount"]; $mcn++ )
cartAddToCart(( int ) $_GET["addproduct"], $variants);
на
for ( $mcn = 0; $mcn < $_GET["multyaddcount"]; $mcn+=$added )
if (!$added = cartAddToCart(( int ) $_GET["addproduct"], $variants)) break;
if ($mcn == 0) $errmess = "Весь имеющийся товар уже в Вашей корзине.\nНа складе больше нет этого товара!";
elseif ($mcn < (int)$_GET["multyaddcount"]) $errmess = "На складе всего ".$mcn." единиц товара вместо желаемых ".$_GET["multyaddcount"]."!";
elseif ($mcn > (int)$_GET["multyaddcount"]) $errmess = "минимальное для заказа количество этого товара - ".$mcn." единиц!";
(заодно и вот эта
штатная ошибка ShopCMS исправится)
2.2 заменяем строку
$GLOBALS['_RESULT'] = array( "shopping_cart_value" => $k, "shopping_cart_value_shown" => show_price($k), "shopping_cart_items" => $cnt );
на
$GLOBALS['_RESULT'] = array( "shopping_cart_value" => $k, "shopping_cart_value_shown" => show_price($k), "shopping_cart_items" => $cnt, "errmess" => $errmess );
3. в файле head.tpl.html
после строки
function doCart(req) {literal}{{/literal}
добавляем
if (req["errmess"]) alert(req["errmess"]);
PS. Конечно, красивше было бы оформить не дефолтовым alert-ом, а чем-то более развесистым и приятным. Но тут уж каждый сам себе яваскрипт-художник.