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

时间:2012-09-13 23:36:55

标签: kentico

我对Kentico相当新,我不是100%确定如何阻止产品选项在前端网站上显示,但在后端保持启用,这样系统管理员仍然可以使用该选项下订单。

例如

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

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

以前有没有人需要此功能?如果是这样,你是如何完成的?

由于

米歇尔

1 个答案:

答案 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);
        }
    }
}

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