Magento 2: รับชุดผลิตภัณฑ์โดยใช้รหัสหมวดหมู่


12

วิธีรับผลิตภัณฑ์ทั้งหมดของหมวดหมู่โดยใช้รหัสหมวดหมู่ใน magento 2


คุณต้องการสิ่งนี้ในบล็อกหรือในรูปแบบ?
Marius

ฉันต้องการผลิตภัณฑ์ทั้งหมดของหมวดหมู่ในหน้าแรก ฉันได้รับรหัสหมวดหมู่และตามที่ฉันต้องการดึงผลิตภัณฑ์ทั้งหมดของหมวดหมู่
Rakesh Jesadiya

ฉันมีบล็อกการโทรเพื่อรับหมวดหมู่คอลเลกชันดังนั้นจึงเป็นการดีที่สุดที่จะได้รับในชั้นเรียนบล็อก
Rakesh Jesadiya

@RakeshJesadiya ขออภัยที่โพสต์ที่นี่ แต่ฉันต้องการความช่วยเหลือของคุณเกี่ยวกับปัญหานี้magento.stackexchange.com/questions/293795/…ได้ โปรด
Nagaraju K

คำตอบ:


24

คุณสามารถฉีดอินสแตนซ์\Magento\Catalog\Model\CategoryFactoryแบบนี้ได้ในบล็อกของคุณ:

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

จากนั้นสร้างวิธีการนี้ในบล็อกของคุณ:

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

จากนั้นคุณสามารถใช้ในเทมเพลตนี้:

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

ตอนนี้คุณควรจะเพิ่มสิ่งนี้ลงในเนื้อหาโฮมเพจของคุณ

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

ในการใช้โซลูชันนี้ฉันพบปัญหาเดียวกันที่โพสต์เกี่ยวกับที่นี่: magento.stackexchange.com/questions/123374/ฉันเพิ่มสิ่งนี้ในกรณีที่ผู้อื่นต้องการคำอธิบายเพิ่มเติมเกี่ยวกับวิธีใช้โซลูชันนี้พวกเขามีแหล่งช็อปปิ้งครบวงจร
Circlesix

@Marius มีวิธีใดบ้างที่จะทำผ่านรูปแบบพื้นที่เก็บข้อมูลเช่นผ่านสัญญาบริการของ Magento?
Mathanagopal S


0

ฉันใช้สิ่งนี้

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

อย่าใช้ objectmanager ในรหัสของคุณ โดยเฉพาะอย่างยิ่งไม่ได้อยู่ใน phtml ของคุณ
Kay Int Veen

อะไรคือเหตุผลที่ไม่ใช้ objectmanager ในรหัสของเรา
Kowsigan Atsayam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.