Как изменить текст кнопки купить после добавления в корзину

Тема в разделе "Общие вопросы", создана пользователем yutel, 2 дек 2016.

  1. ihos

    ihos Новичок

    Сообщения:
    7
    Симпатии:
    0
    Может кто то решил как сделать чтобы менялось сразу при нажатии
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Если для странице категорий, то в common.js, там где cart add в разделе success добавить
    Код:
    $('[onclick *= "\''+product_id+'\'"][onclick *= "cart.add"]').html('Куплено');
     
  3. Yuriy_666

    Yuriy_666 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Подскажите, пожалуйста, а можно чтобы 'Куплено' было другого цвета? У меня это совсем не получается
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Условие выше показано. Вам достаточно на основе условия добавить class для кнопки и сделать дня него стили.
     
  5. Yuriy_666

    Yuriy_666 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Я не совсем понимаю, но у меня меняется цвет на всех кнопках (купить и куплено).
    Здесь нет добавления другой кнопки при условии наличия товара в корзине, меняется просто надпись.
    Я не крутой программист, по этому и спрашиваю. Возможно/точно вам легко, а я только 'Куплено' не могу сделать зеленым.
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    HTML:
    <button type="button" onclick
    меняем на
    HTML:
    <button class="<?php echo (!$product['cart']) ? '' : 'danger'; ?>" type="button" onclick
    и добавляем стили
    Код:
    .product-thumb .button-group button.danger {
        background-color: #f9f8b1;
    }
    специально сделал простой копипаст, чтобы вы начали думать, как предлагал @Vlad

    А в качестве домашней работы, изучите условия типа
    PHP:
    <?php if (....) { ?>
    ....
    <?php } else { ?>
    ....
    <?php ?>
    и сделайте то что описано выше по другому.
     
  7. Yuriy_666

    Yuriy_666 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Спасибо. Набросал так.
    <?php if ($product['cart'] == true) { ?>
    <input type="button" value="<?php echo (!$product['cart']) ? '' : 'danger'; ?>" type="button" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button knopka-korzina" /></span>
    <?php } else { ?>
    <input type="button" value="<?php echo $button_cart ?>" onclick="addQtyToCart('<?php echo $product['product_id']; ?>');" class="button knopka-tov" /></span>
    <?php } ?>

    Вроде работает.
    А что мне в common.js написать чтобы это работало правильно и сразу при клике?
    Можно без домашки? :rolleyes: Я в скриптах совсем не бум-бум.
    P.S. Просто скрипт, который выше, у меня не работает.
     
    Последнее редактирование: 5 апр 2019
  8. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Нет. Нельзя :( Это уже работа будет, а не помощь.

    Вот не знаю. Скрипт рабочий. Попробуйте очистить кеш браузера. Только не спрашивайте как. И так в каждом сообщении написано.
     
  9. Yuriy_666

    Yuriy_666 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Ок, буду пробовать.
    В любом случае, спасибо за помощь, а не работу :)
     
  10. marshall

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

    Сообщения:
    51
    Симпатии:
    0
    ребят на опенкарт 3 есть что похожее? уже голову сломал ппц

    <div class="cart"><input type="button" value="{{ button_cart }}" data-loading-text="{{ text_loading }}" id="button-cart" class="btn btn-mega btn-lg"></div>
     
    Последнее редактирование: 11 апр 2020
  11. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Код:
    {{ product.cart ? 'Куплено' : button_cart }}
     
  12. d2boy

    d2boy Новичок

    Сообщения:
    21
    Симпатии:
    1
    Гуру, подскажите как сделать обратное, а именно сбросить текст кнопки по при нажатии на кнопку удалить из корзины

    Попробовал по аналогии с добавлением сделать
    Код:
    $('[onclick *= "\''+key+'\'"][onclick *= "cart.add"]').html('<i class="fa fa-check"></i>Купить');
    Но не заработало, посмотрел значение key через console.log - оказалось, порядковый номер в корзине, а product_id через remove не получить.

    Поискал аналогичные решения, вроде бы нужно контроллер cart.php править, чтобы product_id появились.
     
  13. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Обычно показывают сайт и попытки. Какое то не законченное решение итд. Тогда кто то сможет посмотреть и помочь.
     
  14. d2boy

    d2boy Новичок

    Сообщения:
    21
    Симпатии:
    1
    Потратил два дня, решил вроде:

    В контроллере catalog/controller/common/cart.php добавляем после
    PHP:
    'cart_id'   => $product['cart_id'],
    PHP:
    'product_id'   => $product['product_id'],
    В cart.twig по аналогии с функцией 'add' меняем
    PHP:
    onclick="cart.remove('{{ product.cart_id }}');"
    на
    PHP:
    onclick="cart.remove('{{ product.cart_id }}', '{{ product.id }}');"
    Дальше идём в common.js

    Находим строку (их две, я поменял первую, вторая для купонов вроде бы)
    PHP:
    'remove': function(key) {
    и меняем на
    PHP:
    'remove': function(keyproduct_id) {
    В том же файле после строчки
    PHP:
    success: function(json) {
    Добавляем
    PHP:
    $('[onclick *= "\''+product_id+'\'"][onclick *= "cart.add"]').html('Купить');
     
    Ravilr нравится это.
  15. d2boy

    d2boy Новичок

    Сообщения:
    21
    Симпатии:
    1
    Ещё подскажите, как в product.php добавить проверку наличия в корзине по аналогии с category.php?
     
  16. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Так точно так же. :) В чем именно проблема?
     
  17. d2boy

    d2boy Новичок

    Сообщения:
    21
    Симпатии:
    1
    Пробросил

    PHP:
         $cart false;
            foreach (
    $this->cart->getProducts() as $product) {
                if (
    $product['product_id'] == $result['product_id']) {
                    
    $cart true;
                    break;
                }
            }
    и
    PHP:
    'cart'       => $cart,
    и вывод кнопки в корзину заменил на

    PHP:
    <button type="button" class="btn-cart" onclick="cart.add('{{ product['product_id'] }}');">
                {% if (
    product.cart) %}
                        <
    class="fa fa-check"></i> {{ button_cart_added }}
                        {% else %}
                        <
    class="fa fa-shopping-cart"></i> {{ button_cart }}
                        {% endif %}
    В категории при обновлении страницы выводится надпись уже добавлено, а в продукте нет
     
  18. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    наверно нужно прописать в контроллере product.php
    $product_info['product_id']
     
  19. vtorma

    vtorma Новичок

    Сообщения:
    1
    Симпатии:
    0
    Подскажи, это в каком файле нужно вносить изменения?
     
  20. d2boy

    d2boy Новичок

    Сообщения:
    21
    Симпатии:
    1
    Контроллер catalog/controller/cart.php

    Вторая часть идёт в шаблон catalog/view/theme/template/product/product.twig и в category.twig