我对Kentico相当新,我不是100%确定如何阻止产品选项在前端网站上显示,但在后端保持启用,这样系统管理员仍然可以使用该选项下订单。
例如
CMSDesk>工具>电子商务>产品选项>编辑具有子选项的选项
例如,有三个子选项,其中两个我希望在网站上向用户显示,但我只想从最终用户中隐藏其中一个,并且只允许管理员访问该选项。
以前有没有人需要此功能?如果是这样,你是如何完成的?
由于
米歇尔
答案 0 :(得分:0)
请在我们的官方Kentico论坛上找到我的答案:
[论坛链接] [1]
我们的论坛经常被监控,而不是stackoverflow,所以我建议继续我们的讨论;)
此致 鲍里斯 Kentico
更新:
如果链接无效,请完整答案:
遗憾的是,这不能立即实现。您将不得不自定义显示选项的控件。您需要修改以下方法:
LoadProductOptions()
在文件\ CMSModules \ Ecommerce \ Controls \ ProductOptions \ ShoppingCartItemSelector.ascx.cs中。在实际站点上加载并显示了产品选项。您必须检查当前用户是否是全局管理员并跳过某些字段的处理(如果不是)。第二种方法是通过使用自定义电子商务处理程序覆盖它来更改OptionCategoryInfoProvider.GetSKUOptionCategories方法。有关此主题的更多信息,请参见以下链接:
相关链接可以在论坛帖子中找到,因为我不能在帖子中发布超过2个链接。
以下是提供程序对象覆盖的示例:
using System;
using System.Collections.Generic;
using System.Web;
using CMS.WorkflowEngine;
using CMS.SettingsProvider;
using CMS.Ecommerce;
using CMS.EcommerceProvider;
/// <summary>
/// Summary description for Class1
/// </summary>
[MyHandlers]
public partial class CMSModuleLoader {
private class MyHandlers: CMSLoaderAttribute {
public override void Init() {
OrderInfoProvider.ProviderObject = new MyEcommerceCustomHandler();
WorkflowEvents.Approve.After += WorkflowEvents_Publish_Handler;
}
private static void WorkflowEvents_Publish_Handler(object sender, EventArgs e) {
//insert custom code here
}
}
public class MyEcommerceCustomHandler: OrderInfoProvider {
protected override string GetInvoiceInternal(int orderId) {
return base.GetInvoiceInternal(orderId);
}
}
}
您还可以在产品选项表中添加自定义字段,以指示该字段是否应显示在实际网站上。