Magento 2: nhận bộ sưu tập sản phẩm bằng cách sử dụng danh mục id


12

Làm cách nào để có được tất cả các sản phẩm thuộc danh mục sử dụng id danh mục trong magento 2?


Bạn muốn điều này trong một khối hoặc trong một mô hình?
Marius

tôi muốn tất cả các sản phẩm của thể loại trong trang chủ. tôi đã có id danh mục và dựa vào đó tôi muốn lấy tất cả sản phẩm của danh mục
Rakesh Jesadiya

tôi có khối gọi để nhận bộ sưu tập danh mục vì vậy tốt nhất để vào lớp chặn.
Rakesh Jesadiya

@RakeshJesadiya Xin lỗi vì đã đăng ở đây nhưng tôi cần sự giúp đỡ của bạn về vấn đề này magento.stackexchange.com/questions/293795/ Hãy làm ơn
Nagaraju K

Câu trả lời:


24

bạn có thể tiêm vào khối của mình một ví dụ \Magento\Catalog\Model\CategoryFactorynhư thế này:

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

Sau đó tạo phương thức này trong khối của bạn:

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

Sau đó, bạn có thể sử dụng trong mẫu này:

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

Bây giờ bạn có thể chỉ cần thêm nội dung này vào nội dung trang chủ của bạn

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

Khi thực hiện giải pháp này, tôi gặp phải vấn đề tương tự được đăng ở đây: magento.stackexchange.com/questions/123374/. Tôi đang thêm vấn đề này để nếu những người khác cần làm rõ thêm về cách sử dụng giải pháp này, họ sẽ dừng mua sắm.
circleix


0

Tôi đang sử dụng cái này

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

Không bao giờ sử dụng objectmanager trong mã của bạn. đặc biệt không có trong phtml của bạn
Kay Int Veen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.