Magento 2: dapatkan koleksi produk menggunakan id kategori


12

Bagaimana cara mendapatkan semua produk dari kategori menggunakan id kategori di magento 2?


Anda ingin ini di blok atau model?
Marius

Saya ingin semua produk dari kategori di homepage. saya sudah mendapatkan id kategori dan berdasarkan itu saya ingin mengambil semua produk dari kategori
Rakesh Jesadiya

Saya memiliki panggilan blok untuk mendapatkan koleksi kategori sehingga yang terbaik untuk masuk kelas blok.
Rakesh Jesadiya

@RakeshJesadiya Maaf untuk posting di sini tapi saya butuh bantuan Anda tentang masalah ini magento.stackexchange.com/questions/293795/... please
Nagaraju K

Jawaban:


24

Anda dapat menyuntikkan di blok Anda contoh \Magento\Catalog\Model\CategoryFactoryseperti ini:

protected $categoryFactory;
public function __construct(
    ....
    \Magento\Catalog\Model\CategoryFactory $categoryFactory,
    ...
){
    ...
    $this->categoryFactory = $categoryFactory;
    ...
}

Kemudian buat metode ini di blok Anda:

public function getCategory()
{
    $categoryId = $this->getCategoryId();
    $category = $this->categoryFactory->create()->load($categoryId);
    return $category;
}
public function getProductCollection()
{
     return $this->getCategory()->getProductCollection()->addAttributeToSelect('*'); 
}

Maka Anda bisa menggunakan dalam template ini:

<?php foreach ($block->getProductCollection() as $product) : ?>
    <!-- do something with $product -->
<?php endforeach;?>

Anda seharusnya sekarang bisa menambahkan ini ke konten beranda Anda

{{block class="Block\Class\Name\Here" category_id="5" template="path/to/template.phtml"}}

Dalam menerapkan solusi ini saya mengalami masalah yang sama diposting di sini: magento.stackexchange.com/questions/123374/... Saya menambahkan ini jadi jika orang lain memerlukan klarifikasi lebih lanjut tentang cara menggunakan solusi ini, mereka memiliki one stop shopping.
circleix


0

Saya menggunakan ini

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
    }
}

Jangan pernah gunakan objectmanager dalam kode Anda. terutama tidak di dalam phtml Anda
Kay Int Veen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.