2016-08-31 7 views

答えて

2

リンクは他の種類のリンクと同様にグループ化することができます。次の例は、クラスに注入された製品リンクファクトリを示し、グループ化された関連リンクのセットを作成するために使用されます。

protected $productLinkFactory; 

public function __construct(
    \Magento\Catalog\Model\ProductLink\LinkFactory $productLinkFactory 
) { 
    $this->productLinkFactory = $productLinkFactory; 
} 

function addLinksToProduct(array $links, $product) { 
    $links = array(); 

    foreach ($linkData as $linkData) { 
     $link = $this->productLinkFactory->create() 
      ->setSku($linkData['source_sku']) 
      ->setLinkedProductSku($linkData['dest_sku']) 
      ->setPosition($linkData['position']) 
      ->setLinkType('associated'); 
     $link 
      ->getExtensionAttributes() 
      ->setQty($linkData['qty']); 
     $links[] = $link; 
    } 
    $product->setProductLinks($links); 

    $product->save(); 
} 
0

は私が間違っmの場合はそう私を修正Magentoの2を使用して新しいメートル:それはグループ化された製品とそれに含まれる製品間のリンクの関連付けを行い、リンクタイプ「関連する」の使用です。 グループ化された製品のファイルはです。/module/grouped-product/Model/Product/Initialization/Helper/ProductLinks/Plugin/Grouped.php Magento 2では、関連する製品を追加するためにプラグインを使用しています。あなたは、単純な製品を作るに似て、あなたの製品のために設定する必要があり、他の..whatever ...

$product->setTypeId('grouped') 
->setName('My Grouped product') 
->setSku('my-grouped-sku') 

.. :

は、あなたがこのような製品を持っているとしましょう。

$links = $this->getLinksForGrouped($childrenIds,$groupedProductSku); 

    $product->setProductLinks($links); //This is what you need. 
        $product->save(); 



    public function getLinksForGrouped($childrenIds,$groupedProductSku){ 
      $associated = array(); 
      $position = 0; 
      foreach($childrenIds as $productId){ 
       $position++; 
//You load each product to get what you need in order to build $productLink 
       $linkedProduct = $this->productRepository->getById($productId); 
       /** @var \Magento\Catalog\Api\Data\ProductLinkInterface $productLink */ 
       $productLink = $this->productLinkFactory->create(); 

       $productLink->setSku($groupedProductSku) 
        ->setLinkType('associated') 
        ->setLinkedProductSku($linkedProduct->getSku()) 
        ->setLinkedProductType($linkedProduct->getTypeId()) 
        ->setPosition($position) 
        ->getExtensionAttributes() 
        ->setQty(0); 

       $associated[] = $productLink; 

      } 

      return $associated; 

     } 

productLinkFactory、productRepositoryのコンストラクタで適切なクラスを呼び出すには、そのファイルの中を見てください。

関連する問題