【问题标题】:How to change product by a storeview in magento 2如何通过magento 2中的storeview更改产品
【发布时间】:2016-08-24 11:22:47
【问题描述】:

在后端,您可以通过商店视图为产品设置不同的设置。 但是,您如何通过商店查看获得这些产品。 获取产品可以这样完成,但是如何从不同的 storeview 获取产品数据

 $product = $objectManager->create('Magento\Catalog\Model\Product')->load($product->getId());

【问题讨论】:

    标签: php magento magento2 magento-2.0


    【解决方案1】:

    这里的另一个答案直接使用 ObjectManager 和不推荐使用的加载功能,因此,对于更多最佳实践方法,您可以使用 ProductRepositoryInterface 在特定商店范围内加载产品。

    在您的类中注入 ProductRepositoryInterface 的实例(例如称为 $_productRepository)后,使用以下内容并将 $storeId 设置为所需商店视图的 ID。

    $oProduct = $_productRepository->get('mysku',false, $storeId, false);
    

    或者通过 ID 获取:

    $oProduct = $_productRepository->getById($productId,false, $storeId, false);
    

    【讨论】:

    • 我会看看 here 并查看 Luca 所做的建议更改。您按 ID 获取的功能可能有误。
    • @FrankerZ 那你为什么拒绝它?按 ID 获取的 Matt O 函数 100% 错误,我对其进行了测试,它必须是 getById(),请参见 \vendor\magento\module-catalog\Api\ProductRepositoryInterface.php
    • @LucaS 见this 答案。
    • 已编辑以更正函数名称 - 感谢您的发现!
    【解决方案2】:

    使用->setStoreId(0)

    单一产品

    要通过 storeview 加载单个产品,请使用此代码

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->create('Magento\Catalog\Model\Product')->setStoreId(0)->load($product->getId());
    

    产品集合

    要通过 storeview 加载多个产品,您可以像这样使用产品集合:

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $collection = $productCollection->create()
                  ->addAttributeToSelect('*')
                  ->setStoreId(0)
                  ->load();
    

    ->setStoreId(0) 中的0 更改为您的storeview ID

    使用 store id 0 更改产品默认数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多