Magento 2:如何按商店ID过滤产品集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magento 2:如何按商店ID过滤产品集合相关的知识,希望对你有一定的参考价值。

我正在尝试展示品牌特定的产品。品牌是我的属性之一,是强制性的,并附属于每个产品。

我为每个品牌在一个网站下创建了不同的商店,并为每个品牌创建了不同的URL。所以,我想为每个品牌商店展示明智的产品品牌。

那么,哪种最简单的方法来过滤产品的属性,即品牌。

我使用的是Magento 2.1.2,mysql 6,php 7.0

答案

使用以下代码按商店ID筛选产品集合:

$objectManager = MagentoFrameworkAppObjectManager::getInstance();  
$productCollectionFactory = $objectManager->get('MagentoCatalogModelResourceModelProductCollectionFactory');
$collection = $productCollectionFactory->create();
$collection->addAttributeToSelect('*')
$collection->addStoreFilter($storeid)
$collection->addAttributeToFilter('attribute_code');
另一答案
use MagentoFrameworkDataOptionSourceInterface;
class Productlist implements OptionSourceInterface{
    /**
    * Get products
    *
    * @return array
    */
    public function toOptionArray(){
        $objectManager = MagentoFrameworkAppObjectManager::getInstance();
        $store=$objectManager->create('MagentoStoreModelStoreRepository');
        $productCollectionFactory =$objectManager->create('MagentoCatalogModelProduct')->getCollection();
        $storeId='3';
        $productCollectionFactory->addAttributeToSelect('name');
        $rootCategoryId = $store->getById($storeId)->getRootCategoryId();
        $productCollectionFactory->addAttributeToSelect('*');
        $productCollectionFactory->addCategoriesFilter(array('eq' => $rootCategoryId));
        $options = [];
        foreach ($productCollectionFactory as $product) {
            $options[] = ['label' => $product->getName(), 'value' => $product->getId()];
        }
        return $options;
    }

以上是关于Magento 2:如何按商店ID过滤产品集合的主要内容,如果未能解决你的问题,请参考以下文章

过滤 Magento 集合而不是产品,使用 distinct

Magento 以任意顺序获取产品集合

Magento:从另一家商店获取产品价格?

Magento 1.9 Multi Store不同的超级属性值

Magento - 我如何通过 GeoIP 按国家/地区运行商店?

如何获得 Magento 商店货币