Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Вывод количества товара соответственно каждой опции


mikelangello
 Поделиться

Рекомендованные сообщения

Только-только сделал.. еще тепленькое, спешу поделиться!

post-18254-0-58507100-1332946562_thumb.jpg

Суть вопроса:

Есть, условно товар "Футболка". У этого товара есть опции:

  • белая Х
  • черная Х
  • черная ХХ
  • белая Х - 2шт
  • черная Х- 3шт
  • черная ХХ- 5шт

Всего - 10шт.

До модификации, покупатель может заказать 10шт. любой опции. И только уже в корзине ему скажут, что "данного товара нет достаточного количества".

Хочется, в конце (в идеале), что-бы покупателю сразу же сообщалось о нехватке данного товара.

Пока сделал так, что-бы внутри опций возле +/- показывался и остаток товара по данной опции.

Немножко дополнить нужно всего 2 файла:

/www/catalog/controller/product/product.php

найти строку 261 (приблизительно, я уже много различных модификаций делал и поэтому нумерация может немного отличатся) и в блок формирования массива добавить " 'quantity' => $option_value['quantity'], "

foreach ($option['option_value'] as $option_value) {

if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {

$option_value_data[] = array(

'product_option_value_id' => $option_value['product_option_value_id'],

'option_value_id' => $option_value['option_value_id'],

'quantity' => $option_value['quantity'],

'name' => $option_value['name'],

'image' => $this->model_tool_image->resize($option_value['image'], 50, 50),

'price' => (float)$option_value['price'] ? $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) : false,

'price_prefix' => $option_value['price_prefix']

);

}

}

В массив option добавим и заполним переменную quantity.

Теперь, в массиве $option_value в ячейке 'quantity' будет наше искомое количество, указанное для товара на странице Товар->Опции.

Далее, можно эту переменную использовать в шаблоне, используя в нужном месте <!--?php echo $option_value['quantity']; ?-->.

Я использовал это в момент формирования списка с вариантами опций.

Меняем файл /www/catalog/view/theme/my_theme/template/product/product.tpl

найти строку 69 (приблизительно)

<select name="option[<?php echo $option['product_option_id']; ?>]">

<option value=""><!--?php echo $text_select; ?--></option>

<!--?php foreach ($option['option_value'] as $option_value) { ?-->

<option 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 } ?-->. max: <!--?php echo $option_value['quantity']; ?-->

</option>

<!--?php } ?-->

</select>

Теперь, имеея в шаблоне количество товара определенной опции, хочется блокировать кнопку "Купить", если покупатель покупает 5 желтых футболок, но их только 2 ($option_value['quantity']=2).

Может комуто-то это будет толчком и пищей для ума - и этот кто-то сумеет доделать это на Ajaxe/JScript и т.д.

Буду рад если доведем это до конца.

  • +1 2
Ссылка на комментарий
Поделиться на других сайтах


  • 4 года спустя...
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.