Перейти к содержанию
skuz

В корзине другая цена с опцией, чем в товаре

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

Добрый день.

Появилась нужда в опциях товаров добавить еще " * "(умножение), помимо + и -.

В админке все выбирается, в магазине пересчитывается, все вроде бы ок, но при добавлении товара с выбранной опцией, где есть *, цена у товара остается старой, как будто опцию не выбирали.

Что изменил:

В /system/library/cart/cart.php добавил

                                } elseif ($option_value_query->row['price_prefix'] == '*') {
                                    $option_price *= $option_value_query->row['price'];
                                }

в 2 места, где if ($option_query->row['type'] == 'select' || $option_query->row['type'] == 'radio') {

и elseif ($option_query->row['type'] == 'checkbox' && is_array($value)) {

 

Далее в /admin/view/template/catalog/product_form.tpl

                              <td class="text-right"><select name="product_option[<?php echo $option_row; ?>][product_option_value][<?php echo $option_value_row; ?>][price_prefix]" class="form-control">
                                  <?php if ($product_option_value['price_prefix'] == '+') { ?>
                                  <option value="+" selected="selected">+</option>
                                  <?php } else { ?>
                                  <option value="+">+</option>
                                  <?php } ?>
                                  <?php if ($product_option_value['price_prefix'] == '-') { ?>
                                  <option value="-" selected="selected">-</option>
                                  <?php } else { ?>
                                  <option value="-">-</option>
                                  <?php } ?>
                                  <?php if ($product_option_value['price_prefix'] == '*') { ?>
                                  <option value="*" selected="selected">*</option>
                                  <?php } else { ?>
                                  <option value="*">*</option>
                                  <?php } ?>

                                </select>

 

В /catalog/view/theme/***/template/product/product.tpl в конец

где

$('input:checked,option:selected').each(function() {

строки

      if ($(this).data('prefix') == '*') {
        option_price *= Number($(this).data('price'));
        main_price *= Number($(this).data('price'));
        special *= Number($(this).data('price'));
      }

 

Версия ocStore 2.3.0.2.1

Подскажите, пожалуйста, что еще забыл сделать?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так в классе корзины посмотрите выше
Изначально цена опции равна 0
 

Цитата

$option_price = 0;

Умножение цены опции на 0 даст 0))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ)

Не силен в программировании, поэтому подскажите пожалуйста, как написать правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну раз это нетривиально, то если кто может доделать данный вопрос на платной основе - напишите в личку плиз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@skuz

Тут посмотрите

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@thentru  большущее спасибо за помощь!! все нашлось в данном модуле, это просто чудесно)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как Вам повысить репутацию - не нашел лайка на странице..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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