如何在 Demandware(sfcc) 中从类别 API 中删除产品?

问题描述 投票:0回答:2

我正在使用下面的代码从类别 - 护肤品中删除该产品,

var name=pdict.categoryName;  
var category=CatalogMgr.getCategory('skincare'); 

if(category && category.products.length){
    for each(var product in category.products){
        if(!product.custom.productBadge1){
              var assignments = product.getCategoryAssignments();
              
              for(var i=0;i<assignments.length;i++)  
                  {
                  if(assignments[i].category.ID=='skincare'){
                     //TO DO remove product from category
                  }
                  } 

        }
    }
}

这里使用哪个API

salesforce demandware salesforce-commerce-cloud
2个回答
0
投票

嗯,一种可能的方法是,您可以编写 XML 来删除作业并手动或通过作业导入它。 这可能是最坏的情况。


0
投票

要通过 Demandware (SFCC) API 从类别中删除产品:

  1. 加载类别:使用
    dw.catalog.CategoryMgr.getCategory(categoryID)
    获取类别对象。
  2. 加载产品:使用
    dw.catalog.ProductMgr.getProduct(productID)
    获取产品对象。
  3. 删除分配:使用
    category.removeProduct(product)
    从类别中删除产品。
  4. 提交更改:使用
    dw.system.Transaction.wrap()
    确保操作在事务上下文中完成。

示例:

output:
const Transaction = require('dw/system/Transaction');
const CategoryMgr = require('dw/catalog/CategoryMgr');
const ProductMgr = require('dw/catalog/ProductMgr');

Transaction.wrap(() => {
const category = CategoryMgr.getCategory('categoryID');
    const product = ProductMgr.getProduct('productID');
    if (category && product) {
        category.removeProduct(product);
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.