Добавить вторую цену товара.

Тема в разделе "Общие вопросы", создана пользователем nata-shamray, 3 авг 2015.

  1. nata-shamray

    nata-shamray Новичок

    Сообщения:
    15
    Симпатии:
    0
    Как реализовать изменение цены при выборе одной из радиокнопок.

    Подскажите пожалуйста, надо сделать возможность купить товар с выбором одной из возможных цен.
    первая цена вбивается в админке как обычная, а вторая идет с надбавкой в 20% и округлением до сотен.
    и при выборе должна эта цена прописываться как цена покупки.

    у меня получилось сделать только 2 цена с радиокнопками, но при выборе любой из них и нажатии купить цена остается изначальной. как сделать что бы цена менялась?
    Screenshot_2.jpg
    кнопки реализовала банально и скорее всего не правильно
    <form action>

    <p><input name="1" type="radio" value="price">
    <?php echo $price; ?> </p>

    <p><input name="2" type="radio" value="price*20">
    <?php echo $price+= 0.2 * $price; ?> P </p>

    </form>
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
  3. nata-shamray

    nata-shamray Новичок

    Сообщения:
    15
    Симпатии:
    0
    Спасибо, учту!

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

    PHP:
     if ($option_value['price']==0) {
                     echo 
    $price; }
                     else { echo 
    $price+= 0.2 $price;  } ?>
              
             
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Так как вы делаете, нельзя делать. Все же данные находятся в базе и цену соответственно берутся из базы.

    На форуме гдето было решение от @Ravilr вроде, как сделать опцию которая не влияет на стоимость товара.
    Думаю так же можно и с вами поступить.
     
  5. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    Версия движка какая? Напишу инструкцию в ближайшие дни!
     
    Последнее редактирование: 5 авг 2015
  6. nata-shamray

    nata-shamray Новичок

    Сообщения:
    15
    Симпатии:
    0
    версия 1.5.4.1.

    спасибо.

    реализовала пока через опции с высвечивающеся подсказкой и изменяющейся ценой в зависимости от выбранной радиокнопки (эти два модуля есть в бесплатном доступе в интернете). klokker.ru
     

    Вложения:

  7. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    ТАК!
    в шаблоне product.tpl вставим
    Код:
        <p><input name="to2" type="radio" value="price*20"><?php echo $price+= 0.2 * $price; ?> P </p>

    далее в файле \catalog\controller\checkout\cart.php

    перед
    Код:
    if (isset($this->request->post['option'])) {
    вставим
    PHP:
                if (isset($this->request->post['to2'])) {
                    
    $to2 true;
                } else {
                    
    $to2 0;
                }


    и в строке
    Код:
    $this->cart->add($this->request->post['product_id'], $quantity, $option);
    добавим $to2
    $this->cart->add($this->request->post['product_id'], $quantity, $option, $to2);



    ну и в файле \system\library\cart.php

    перед комментарием
    PHP:
    // Options
    вставим
    PHP:
                    if (!empty($product[2])) {
                        
    $to2 0.2;
                    } else {
                        
    $to2 0;
                    }

    и перед 'reward' => $reward * $quantity,
    меняем это
    Код:
                            'price'           => ($price + $option_price),
                            'total'           => ($price + $option_price) * $quantity,
    на вот это
    PHP:
                            'price'           => (($price $price*$to2) + $option_price),
                            
    'total'           => (($price $price*$to2) + $option_price) * $quantity,

    и заменить
    это
    Код:
        public function add($product_id, $qty = 1, $option = array()) {
    на это
    PHP:
        public function add($product_id$qty 1$option = array(), $to2=0) {

    а потом ниже добавить это
    PHP:
            if ($to2) {
                
    $key .= '::100' ;
            }
    перед этим
    PHP:
            if ((int)$qty && ((int)$qty 0)) {


    и изменить это
    PHP:
    if (isset($product[1])) {
    на это
    PHP:
    if (!empty($product[1])) {
     
    Vlad, nata-shamray и Romans нравится это.
  8. nata-shamray

    nata-shamray Новичок

    Сообщения:
    15
    Симпатии:
    0
    Спасибо вам огромное!!!
     
  9. zahar_92

    zahar_92 Пользователь

    Сообщения:
    34
    Симпатии:
    0
    Ни у кого нет такой инструкции для ocStore 2.1 ? Или готового модуля.. Буду безгранично признателен!!
     
  10. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    А вы пробовали самостоятельно по инструкции выше?
     
  11. zahar_92

    zahar_92 Пользователь

    Сообщения:
    34
    Симпатии:
    0
    Да, пробовал.
    в шаблоне product.tpl вставим - сделал
    далее в файле \catalog\controller\checkout\cart.php - сделал с небольшими корректировками
    ну и в файле \system\library\cart.php - не сделал, файлы сильно отличаются
     
  12. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    в будни напомните, постараюсь написать..
     
  13. zahar_92

    zahar_92 Пользователь

    Сообщения:
    34
    Симпатии:
    0
    Спасибо! Обязательно напомню!
     
  14. zahar_92

    zahar_92 Пользователь

    Сообщения:
    34
    Симпатии:
    0
    Добрый день. Напоминаю про инструкцию)
     
  15. Сако

    Сако Новичок

    Сообщения:
    10
    Симпатии:
    0
    добавил опцию, сделал ее не обязательной, но в корзину товар поступает только когда заходить непосредственно на страницу самого товара, с главной страницы когда нажимаешь на кнопку "в корзину" ничего не добовляеться. Возможно сделать чтобы и с гравной страницы при нажатии на кнопку "в корзину" товар добовлялся стандартный? а если люди хотят какую то част, то пусть заходят и в опциях вибирут.
     
  16. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Потому что должен быть редирект на страницу для выбора опции. Так уж задумано. Для другого поведения, нужно переделывать. Так же есть впродаже модули опций, которые как раз для вашего случая можно использовать.
     
    Сако нравится это.
  17. Сако

    Сако Новичок

    Сообщения:
    10
    Симпатии:
    0
    ну я в этом деле профан, и времени не очень много чтобы все изучить, пытаюсь сам сделать потому что нет возможности купить сайт. подскажите пожалуйста название модуля.
     
  18. Сако

    Сако Новичок

    Сообщения:
    10
    Симпатии:
    0
    http://shop.opencart-russia.ru/priz#tabs Вот это как я понял подойдет? по картинкам видно что и в категориях отображаеться несколько кнопок купить и на странице самого товара
     
  19. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Да.
     
  20. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    ну и в файле \system\library\cart.php

    перед комментарием // Options
    вставим
    PHP:
            if (!empty($product['to2'])) {
                        
    $to2 0.2;
                    } else {
                        
    $to2 0;
                    }
    и перед
    PHP:
    'reward'          => $reward $quantity,
    меняем это
    Код:
                            'price'           => ($price + $option_price),
                            'total'           => ($price + $option_price) * $quantity,
    на вот это
    PHP:
                            'price'           => (($price $price*$to2) + $option_price),
                            
    'total'           => (($price $price*$to2) + $option_price) * $quantity,

    и заменить
    это
    Код:
        public function add($product_id, $qty = 1, $option = array(), $recurring_id = 0,) {
    на это
    PHP:
        public function add($product_id$qty 1$option = array(), $recurring_id 0$to2=0) {