Example #1
0
 /**
  * Build product links
  *
  * @param \Magento\Catalog\Model\Product $product
  * @param \Magento\Catalog\Model\Product $duplicate
  * @return void
  */
 public function build(\Magento\Catalog\Model\Product $product, \Magento\Catalog\Model\Product $duplicate)
 {
     $data = [];
     $attributes = [];
     $link = $product->getLinkInstance();
     $link->useCrossSellLinks();
     foreach ($link->getAttributes() as $attribute) {
         if (isset($attribute['code'])) {
             $attributes[] = $attribute['code'];
         }
     }
     /** @var \Magento\Catalog\Model\Product\Link $link  */
     foreach ($product->getCrossSellLinkCollection() as $link) {
         $data[$link->getLinkedProductId()] = $link->toArray($attributes);
     }
     $duplicate->setCrossSellLinkData($data);
 }
Example #2
0
 /**
  * Build product links
  *
  * @param \Magento\Catalog\Model\Product $product
  * @param \Magento\Catalog\Model\Product $duplicate
  * @return void
  */
 public function build(\Magento\Catalog\Model\Product $product, \Magento\Catalog\Model\Product $duplicate)
 {
     if ($product->getTypeId() !== \Magento\GroupedProduct\Model\Product\Type\Grouped::TYPE_CODE) {
         //do nothing if not grouped product
         return;
     }
     $data = [];
     $attributes = [];
     $link = $product->getLinkInstance();
     $link->setLinkTypeId(\Magento\GroupedProduct\Model\ResourceModel\Product\Link::LINK_TYPE_GROUPED);
     foreach ($link->getAttributes() as $attribute) {
         if (isset($attribute['code'])) {
             $attributes[] = $attribute['code'];
         }
     }
     /** @var \Magento\Catalog\Model\Product\Link $link  */
     foreach ($this->_getGroupedLinkCollection($product) as $link) {
         $data[$link->getLinkedProductId()] = $link->toArray($attributes);
     }
     $duplicate->setGroupedLinkData($data);
 }
Example #3
0
 /**
  * Retrieve collection of associated products
  *
  * @param \Magento\Catalog\Model\Product $product
  * @return \Magento\Catalog\Model\ResourceModel\Product\Link\Product\Collection
  */
 public function getAssociatedProductCollection($product)
 {
     /** @var \Magento\Catalog\Model\Product\Link  $links */
     $links = $product->getLinkInstance();
     $links->setLinkTypeId(\Magento\GroupedProduct\Model\ResourceModel\Product\Link::LINK_TYPE_GROUPED);
     $collection = $links->getProductCollection()->setFlag('require_stock_items', true)->setFlag('product_children', true)->setIsStrongMode();
     $collection->setProduct($product);
     return $collection;
 }
 public function testGetLinkInstance()
 {
     $model = $this->_model->getLinkInstance();
     $this->assertInstanceOf('Magento\\Catalog\\Model\\Product\\Link', $model);
     $this->assertSame($model, $this->_model->getLinkInstance());
 }
 /**
  * {@inheritdoc}
  */
 public function getLinkInstance()
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getLinkInstance');
     if (!$pluginInfo) {
         return parent::getLinkInstance();
     } else {
         return $this->___callPlugins('getLinkInstance', func_get_args(), $pluginInfo);
     }
 }