Kentico产品选项:启用后端但隐藏前端

Kentico产品选项:启用后端但隐藏前端,kentico,Kentico,我是Kentico的新手,我不能100%确定如何防止产品选项显示在前端网站上,但要在后端启用它,以便系统管理员仍然可以使用该选项下订单 比如说 CMSDesk>工具>电子商务>产品选项>编辑具有子选项的选项 例如,有三个子选项,其中两个我想在网站上显示给用户,但只有一个我想对最终用户隐藏,只允许管理员访问该选项 以前是否有人需要此功能?如果是,你是如何做到的 谢谢 米歇尔请在我们的肯蒂科官方论坛上找到我的答案: [论坛连结][1] 我们的论坛比stackoverflow更经常受到监控,因此我建议

我是Kentico的新手,我不能100%确定如何防止产品选项显示在前端网站上,但要在后端启用它,以便系统管理员仍然可以使用该选项下订单

比如说

CMSDesk>工具>电子商务>产品选项>编辑具有子选项的选项

例如,有三个子选项,其中两个我想在网站上显示给用户,但只有一个我想对最终用户隐藏,只允许管理员访问该选项

以前是否有人需要此功能?如果是,你是如何做到的

谢谢


米歇尔

请在我们的肯蒂科官方论坛上找到我的答案:

[论坛连结][1]

我们的论坛比stackoverflow更经常受到监控,因此我建议继续在那里讨论;)

问候,, 鲍里斯, 肯蒂科


更新:

如果链接无效,以下是完整答案:

遗憾的是,这不能马上实现。您必须自定义显示选项的控件。您需要修改以下方法:

LoadProductOptions()

在文件\cmsModule\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);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Web;
使用CMS.WorkflowEngine;
使用CMS.SettingsProvider;
使用CMS.电子商务;
使用CMS.EcommerceProvider;
/// 
///1类的概要说明
/// 
[MyHandlers]
公共部分类CMSModuleLoader{
私有类MyHandlers:CMSLoaderAttribute{
公共重写void Init(){
OrderInfoProvider.ProviderObject=新的MyEcommerceCustomHandler();
WorkflowEvents.Approve.After+=WorkflowEvents\u Publish\u处理程序;
}
私有静态void WorkflowEvents\u Publish\u处理程序(对象发送方,EventArgs e){
//在此处插入自定义代码
}
}
公共类MyEcommerceCustomHandler:OrderInfoProvider{
受保护的重写字符串GetInvoiceInternal(int orderId){
return base.GetInvoiceInternal(orderId);
}
}
}

您还可以将自定义字段添加到产品选项表中,以指示该字段是否应显示在实时站点上

你能至少在这里总结一下你的答案吗,这样人们就不必访问你的网站来查看它了?而且,这可以防止将来某个时候链接消失。@Boris,你指的是链接,但答案中没有任何链接。它们还存在吗?