Я использую Prestashop 1.5 и создал страницу со списком сгруппированных товаров. Я хочу показать количество каждого продукта в корзине. На странице корзины есть свойство $product.cart_quantity, но на моей странице его нет. Объясните, пожалуйста, как показать количество товара в корзине на моей странице.
Как показать количество товара в корзине на пользовательской странице
Ответы (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
Вы можете сделать следующее:
$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'];
}