Comment obtenir tous les produits de la catégorie en utilisant l'ID de catégorie dans Magento 2?
Comment obtenir tous les produits de la catégorie en utilisant l'ID de catégorie dans Magento 2?
Réponses:
vous pouvez injecter dans votre bloc une instance \Magento\Catalog\Model\CategoryFactory
comme celle-ci:
protected $categoryFactory;
public function __construct(
....
\Magento\Catalog\Model\CategoryFactory $categoryFactory,
...
){
...
$this->categoryFactory = $categoryFactory;
...
}
Créez ensuite cette méthode dans votre bloc:
public function getCategory()
{
$categoryId = $this->getCategoryId();
$category = $this->categoryFactory->create()->load($categoryId);
return $category;
}
public function getProductCollection()
{
return $this->getCategory()->getProductCollection()->addAttributeToSelect('*');
}
Ensuite, vous pouvez utiliser dans le modèle ceci:
<?php foreach ($block->getProductCollection() as $product) : ?>
<!-- do something with $product -->
<?php endforeach;?>
Vous devriez maintenant pouvoir simplement l'ajouter au contenu de votre page d'accueil
{{block class="Block\Class\Name\Here" category_id="5" template="path/to/template.phtml"}}
Vous devez remplacer getProductsCollection()
par getProductCollection()
(sans s
)
J'utilise ceci
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
}
}