Я использую тему Порту. В дополнение к доступной боковой панели мини-карты, я хотел бы создать специальный блок справа с липкой корзиной, чтобы клиенты могли видеть, что они добавляют и что они хотят удалить из этой корзины (без нажатия на мини-картузначок в шапке). Аналогично этому: введите описание изображения здесь Я попытался использовать рекомендованное здесь решение: Magento 2 получает элементы корзины в классе блоков. Я не знаю, почему оно не работает. Я прилагаю код ниже.
1) BDK / Mycartblock / Block / ShoppingCart.php
<?php
namespace BDK\Mycartblock\Block;
use \Magento\Framework\View\Element\Template;
class ShoppingCart extends \Magento\Framework\View\Element\Template
{
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Checkout\Model\Session $checkoutSession,
array $data = []
) {
$this->_checkoutSession = $checkoutSession;;
parent::__construct($context, $data);
}
/**
* Get quote object associated with cart. By default it is current customer session quote
*
* @return \Magento\Quote\Model\Quote
*/
public function getQuoteData()
{
$this->_checkoutSession->getQuote();
if (!$this->hasData('quote')) {
$this->setData('quote', $this->_checkoutSession->getQuote());
}
return $this->_getData('quote');
}
}
2) BDK / Mycartblock / etc / module.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="BDK_Mycartblock" schema_version="1.0.0" setup_version="1.0.0" >
</module>
</config>
3) BDK / Mycartblock / view / frontend / layout / default.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="BDK\Mycartblock\Block\ShoppingCart" name="mycartblock" template="BDK_Mycartblock::my-template.phtml">
</block>
</referenceContainer>
</body>
</page>
4) BDK / Mycartblock / view / frontend / templates / my-template.phtml
<?php
// Get all visible items in cart
$quote = $block->getQuoteData();
foreach($quote->getAllVisibleItems() as $_item) {
echo 'ID: '.$_item->getProductId().'<br/>';
echo 'Name: '.$_item->getName().'<br/>';
echo 'Sku: '.$_item->getSku().'<br/>';
echo 'Quantity: '.$_item->getQty().'<br/>';
echo 'Price: '.$_item->getPrice().'<br/>';
echo 'Product Type: '.$_item->getProductType().'<br/>';
echo 'Discount: '.$_item->getDiscountAmount();echo "<br/>";
echo "<br/>";
}
?>
Просьба помочь найти решение. Спасибо всем заранее!