Jump to content

Вывод количества товара из корзины в product.tpl


Recommended Posts

Здравствуйте, столкнулся с такой проблемой, сразу говорю полный 0 в престе.

Не могу вывести в product.tpl, количество продукта в корзине. Хочу реализовать как у тануки, вместо добавить в корзину +, убрать из корзины -, посередине количество товара. Увеличить или убавить продукт с карточки, я реализовал, а сам рендер на стороне сервера, не могу.

Нашел функцию в классе Cart->containsProduct(), попытался передать туда product id, приложение сразу выдаёт ошибку, с массивами smarty не работает. Сделал это через Smarty {$cart->containsProduct($product.id_product)}

Пробовал в контроллере в добавить $product['qty'] в функции initContent, опять выдает ошибку. Что я делаю не так?

Link to comment
Share on other sites

13 minutes ago, wagood said:


{$product->quantity}

 

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

путь к pruduct.tpl в котором я хочу рендрить количество товара в корзине, "/themes/Katyk/templates/catalog/_partials/miniatures", ответственный контроллер ProductController как я понял

Edited by lllyx (see edit history)
Link to comment
Share on other sites

это в файл override/classes/Product.php

<?php

class Product extends ProductCore {

  public static function getQuantityInCart($id_product)
  {
    $context = Context::getContext();
    $Cart = $context->cart;
    $products = $Cart->getProducts(true, $id_product);
    if (count($products) > 0 && isset($products[0]['cart_quantity'])) {
      return $products[0]['cart_quantity'];
    }
    return null;
  }
}

из шаблона product.tpl вызвать 

{Product::getQuantityInCart($product.id)}

удалить кеш перед использованием и файл class_index.php, если это 1.6 версия

  • Like 2
Link to comment
Share on other sites

On 2/22/2021 at 2:50 AM, TemKa_SD said:

@wagood Это нужно делать на JS.

const token = $('input[name=token]').val();
$(".product-miniature").on("click", '.decrease' ,function (){
    let qty = $(this).parent('.price').find('.quantity'),
        num = Number(qty.html()),
        product_block = $(this).parents(".product-miniature"),
        id_product = product_block.data('idProduct'),
        id_product_attribute = product_block.data('idProductAttribute');
    if (num < 2){
        qty.html(0);
        $.ajax({
            type: "post",
            url : "/cart",
            cache: false,
            dataType: "json",
            data: {
                token: token,
                id_product: id_product,
                id_product_attribute: id_product_attribute,
                delete: 1,
                action: "update",
                ajax: 1
            }
        });
    }else {
        qty.html(num-1);
        $.ajax({
            type: "post",
            url : "/cart",
            cache: false,
            dataType: "json",
            data: {
                token: token,
                id_product: id_product,
                id_product_attribute: id_product_attribute,
                op: 'down',
                update: 1,
                action: "update",
                ajax: 1
            }
        });
    }
});
$(".product-miniature").on("click", '.increase' ,function (){
    let qty = $(this).parent('.price').find('.quantity'),
        num = Number(qty.html()),
        product_block = $(this).parents(".product-miniature"),
        id_product = product_block.data('idProduct'),
        id_product_attribute = product_block.data('idProductAttribute');
        qty.html(num+1);
    $.ajax({
        type: "post",
        url : "/cart",
        cache: false,
        dataType: "json",
        data: {
            token: token,
            id_product: id_product,
            id_customization: 0,
            add: 1,
            qty: 1,
            action: "update"
        }
    });
});

С таким подходом, достаточно статичный вывод думаю

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...