如何在Drupal 8商业中以编程方式创建产品

时间:2016-10-05 13:00:07

标签: drupal commerce

我使用当前商务2.x.dev进行在线商店开发。这是我与Commerce 2合作的第一个项目。

当我开始处理产品导入时,我发现Feeds模块不稳定,我决定编写自定义数据导入解决方案(从CSV / XML源导入批处理/队列API数据)。

因此,此时我无法通过代码找到有关正确创建产品实体的任何信息。我探讨了Drupal Commerce文档部分:http://docs.drupalcommerce.org/v2/product/products.html但它只包含手动产品管理的UI说明。

我认为,使用产品/订单实体代码工作的简短指令对开发人员非常有帮助,特别是对于开始使用商业2并具有7.x商务经验的开发人员。

3 个答案:

答案 0 :(得分:7)

要以编程方式创建包含3种产品变体的产品,请在自定义模块中使用以下代码:

use Drupal\commerce_product\Entity\ProductVariation;
use Drupal\commerce_product\Entity\Product;
use Drupal\commerce_price\Price;

function my_module_install() { 

// Create variations

$variation1 = ProductVariation::create([
  'type' => 'default',
  'sku' => 'var1',
  'price' => new Price('24.00', 'EUR'),  
]);
$variation1->save();

$variation2 = ProductVariation::create([
  'type' => 'default',
  'sku' => 'var2',
  'price' => new Price('50.00', 'EUR'),  
]);
$variation2->save();

$variation3 = ProductVariation::create([
  'type' => 'default',
  'sku' => 'var3',
  'price' => new Price('115.00', 'EUR'), 
]);
$variation3->save();    

// Create product using variations previously saved

$product = Product::create([
  'type' => 'default',
  'title' => t('Your Product Name'),
  'variations' => [$variation1, $variation2, $variation3],
]);
$product->save();

}

我希望它能回答你的问题。请随意了解更多详情。

祝你好运

答案 1 :(得分:1)

谢谢,您需要阅读本文档( Creating products )。

$variations = [
  $variation_blue_large,
];
$product = \Drupal\commerce_product\Entity\Product::create([
  'uid' => 1,
  'type' => 'my_custom_product_type',
  'title' => 'My Custom Product',
  'stores' => [$store],
  'variations' => $variations,
]);
$product->save();

答案 2 :(得分:0)

**加载具有Multi-pal变异的产品**

use Drupal\commerce_product\Entity\ProductVariation;
use Drupal\commerce_product\Entity\Product;
use Drupal\commerce_price\Price;

// Load existing  variations

 $result = \Drupal::entityQuery('commerce_product_variation')
          ->condition('type', 'variation_type')
             ->execute();
  $entity_manager = \Drupal::entityManager();
      $product_variation = $entity_manager->getStorage('commerce_product_variation')->loadMultiple($result);


//Add variation to Product
$product = Product::create([
  'type' => 'hakuro_plate',
  'title' => t('Your Product Name custom New testing'),
  'variations' =>$product_variation,
]);
$product->save();