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