При покупке товара поле размер должно быть заполненно, и без этого условия товар не должен попадать в корзину.
Задачу реализуем с помощью плагина на событие msOnBeforeAddToCart
switch ($modx->event->name) {
case 'msOnBeforeAddToCart':
//Доступные переменные - $product, $count, $options, $cart
// Размер, выбранный пользователем
$sizename = $options['size'];
// Все размеры, которые доступны у товара
$arr = $product->get('size');
// Если у товара есть размер, но при этом пользователь не выбрал размер, ругаемся
if(!empty($arr) AND !in_array($sizename, $arr)){
$modx->event->output('Необходимо выбрать размер');
}
break;
}
Также может быть полезным JS-обработка этого события. Для этого нужно кое-что добавить в код стандартного скрипта:
// ... (Окружение приведено для того чтобы было легче найти функцию, требующую редактирования)
add: function () {
var callbacks = miniShop2.Cart.callbacks;
callbacks.add.response.success = function (response) {
this.Cart.status(response.data);
};
// 3 новые строчки:
callbacks.add.response.error = function (response) {
$(".prod_info").find(".sizes").addClass("error"); // Ваша реакция на ошибку тут
};
//
miniShop2.send(miniShop2.sendData.formData, miniShop2.Cart.callbacks.add, miniShop2.Callbacks.Cart.add);
// ...
Комментарии (0)
Не писать ответ