[Помогите] Кнопки + и - рядом с кнопкой купить

Тема в разделе "OpenCart", создана пользователем necoro777, 19 сен 2013.

  1. necoro777

    necoro777

    Регистрация:
    2 июл 2013
    Сообщения:
    6
    Симпатии:
    0
    Подскажите как сделать кнопки + и - с выбором количества товара, рядом с кнопкой купить. В разделе категории и в самом товаре? Так же как сделано в шаблоне Shop Universal. http://shopuniversal.pusku.com/index.php?route=common/home
     
    Последнее редактирование: 19 сен 2013
  2. kolich85

    kolich85

    Регистрация:
    19 сен 2013
    Сообщения:
    162
    Симпатии:
    84
    Добавил скрипт в файле

    catalog\view\theme\default\template\product\category.tpl

    Код:
    <script type="text/javascript">
    function addQtyToCart(product_id) {
      var qty = $('#qnty_' + product_id).val();
      if ((parseFloat(qty) != parseInt(qty)) || isNaN(qty)) {
            qty = 1;
      }
      addToCart(product_id, qty);
    }
    </script>
    и код поля для ввода количества (без плюса и минуса):
    Код:
    <span><input type = 'text' id = 'qnty_<?php echo $product['product_id']; ?>' name="qnty_<?php echo $product['product_id']; ?>" size="2" value="1"></span>
    код кнопки добавления в корзину:
    Код:
    <a onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button"><span><?php echo $button_cart; ?></span></a>
     
    necoro777 нравится это.
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Для товара достаточно добавить сами кнопки + и - и навесить на них js обработчик, который будет по клику на соответствующую кнопку менять значение в поле количества.
    Код:
    $(document).on('click', '.qt-button-decrease', function () {
        var $input = $('input[name^="quantity"]', $(this).parent());
        var count = parseInt($input.val()) - 1;
        count = count < 1 ? 1 : count;
        $input.val(count);
        $input.change();
        return false;
    });
    $(document).on('click', '.qt-button-increase', function () {
        var $input = $('input[name^="quantity"]', $(this).parent());
        $input.val(parseInt($input.val()) + 1);
        $input.change();
        return false;
    });
    Выражение для переменной $input, воможно, придёться немного подправить, зависит от шаблона.

    Для категории нужно будет ещё добавить поле количества и немного изменить код, который вписан в кнопку добавления в корзину.
    Там дожно быть:
    Код:
    addToCart('<?php echo $product['product_id']; ?>');
    Заменить на
    Код:
    addToCart('<?php echo $product['product_id']; ?>, $('input[name^="quantity"]', $(this).parent().parent())');
    Точный код поиска поля количества, опять же, зависит от шаблона.
     
    necoro777 нравится это.
  4. necoro777

    necoro777

    Регистрация:
    2 июл 2013
    Сообщения:
    6
    Симпатии:
    0
    Спасибо поле появилось, а вот как + и - реализовать кто нибудь знает ?
    --- Добавлено, 19 сен 2013 ---
     
    Последнее редактирование: 19 сен 2013
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Код:
    <span>
    <span class="qt-button-decrease">-</span>
    <input type = 'text' id = 'qnty_<?php echo $product['product_id']; ?>' name="qnty_<?php echo $product['product_id']; ?>" size="2" value="1">
    <input type = 'hidden' id = 'product_id-<?php echo $product['product_id']; ?>' name="product_id-<?php echo $product['product_id']; ?>" value="<?php echo $product['product_id']; ?>">
    <span class="qt-button-increase">+</span>
    </span>
    И мой скрипт тогда нужно немного подправить под ваше поле:
    Код:
    $(document).on('click', '.qt-button-decrease', function () {
        var product_id = $('input[name^="product_id"]', $(this).parent());
        var $input = $('input[name="qnty_'+product_id+'"]');
        var count = parseInt($input.val()) - 1;
        count = count < 1 ? 1 : count;
        $input.val(count);
        $input.change();
        return false;
    });
    $(document).on('click', '.qt-button-increase', function () {
        var product_id = $('input[name^="product_id"]', $(this).parent());
        var $input = $('input[name="qnty_'+product_id+'"]');
        $input.val(parseInt($input.val()) + 1);
        $input.change();
        return false;
    });