You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6插件:加载未关联交叉销售的ProductStream商品

Shopware 中通过 ProductStream ID 加载关联商品的合规实现方法

我希望通过给定ID加载ProductStream数据并在前端(例如购物车下方)展示,该ProductStream未关联ProductCrossSelling,因此也未关联任何商品。我已通过仓库加载了ProductStream集合:

$criteria = new Criteria($producStreamIds);
$productStreamResult = $this->productStreamRepository->search($criteria, $context);
$productStreams = $productStreamResult->getEntities();

现在我需要获取关联的商品列表,以便通过cms-element-product-slider.html.twig进行展示。我找到类似问题的解决方案,建议使用Core\Content\Product\SalesChannel\CrossSelling\ProductCrossSellingRoute.php的loadByStream方法,但该方法为私有方法;其唯一公开方法load需要传入$productId参数,而我没有该参数。目前我已复制loadByStream的代码来加载商品,想询问是否有Shopware核心中的合规方法可实现该需求?

合规实现方案

Shopware 核心提供了专门用于从 ProductStream 加载商品的ProductStreamSalesChannelRoute类,这是官方推荐的合规方式,无需复制私有方法代码。

步骤说明

  1. 注入ProductStreamSalesChannelRoute
    在你的服务或控制器中通过依赖注入注入该路由类:

    use Shopware\Core\Content\ProductStream\SalesChannel\ProductStreamSalesChannelRoute;
    
    class YourController
    {
        public function __construct(
            private readonly ProductStreamSalesChannelRoute $productStreamRoute
        ) {}
    
        // ... 其他业务代码
    }
    
  2. 调用路由加载商品
    针对已获取的ProductStream实例,调用load方法传入对应的streamId、SalesChannelContext以及必要的请求参数(如分页、排序、限制数量等):

    use Symfony\Component\HttpFoundation\Request;
    
    // 从已加载的集合中获取目标ProductStream
    $targetStream = $productStreams->first();
    
    if ($targetStream) {
        // 构建请求参数,可根据需求调整
        $request = new Request([
            'limit' => 8, // 控制展示的商品数量
            'page' => 1,
            // 可选:添加排序规则,例如 'sort' => 'name'、'order' => 'ASC'
        ]);
    
        $result = $this->productStreamRoute->load(
            $targetStream->getId(),
            $request,
            $context // 传入当前的SalesChannelContext实例
        );
    
        // 获取最终的商品集合
        $products = $result->getProducts();
    }
    
  3. 传递到模板渲染
    将获取到的$products变量传递给cms-element-product-slider.html.twig模板,即可直接使用该组件完成商品展示。

优势说明

  • 这是Shopware官方提供的公开API,自动处理销售渠道场景下的权限校验、库存过滤、价格计算等核心逻辑。
  • 无需维护复制的私有方法代码,后续Shopware版本更新时可直接享受功能迭代和Bug修复。

内容的提问来源于stack exchange,提问作者Tanmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:31:04