与在 Magento 2 中创建新客户类似,在线商店所有者可以通过使用代码来实现编程方式创建产品,而不必浪费时间通过管理员控制台来添加新产品。今天,关于 Magento 2 以编程方式创建产品这一主题,将向您展示一个代码片段,该代码片段允许您完美地创建多种类型的产品(简单产品,可配置产品和可下载产品)。
在本教程中,您可以创建以下类型的产品:
- 简单产品
- 可配置产品
- 可下载产品
- 捆绑产品
以编程方式创建可配置产品的4个步骤
- 步骤1:以编程方式创建简单产品
- 步骤2:将图片添加到产品
- 步骤3:向产品添加自定义选项
- 步骤4:如何分配关联产品
步骤1:以编程方式创建简单产品
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); // instance of object manager
$product = $objectManager->create('\Magento\Catalog\Model\Product');
$product->setSku('my-sku'); // Set your sku here
$product->setName('Sample Simple Product'); // Name of Product
$product->setAttributeSetId(4); // Attribute set id
$product->setStatus(1); // Status on product enabled/ disabled 1/0
$product->setWeight(10); // weight of product
$product->setVisibility(4); // visibilty of product (catalog / search / catalog, search / Not visible individually)
$product->setTaxClassId(0); // Tax class id
$product->setTypeId('simple'); // type of product (simple/virtual/downloadable/configurable)
$product->setPrice(100); // price of product
$product->setStockData(
array(
'use_config_manage_stock' => 0,
'manage_stock' => 1,
'is_in_stock' => 1,
'qty' => 999999999
)
);
$product->save();
步骤2:将图片添加到产品
您可以将多个图像添加到该产品的媒体库中。
// Adding Image to product
$imagePath = "sample.jpg"; // path of the image
$product->addImageToMediaGallery($imagePath, array('image', 'small_image', 'thumbnail'), false, false);
$product->save();
步骤3:向产品添加自定义选项
这可以应用于其他产品类型,例如虚拟产品,可下载产品等。
// Adding Custom option to product
$options = array(
array(
"sort_order" => 1,
"title" => "Custom Option 1",
"price_type" => "fixed",
"price" => "10",
"type" => "field",
"is_require" => 0
),
array(
"sort_order" => 2,
"title" => "Custom Option 2",
"price_type" => "fixed",
"price" => "20",
"type" => "field",
"is_require" => 0
)
);
foreach ($options as $arrayOption) {
$product->setHasOptions(1);
$product->getResource()->save($product);
$option = $objectManager->create('\Magento\Catalog\Model\Product\Option')
->setProductId($product->getId())
->setStoreId($product->getStoreId())
->addData($arrayOption);
$option->save();
$product->addOption($option);
}
使用此脚本代码,您应注意一些注意事项,以创建简单的,可配置的,可下载的产品,如下所示:
- 要创建简单的产品,您需要通过权重设置。
- 要创建可配置产品,需要合并关联产品和当前产品。
- 要创建可下载产品,需要将下载链接插入到当前产品。否则,您将生成虚拟产品或简单产品。
步骤4:如何分配关联产品
这是帮助您创建可配置产品的技巧。请使用以下代码段:
$productId = 12; // Configurable Product Id
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($productId); // Load Configurable Product
$attributeModel = $objectManager->create('Magento\ConfigurableProduct\Model\Product\Type\Configurable\Attribute');
$position = 0;
$attributes = array(134, 135); // Super Attribute Ids Used To Create Configurable Product
$associatedProductIds = array(2,4,5,6); //Product Ids Of Associated Products
foreach ($attributes as $attributeId) {
$data = array('attribute_id' => $attributeId, 'product_id' => $productId, 'position' => $position);
$position++;
$attributeModel->setData($data)->save();
}
$product->setTypeId("configurable"); // Setting Product Type As Configurable
$product->setAffectConfigurableProductAttributes(4);
$objectManager->create('Magento\ConfigurableProduct\Model\Product\Type\Configurable')->setUsedProductAttributeIds($attributes, $product);
$product->setNewVariationsAttributeSetId(4); // Setting Attribute Set Id
$product->setAssociatedProductIds($associatedProductIds);// Setting Associated Products
$product->setCanSaveConfigurableAttributes(true);
$product->save();
如果存在相同分配(关联产品已分配给可配置产品),则该命令将运行错误。