Wie bekomme ich alle Produkte einer Kategorie mit der Kategorie-ID in Magento 2?
Wie bekomme ich alle Produkte einer Kategorie mit der Kategorie-ID in Magento 2?
Antworten:
Sie können eine Instanz \Magento\Catalog\Model\CategoryFactory
wie die folgende in Ihren Block einfügen :
protected $categoryFactory;
public function __construct(
....
\Magento\Catalog\Model\CategoryFactory $categoryFactory,
...
){
...
$this->categoryFactory = $categoryFactory;
...
}
Dann erstellen Sie diese Methode in Ihrem Block:
public function getCategory()
{
$categoryId = $this->getCategoryId();
$category = $this->categoryFactory->create()->load($categoryId);
return $category;
}
public function getProductCollection()
{
return $this->getCategory()->getProductCollection()->addAttributeToSelect('*');
}
Dann können Sie in der Vorlage folgendes verwenden:
<?php foreach ($block->getProductCollection() as $product) : ?>
<!-- do something with $product -->
<?php endforeach;?>
Sie sollten jetzt in der Lage sein, dies einfach zu Ihrem Homepage-Inhalt hinzuzufügen
{{block class="Block\Class\Name\Here" category_id="5" template="path/to/template.phtml"}}
Sie müssen getProductsCollection()
durch getProductCollection()
(ohne s
) ersetzen
Ich benutze das
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
}
}