Come ottenere tutti i prodotti di categoria usando l'id di categoria in magento 2?
Come ottenere tutti i prodotti di categoria usando l'id di categoria in magento 2?
Risposte:
puoi iniettare nel tuo blocco un'istanza \Magento\Catalog\Model\CategoryFactory
come questa:
protected $categoryFactory;
public function __construct(
....
\Magento\Catalog\Model\CategoryFactory $categoryFactory,
...
){
...
$this->categoryFactory = $categoryFactory;
...
}
Quindi crea questo metodo nel tuo blocco:
public function getCategory()
{
$categoryId = $this->getCategoryId();
$category = $this->categoryFactory->create()->load($categoryId);
return $category;
}
public function getProductCollection()
{
return $this->getCategory()->getProductCollection()->addAttributeToSelect('*');
}
Quindi è possibile utilizzare nel modello questo:
<?php foreach ($block->getProductCollection() as $product) : ?>
<!-- do something with $product -->
<?php endforeach;?>
Ora dovresti essere in grado di aggiungere questo al contenuto della tua home page
{{block class="Block\Class\Name\Here" category_id="5" template="path/to/template.phtml"}}
Devi sostituire getProductsCollection()
con getProductCollection()
(senza s
)
Sto usando questo
echo '('.$subcat->getProductCollection()->count().')';
foreach ($subcats as $subcat) {
if ($subcat->getIsActive()) {
$_category = $objectManager->create('Magento\Catalog\Model\Category')->load($subcat->getId());
$_imgUrl = $_category->getImageUrl();
$subcat_url = $subcat->getUrl();
// echo $qty = $subcat->getQty(); exit;
$subcat_img = $store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA) . 'catalog/category/' . $subcat->getImage();
$placeholder_img = "pub/media/placeholder.png";
if($_imgUrl ==''){
$_imgUrl = $store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA)."catalog/category/placeholder.png";
}
?>
<div class="col-sm-2 item-two">
<a href="<?php echo $subcat_url; ?>">
<div class="item-two-img">
<img src="<?php echo $_imgUrl; ?>" class="img-responsive"/>
</div>
<p><?php echo $subcat->getName();
$subcat->getProductCollection()->count(); ?>
<span class="pro_quantity">
<?php echo '('.$subcat->getProductCollection()->count().')';?>
</span>
</p>
</a>
</div>
<?php
}
}