我有一组页面编辑器的字段的自定义按钮,我想在加载时根据条件禁用其中的一些。有没有办法做到这一点?当直接转到包含该字段的模板中的该字段时,该按钮使用“页面编辑器”的多列表选项设置。禁用基于特定条件的字段的页面编辑器的按钮
0
A
回答
2
如果它是页面编辑器本身(功能区)内的按钮,则可以覆盖QueryState
方法 - 使其返回false以禁用该按钮,true为启用它。
的方法是public override CommandState QueryState(CommandContext context)
你可以这样做:
public override CommandState QueryState(CommandContext context)
{
var field = (MultilistField)context.Items[0].Fields["Fieldname"];
var selected = field.GetItems();
// Check whether the correct ones are selected. If so, return true - else false
}
您也可以隐藏按钮 - 使用CommandState.Hidden
[编辑]
我可能误解了 - 如果是字段类型的按钮,您可能会喜欢this article。它不显示如何隐藏按钮,但您可能可以使用public override void HandleMessage(Message message)
方法做些事情,至少可以忽略它。
[编辑]
另一个编辑,这应该允许你检查字段ID或名称。
您可以更改或添加到getChromeData
管道。例如,您可以覆盖GetFieldChromeData
类中的Process
方法。
此类生成在/sitecore/content/Applications/WebEdit/Common field buttons
的核心数据库中定义的按钮。与其添加所有这些,你可以在那里添加条件。
获得按钮后,可能会在添加按钮之前,根据字段ID或字段名称删除不需要的按钮。
[最终编辑]
我写了一个比上面的编辑更优雅的解决方案。你可以阅读它here。 简而言之,我没有重写Sitecore代码,而是在管道中添加了一个处理器,并根据字段的标题和同一项目上另一个字段的值来删除按钮。
public class RemoveButtons : GetChromeDataProcessor
{
public override void Process(GetChromeDataArgs args)
{
Assert.ArgumentNotNull(args, “args”);
Assert.IsNotNull(args.ChromeData, “Chrome Data”);
if (“field”.Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
{
Field argument = args.CustomData["field"] asField;
Assert.ArgumentNotNull(argument, “CustomData[\"{0}\"]“.FormatWith(new object[] { “field” }));
if (argument.Name == “Title” && MainUtil.GetBool(argument.Item["NeedsToBeCheckedToPersonalize"], false))
{
args.ChromeData.Commands.RemoveAll(delegate(WebEditButton b)
{
return b.Header == “Personalize”;
});
}
}
}
}
1
你看过使用Sitecore规则引擎来解决这个需求吗?请看Rule-Based User Interface Components for the Sitecore Client以了解如何实现这一目的的详细说明。
相关问题
- 1. 如何禁用Ionic中特定页面的硬件按钮
- 2. 禁用特定行的jsgrid的编辑和删除按钮
- 3. 基于角度2中的文本字段值禁用按钮
- 4. 禁用文本字段编辑而不阻止清除按钮
- 5. 禁用基于json值的按钮
- 6. 禁用基于ID点击的按钮
- 7. 禁用基于Retrofit响应的按钮
- 8. 如何在CRUD编辑页面中禁用某些字段?
- 9. 显示编辑按钮基于角色
- 10. 当光标位于小部件的可编辑部分时,禁用ToolBar中的特定按钮? (CKEditor版本4.5.11)
- 11. 启用/禁用基于单选按钮的功能按钮
- 12. 防止返回页面按钮,Ionic2在特定条件下
- 13. jquery禁用特定时间的按钮
- 14. 不能禁用特定的Android设备上的主页按钮
- 15. 基于字段值更改页面加载时的按钮颜色
- 16. 启用/禁用基于输入字段的提交按钮(填充/未填充)
- 17. 基于PSD的文件的基于Web的油漆编辑器
- 18. SQL:基于条件的字段值?
- 19. 编辑用于Vista按钮的Javascript
- 20. 基于Web的json编辑器组件
- 21. 禁用按钮,除非特定字段有值
- 22. 防止经验编辑器在sitecore中编辑特定字段
- 23. 有两个条件的禁用按钮
- 24. 如何基于vba中的条件/文本更改来启用/禁用按钮?
- 25. 禁用XTraGrid上的“编辑过滤器”按钮
- 26. JavaFX Spinner禁用空编辑器上的按钮
- 27. 在选定的UITABLEVIEW单元上隐藏/禁用编辑按钮?
- 28. Odoo如何隐藏基于用户组的编辑按钮?
- 29. 如何禁用页面上的某些条件的按钮/链接php/html
- 30. 如何锁定基于Odoo10条件的编辑?
嗯 - 问题是,这是一个文本字段(sc:文本)的页面编辑器,我有三个不同的地方相同的文本字段。似乎只有最后一个文本字段的按钮被禁用,因为它们可能都是相同的命令。 – 2013-05-08 22:34:59
检查第二次编辑 - 这可能会帮助您 – Trayek 2013-05-09 10:28:32
检查最终编辑 - 这将修复隐藏在该类型的所有字段上的命令问题。 – Trayek 2013-05-09 16:55:09