在Kentico 10中隐藏产品
我正在为kentico 10电子商务网站的产品执行CRUD操作。我可以使用下面的API添加和更新产品在Kentico 10中隐藏产品,kentico,Kentico,我正在为kentico 10电子商务网站的产品执行CRUD操作。我可以使用下面的API添加和更新产品 SKUInfoProvider.SetSKUInfo(updateProduct); 还有一个用于删除产品的API SKUInfoProvider.DeleteSKUInfo(updateProduct); 但我不希望从数据库中删除该产品,而只是禁用它们,这样它们就不会显示给最终用户,并且仍然保留在数据库中 我试图将SKUEEnabled设置为false,但用户仍然可以看到产品。因此,我使用
SKUInfoProvider.SetSKUInfo(updateProduct);
还有一个用于删除产品的API
SKUInfoProvider.DeleteSKUInfo(updateProduct);
但我不希望从数据库中删除该产品,而只是禁用它们,这样它们就不会显示给最终用户,并且仍然保留在数据库中
我试图将SKUEEnabled设置为false,但用户仍然可以看到产品。因此,我使用下面的代码隐藏产品
ProductNode.SetValue("DocumentPublishTo", DateTime.Now.AddDays(-1));
但是我的代码设置添加了一个具有上述禁用属性的新产品
foreach (DataRow dr in dt.Rows)
{
manufacturer = GetManufacturer(Convert.ToString(dr["MANUFACTURER_NAME"]));
department = GetDepartment(Convert.ToString(dr["CATEGORY_OF_PRODUCT_1"]));
var sku = new SKUInfo
{
SKUNumber = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]),
SKUName = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]),
SKUDescription = Convert.ToString(dr["TECHNICAL_SPECIFICATIONS"]).Trim('"'),
SKUShortDescription = Convert.ToString(dr["SHORT_DESCRIPTION"]).Trim('"'),
SKUPrice = ValidationHelper.GetDouble(dr["RESELLER_BUY_INC"], 0),
SKURetailPrice = ValidationHelper.GetDouble(dr["RRP_INC"], 0),
SKUEnabled = false,
SKUSiteID = siteId,
SKUProductType = SKUProductTypeEnum.Product,
SKUManufacturerID = manufacturer.ManufacturerID,
SKUDepartmentID = department.DepartmentID,
SKUHeight = ValidationHelper.GetDouble(dr["HEIGHT"], 0),
SKUWidth = ValidationHelper.GetDouble(dr["WIDTH"], 0),
SKUWeight = ValidationHelper.GetDouble(dr["WEIGHT"], 0),
SKUDepth = ValidationHelper.GetDouble(dr["LENGTH"], 0),
SKUAvailableItems = 1,
SKUSellOnlyAvailable = true
};
try
{
SKUInfo updateProduct = SKUInfoProvider.GetSKUs()
.WhereEquals("SKUNumber", sku.SKUNumber)
.FirstObject;
sku.SKUPrice += sku.SKUPrice * 0.015;
if (updateProduct != null)
{
updateProduct.SKUNumber = sku.SKUNumber; updateProduct.SKUName = sku.SKUName;
SKUInfoProvider.SetSKUInfo(updateProduct);
}
else
{
SKUInfoProvider.SetSKUInfo(sku);
}
if (!sku.SKUEnabled)
{
SKUTreeNode productDoc = (SKUTreeNode)SKUTreeNode.New(productDocumentType.ClassName, tree);
if (sku.SKUEnabled == false)
{
productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1);
}
productDoc.DocumentSKUName = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]);
productDoc.DocumentSKUDescription = sku.SKUDescription;
productDoc.NodeSKUID = sku.SKUID;
productDoc.DocumentCulture = cultureCode;
productDoc.DocumentName = Convert.ToString(dr["MANUFACTURER_PART_NUMBER"]);
}
}
catch (Exception ex)
{
error += "error";
}
}
请提供可能的解决方案。SKUInfo中没有DocumentPublishTo这样的属性,因此我将其与SKUTRENode一起使用,您可以在代码设置中找到它
SKUTreeNode productDoc = (SKUTreeNode)SKUTreeNode.New(productDocumentType.ClassName, tree);
if (sku.SKUEnabled == false)
{
productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1);
}
您需要获取SKU的节点,而不是创建新节点。从:
当您不想要新产品时,为什么要调用(SKUTreeNode)SKUTreeNode.New()?我会改为将其设置为updateProduct对象。SKUInfo中没有DocumentPublishTo之类的属性,因此将其与SKUTRENode一起使用。可能是重复的
SKUTreeNode productDoc = (SKUTreeNode)tree.SelectNodes()
.Path("/Products/NewProduct")
.OnCurrentSite()
.CombineWithDefaultCulture()
.FirstObject;
productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1)