文档 下载安装 问答 主机

编程方式创建产品

与在 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();

如果存在相同分配(关联产品已分配给可配置产品),则该命令将运行错误。

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: