/** * 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); }
/** * 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); }
/** * 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); } }