2017-02-13 3 views
1
私は

Kenticoで製品を隠す10

SKUInfoProvider.SetSKUInfo(updateProduct); 

はまた、製品

を削除するためのAPIがあるAPIの下に使用して追加することができますkentico 10.Iにおける電子商取引サイトの製品および更新製品のCRUD操作を行っております

SKUInfoProvider.DeleteSKUInfo(updateProduct); 

ただし、データベースから製品を削除するのではなく、エンドユーザーに表示されずにデータベースに残るように無効にするだけです。

私は偽が、それでもユーザーがproduct.Soを見ることができるようにSKUEnabledを設定しようとしました、私は製品

ProductNode.SetValue("DocumentPublishTo", DateTime.Now.AddDays(-1)); 

を隠すために、コードの下に使用さしかし、私のコードの設定が無効になっproperty.Here上記に新製品を追加します私のコードです

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"; 
      } 

     } 

可能solution.Thereは、それゆえ私はあなたのコードの設定で見つけることができますSKUTreeNodeでそれを使用し、そのようSKUInfoでDocumentPublishToとして何の財産ではないではありませんしてください。

SKUTreeNode productDoc = (SKUTreeNode)SKUTreeNode.New(productDocumentType.ClassName, tree); 
       if (sku.SKUEnabled == false) 
       { 
        productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1); 
       } 
+0

なぜ新製品を望まない場合は、(SKUTreeNode)SKUTreeNode.New()を呼び出しますか?私はそれを代わりにupdateProductオブジェクトに設定します。 – JanH

+0

SKUInfoにDocumentPublishToなどのプロパティがないため、SKUTreeNodeで使用されます。 –

+0

[Kentico 10で製品を無効にするにはどうすればいいですか?](http://stackoverflow.com/questions/42114600/how-do-i-disable-products-in-kentico-10) –

答えて

2

SKUのノードを取得し、新しいノードを作成する必要はありません。 documentation

SKUTreeNode productDoc = (SKUTreeNode)tree.SelectNodes() 
     .Path("/Products/NewProduct") 
     .OnCurrentSite() 
     .CombineWithDefaultCulture() 
     .FirstObject; 
productDoc.DocumentPublishTo = DateTime.Now.AddDays(-1) 
関連する問題