[Помогите] Выбор количества покупаемого товара из категорий

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

  1. Krasovskiy

    Krasovskiy

    Регистрация:
    22 фев 2013
    Сообщения:
    81
    Симпатии:
    79
    Собственно, надо, чтоб покупатель отправлял в корзину нужное количество товара, просматривая категорию/подкатегорию (не заходя в описание самого товара)
    Сделал:
    - в catalog/controller/product/category.php после
    Код:
    'product_id' => $result['product_id'],
    вставил
    Код:
    'minimum' => $result['minimum'],
    - в catalog/view/theme/default/template/product/category.tpl заменил
    Код:
    <div class="cart">
            <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" />
          </div>
    на
    Код:
    <div class="cart">
            <div>
    <input type="text" name="quantity" size="2" value="<?php echo $product['minimum']; ?>" id="quantity_<?php echo $product['product_id']; ?>"/>
    <input type="hidden" name="product_id" size="2" value="<?php echo $product['product_id']; ?>" />
    &nbsp;
    <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>',document.getElementById('quantity_<?php echo $product['product_id']; ?>').value);" class="button" />
    </div>
          </div>
    В итоге в корзину добавляется один товар (кроме первого по списку - он добавляется в указанном количестве)
     
    Последнее редактирование: 4 окт 2013
    gnommong нравится это.
  2. Toliamba

    Toliamba

    Регистрация:
    27 янв 2013
    Сообщения:
    195
    Симпатии:
    46
    Krasovskiy и gnommong нравится это.
  3. Krasovskiy

    Krasovskiy

    Регистрация:
    22 фев 2013
    Сообщения:
    81
    Симпатии:
    79
    Может кто подскажет шаблон для ocstore с таким функционалом. Нашел shop universal но он для maxystore.
     
  4. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    Зачем усложнять и ставить отдельный шаблон? Вам же ссылки на решение дали.
     
  5. bestleshka

    bestleshka

    Регистрация:
    10 мар 2014
    Сообщения:
    108
    Симпатии:
    80
    Есть что-то похожее на opencart 2.x ??? Очень нужно указывать количество товара прямо йз категории и добавлять в корзину... не заходя в каждый товар.
     
    Последнее редактирование: 22 фев 2017
  6. Master2KAZ

    Master2KAZ

    Регистрация:
    25 окт 2014
    Сообщения:
    183
    Симпатии:
    72
    Не помню, как на 1.5.х, но на Опенкарт 2.х все делается достаточно просто.

    В файле \catalog\view\theme\ВАША_ТЕМА\template\product\category.tpl, где-нибудь перед кнопкой (где - на ваше усмотрение, главное в карточке товара)
    PHP:
    <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart?></span></button>
    вставить поле для ввода количества и потом в кнопке в функции передавать значение этого поля.
    Примерно так:
    PHP:
    <input type="text" name="quantity<?php echo $product['product_id']; ?>" id="quantity<?php echo $product['product_id']; ?>" value="<?php echo $product['minimum']; ?>"/>
     <button type="button" onclick="cart.add('<?php echo $product['product_id']; ?>', $('#quantity<?php echo $product['product_id']; ?>').val());"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart?></span></button>
    Естественно, оформление/расположение и т.п. на ваше усмотрение.
     
    Последнее редактирование: 22 фев 2017
    bestleshka нравится это.
  7. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Подскажите, этот способ работает, но у меня стоит фильтр. В нем код вида
    Код:
    product += '<button class="button-cart" type="button" data-effect="mfp-zoom-out" onclick="get_oct_popup_add_to_cart('+value['product_id']+', '+value['minimum']+');"><i class="fa fa-shopping-basket" aria-hidden="true"></i> <span class="hidden-xs hidden-sm hidden-md">'+json['language']['button_cart']+'</span></button>';
    с кодом такого вида у меня проблемы, так как не совсем понимаю js. Как правильно в данном случае написать $('#quantity<?php echo $product['product_id']; ?>').val());
     
  8. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Замените это:
    Код:
    get_oct_popup_add_to_cart('+value['product_id']+', '+value['minimum']+');
    на это:
    Код:
    get_oct_popup_add_to_cart('+value['product_id']+', '+$('#quantity'+value['product_id']).val());+');
     
    GrblFF нравится это.
  9. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Как правильно добавить еще вот такой блок
    Код:
    <div class="quantity_div box">
        <input type="text" class="quanq" name="quantity<?php echo $product['product_id']; ?>" id="quantity<?php echo $product['product_id']; ?>" value="<?php echo $product['minimum']; ?>"/>
        </div>
    И как правильно такой код называется - js, ajax, javascript? Хочу изучить, пригодиться.
     
  10. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Ajax - это технология асинхронного обмена данными с сервером. А js = javascript.
    То, что в последнем вашем посте - это html с вкраплениями php, а перед этим был js, в котором был завёрнут html.

    Как-то так:
    HTML:
    product += '<div class="quantity_div box"><input type="text" class="quanq" name="quantity'+value['product_id']+'" id="quantity'+value['product_id']+'" value="'+value['minimum']+'"/></div>';
     
    GrblFF нравится это.
  11. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    добавление укащзанного товара в корзину не работает. во всех случаях добавляется только 1 штука, без фильтра работает нормально.
     
  12. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Смотрите консоль браузера на предмет ошибок.
     
  13. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Открыл страницу, применил фильтр, положил товар в корзину. В консоли только
    Код:
    Ошибка карты кода: TypeError: NetworkError when attempting to fetch resource.
    URL ресурса: moz-extension://7996e511-fb2e-40c2-a6a3-cd764bd00d43/content/js/purify.min.js
    URL карты кода: purify.min.js.map[Подробнее]
    Похоже, что этот сайт использует эффект позиционирования связанный с прокруткой. Это может не очень хорошо работать с асинхронным панорамированием; см. https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects чтобы получить более подробную информацию и присоединиться к обсуждению связанных с этим инструментов и возможностей! index.php
    Use of nsIFile in content process is deprecated.
    Т.е как я понимаю критических ошибок которые влияют на работу скриптов нет. Хотел проверить передается ли переменная при нажатии на кнопку, но var_dump в данном случае не работает. Какие есть еще варианты проверок?
     
  14. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Потому что var_dump - это функция другого языка :Smile:
    В js есть console.log(). Можно добавить внутрь функции get_oct_popup_add_to_cart, чтоб посмотреть получает ли она на вход правильное количество.

    А вообще, пора бы вам уже показать сайт, если действительно хотите разобраться с фильтром.
     
  15. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    24planeta.ru
    Как я понимаю, нет связи input'а количества товара и количества товара передаваемого в корзину.
     
  16. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Я понял в чём проблема: у фильтра вот это
    Код:
    $('#quantity'+value['product_id']).val()
    выполняется сразу в момент генерации результатов фильтрации и, соответственно, сразу подставляется 1.

    Надо для фильтра заменить это:
    Код:
    onclick="cart.add('+value['product_id']+', '+$('#quantity'+value['product_id']).val()+');"
    на это:
    Код:
    onclick="cart.add('+value['product_id']+', $(\'#quantity\''+value['product_id']+').val());"
     
  17. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Тогда событие при нажатии не работает. в корзину не падает товар. :( В консоли "SyntaxError: missing ) after argument list" а где он пропущен? Вы чем пользуетесь для отладки?
     
  18. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Инструментами разработчика в Мозилле. И если б вы ими пользовались, то увидели бы, что конечный результат получается таким:
    Код:
    onclick="cart.add(66, $('#quantity'66).val());"
    То есть, всё правильно за исключением того, что кавычка стоит перед числом, а должна быть после него.

    Попробуйте так:
    Код:
    onclick="cart.add('+value['product_id']+', $(\'#quantity'+value['product_id']+'\').val());"
     
    GrblFF нравится это.
  19. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Я тоже пользуюсь Инструментами разработчика Мозиллы, но вижу только исходный код. :(
    Знал что дело в кавычке, но думал не хватает наоборот.
    Спасибо.
     
    Последнее редактирование: 19 июл 2018
  20. Dotrox

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

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Не там смотрите: надо смотреть саму вёрстку после применения любой опции фильтра, когда он подменит изначальный html сгенерированным.