здравствуйте подскажите, вот допустим у меня в карточке товара есть несколько объемов - 10 20 50 100мл в админке в опции карточки товара напротив 50мл стоит количество 0, но выбрать его и добавить в корзину все равно можно - только добавляется с ценой 0. Как сделать так, чтобы товары, у которых остаток 0 становились невозможными к покупке или данный объем вообще исчезал? (нежелательный вариант, но вариант).
Если что, к дизайну ваша тема никак не относится.. это что то новое.. Мне кажется вы что то напортачили. так у товара или у опции?
у опции. у товара количество 100, опций в товаре несколько, у каких-то стоит количество 100, т.к. есть, у некоторых стоит 0, т.к. нет в наличии. возможно как-то сделать невозможность добавления опции товара в корзину, у которой 0 в остатке? возможно и напортачил, здесь изменена система добавления товара в корзину, которая обсуждается много где - в общем реализовано добавление товару опций, у которых могут быть разные цены и в корзину они добавляются без плюсования или минусования.
скрывайте опцию в зависимости от кол-ва или делайте readonly через свойства элемента Количество опций спокойно есть в массиве опций, см. контроллер товара.
Влад, а можно пожалуйста чуть поподробнее, а то очень животрепещущая тема.. У меня опции в виде переключателя, тоже не смотря на количество товара в самой опции = 0, все равно разрешает добавлять товар в корзину и только на последних этапах оформления сообщает, типо извиняй товарищ, нет товара как-то не очень вариант.. Хотелось бы не скрывать радио кнопки, дабы покупатель видел, что товар бывает в наличии, а именно блокировать, если количество =0. И было бы просто роскошно сделать всплывающий тайтл на заблокированной кнопке = "временно нет в наличии". Подсоби как обычно, куда лезть, где копаться, чего писать ))
Делал что-то аналогичное пару дней назад для ver.1.5 Вот код для ver.2.X вдруг поможет. 1. В /catalog/controller/product/product.php Находите вот этот кусок: PHP: $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); И в него добавляете во внутрь: PHP: 'quantity' => $option_value['quantity'], 2. В /catalog/view/theme/ВАША_ТЕМА/template/product/product.tpl Находите: PHP: <?php if ($option['type'] == 'radio') { ?> <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>"> <label class="control-label"><?php echo $option['name']; ?></label> <div id="input-option<?php echo $option['product_option_id']; ?>"> <?php foreach ($option['product_option_value'] as $option_value) { ?> <div class="radio"> <label> <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" /> <?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> </div> <?php } ?> </div> </div><?php } ?> Заменить на: PHP: <?php if ($option['type'] == 'radio') { ?> <div class="form-group<?php echo ($option['required'] ? ' required' : ''); ?>"> <label class="control-label"><?php echo $option['name']; ?></label> <div id="input-option<?php echo $option['product_option_id']; ?>"> <?php foreach ($option['product_option_value'] as $option_value) { ?> <?php if($option_value['quantity'] == "0") { ?> <div class="radio"> <label> <input type="radio" title="Нет в наличии" disabled="disabled" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" /> <?php echo $option_value['name']; ?> - <span style="color:#ff0000">Нет в наличии</span> </label> </div> <?php } else { ?> <div class="radio"> <label> <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" /> <?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> </div> <?php } ?> <?php } ?> </div> </div><?php } ?> В итоге у Вас будет в опциях для "Radio" Если количество равно 0 то: Заблокир. Переключатель_Название опции - Нет в наличии Иначе Включенный Переключатель_Название опции (Цена)
Вообще шикарно) Спасибо большое, завтра буду копаться, думаю код отлично пойдет, ибо версия как раз 2.0.3
Если вдруг возникнет вопрос реализации для чекбоксов, то возможно. Главное посмотрите как реализовано и потом по аналогии можно сделать.
А кстати, а что происходит если допустим количество в наличии 3 шт, в настройках стоит галка вычитать со склада, а клиент сразу пытается заказать 4?
К сожалению как-то не совсем все успешно.. . А 365 строка это Код: 'value' => $option['value'], в блоке Код: $data['options'][] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] );
В корзине будет выводится сообщение "Товары отмеченные *** отсутствуют в нужном количестве или их нет на складе!" Пришлите файл. Гляну что не так. Проверьте, возможно вы вставили PHP: 'quantity' => $option_value['quantity'], между PHP: 'price_prefix' => $option_value['price_prefix'] ); Тогда у вас должно получиться так PHP: 'price_prefix' => $option_value['price_prefix'],'quantity' => $option_value['quantity'] );
Все верно, спасибо RoS, моя ошибка) Вставил 'quantity' в конце и в предыдущей строке прозевал запятую. Повторно все аккуратно добавил, все отлично работает Большое спасибо!
Приветствую! Вспомнилась старая тема.. Подскажите пожалуйста, ранее делали, чтобы при количестве 0 и функции Вычитать со склада:Нет, радио-кнопка блокировалась и выводилось сообщение "нет в наличии", все отлично, НО! Если включаю функцию Вычитать со склада: Да, при достижении количества 0 - опция скрывается.. Как сделать чтобы вместо скрытия, блокировалась также как при отключенной функции Вычитать со склада?
Здравствуйте! Попробуйте сделать так. В /catalog/controller/product/product.php PHP: if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { Заменить на PHP: if (!$option_value['subtract'] || ($option_value['quantity'] >= 0)) {
Здравствуйте, очень помог данный совет, если можете подскажите пожалуйста что нужно прописать чтоб при значении 0, при отсутствии на складе возле опции выводилось предупреждение типо "под заказ".
аналогично, ocmod'ом делают под дефолтный шаблон,который есть у всех. ocmod под unishop сделает тот у кого есть шаблон unishop, и возможно, поделится с вами. логично?