Згруповані продукти є лише одним із багатьох типів продуктів Magento 2. Їх особливістю є те, що вони складаються з простих продуктів, які можна придбати окремо або ж групою. Крім того, згруповані продукти не мають ціни, оскільки вона визначається продуктами з яких він складається.
Звичайно, ви можете створювати згруповані продукти за допомогою адмін панелі. Проте ви, можливо, шукаєте програмний спосіб виконання цього завдання.
Якщо ви хочете дізнатися, як створювати згруповані продукти програмно, ви потрапили на правильну сторінку.
Для того, щоб створити згруповагий продукт в Magento 2 програмно, використайте наступний код:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get(\Magento\Framework\App\State::class);
$state->setAreaCode('frontend');
try {
$product = $objectManager->create(\Magento\Catalog\Api\Data\ProductInterface::class);
$product->setTypeId(\Magento\GroupedProduct\Model\Product\Type\Grouped::TYPE_CODE)
->setAttributeSetId(4)
->setName('Grouped Product')
->setSku('Grouped Product')
->setVisibility(\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
->setStockData(['use_config_manage_stock' => 1, 'is_in_stock' => 1]);
$productRepository = $objectManager->get(\Magento\Catalog\Api\ProductRepositoryInterface::class);
$childrenIds = array(1, 2);
$associated = array();
$position = 0;
foreach ($childrenIds as $productId) {
$position++;
$linkedProduct = $productRepository->getById($productId);
$productLink = $objectManager->create(\Magento\Catalog\Api\Data\ProductLinkInterface::class);
$productLink->setSku($product->getSku())
->setLinkType('associated')
->setLinkedProductSku($linkedProduct->getSku())
->setLinkedProductType($linkedProduct->getTypeId())
->setPosition($position)
->getExtensionAttributes()
->setQty(1);
$associated[] = $productLink;
}
$product->setProductLinks($associated);
$productRepository->save($product);
echo 'success';
} catch (\Exception $e) {
$objectManager->get(\Psr\Log\LoggerInterface::class)->info($e->getMessage());
echo $e->getMessage();
}
Ви можете використовувати цю статтю, щоб створювати згруповані продукти в Magento програмно набагато швидше та оптимізувати керування продуктами у вашому магазині.
Але це не означає, що на цьому потрібно зупинятися. Ви можете піти далі й навчитися створювати інші типи продуктів, як-от збірні або конфігураційні продукти.