今天我们将介绍一个简短但有用的教程,介绍如何在 Magento 2 中通过类别 ID 获取产品集合。这是一种获取产品集合的快速方法,可以为商店管理员和客户节省大量配置时间。这就是为什么您可能会看到在线商店中的客户需要它。

随着Magento的快速发展,产品集合变得越来越重要。这是因为,在不同的项目中,不同的过滤器和需求通常需要产品集合。现在让我们了解一下产品集合以及如何在 Magento 2 中通过类别 ID 获取它。

**如何通过类别 ID 分 3 步获取产品集合:**

  • 第 1 步:创建 Products.php 块
  • 第 2 步:插入phtml文件
  • 第 3 步:刷新缓存和测试结果

现在请按照以下步骤及时完成工作。您不需要更改核心代码。

第 1 步:创建 Products.php 块

为了按类别 ID 获取产品集合,您要做的第一件事就是创建Products.php块。遵循以下路径:Example/HelloWorld/Block/Products.php

<?php
namespace Example\HelloWorld\Block;
class Products extends \Magento\Framework\View\Element\Template
{    
  
     /**
     * @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
     */
    protected $_productCollectionFactory;
  
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,        
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
    )
    {    
        $this->_productCollectionFactory = $productCollectionFactory;
        parent::__construct($context);
    }
    
    
    public function getProductCollectionByCategories($ids)
    {
        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*');
        $collection->addCategoriesFilter(['in' => ids]);
        return $collection;
    }
}

  • 这里,$ids是一个数组,其中包含类别 id。
  • $_productCollectionFactory是产品集合工厂的对象,用于获取产品模型的集合。
  • addCategoriesFilter应用类别过滤器的功能。
  • $collection返回分配给给定类别的产品集合。

步骤2:插入phtml文件

完成上述步骤后,您的块中将有一个集合,现在要获取块中的 Product 集合,请按照以下代码片段操作:Example/HelloWorld/view/frontend/templates/list.phtml

$ids = [1,2,3];
$categoryProducts = $block->getProductCollectionByCategories($ids);
foreach ($categoryProducts as $product) {
    echo $product->getName() . ' - ' . $product->getProductUrl() . '<br />';
}

第 3 步:刷新缓存和测试结果

现在,让我们刷新缓存并测试结果。