Как показать количество товара в корзине на пользовательской странице

Я использую Prestashop 1.5 и создал страницу со списком сгруппированных товаров. Я хочу показать количество каждого продукта в корзине. На странице корзины есть свойство $product.cart_quantity, но на моей странице его нет. Объясните, пожалуйста, как показать количество товара в корзине на моей странице.


person ninja-ua    schedule 07.02.2014    source источник
comment
Как и где вы создали свою страницу. Вы создали его с помощью CMS (встроенная функция prestashop для создания новых страниц) или вы создали его в пользовательском модуле?   -  person user2831723    schedule 09.02.2014
comment
Я использовал для этого страницу поставщика (мне не нужен поставщик в моем случае, поэтому я использовал его).   -  person ninja-ua    schedule 09.02.2014


Ответы (2)


Самый простой способ, который я могу придумать, - это получить доступ к данным через файлы cookie, поскольку в них хранятся данные корзины.

Вы можете получить данные о файлах cookie следующим образом:

    $context = Context::getContext();
    echo '<pre>',print_r($context->cookie, true).'</pre>';  

Prestashop Context — это реестр переменных PHP, к которым ранее обращались как к глобальным. Его цель — стандартизировать способ доступа к этим переменным и сделать код более надежным, избавившись от глобальных переменных.

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

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

Чтобы получить идентификатор корзины (при условии, что у вас уже есть контекст), используйте этот

   $Cart = $context->cart;

Это возвращает вам идентификатор текущей корзины.

Теперь вы хотите вернуть текущие продукты в корзину (со всей содержащейся в ней информацией). Для этого вам нужно использовать общедоступную функцию, расположенную в prestashop_main_folder/classes/cart.php.

Итак, чтобы вернуть все текущие продукты, просто используйте следующую строку

    $Cart->getProducts($refresh = false, $id_product = false, $id_country = null)

И затем он возвращает вам массив со всеми переменными, к которым вы можете легко получить доступ.

BR's

person user2831723    schedule 09.02.2014

Вы можете сделать следующее:

$context=Context::getContext();
$id_cart=$context->cookie->id_cart;

if($id_cart=='') $id_cart=Tools::getValue('id_cart');

$theCart = new Cart($id_cart);   
$products = $theCart->getProducts(true);
$nbTotalProducts = 0;     

foreach ($products as $product)
{
  $nbTotalProducts += (int)$product['cart_quantity'];         
}
person ndiaga    schedule 18.05.2016