所以我对sitecore很新,这是我培训期间未涉及的主题。我的问题只是为了帮助我指出正确的术语,或者有关如何执行以下操作的方法的文档。
我有一个定义项目,有大量的字段组,我想要做的是:
如果字段X的值为“是”,则折叠/隐藏字段X或字段组X.
这有意义吗?它是验证规则吗?或者其他一些规则,它是我需要附加的工作流程吗?您是将它放在我想隐藏的字段还是触发操作的字段上?
我感谢任何指导。
答案 0 :(得分:1)
Sitecore中没有任何开箱即用的功能可以实现您想要的功能,但没有理由您无法创建复合自定义字段类型来执行此操作。以下文章将帮助您实现这一目标:
创建一个新控件,从Droplist继承(如果值的比较是基于文本的)或Droplink(用于ID的比较)。您可以在控件的“源”字段中添加一个参数,以指定触发隐藏的值应该是什么。
内容编辑器中的基础控件只是标准的HTML select
元素。将onchange
事件添加到控件并添加Javascript处理程序以隐藏其他控件。由于我找不到向Sitecore控件添加其他自定义css类的方法,因此在控制之后隐藏同一可折叠组中的所有其他控件是最好/最简单的。这意味着您需要更好地(或至少逻辑地)对控件进行分组。
Javascript将是这样的(内容编辑器使用Prototype JS framework):
if ($(this).getValue() == 'no') {
// find the parent container of this control and then hide all the next siblings in the same group
$(this).up('.scEditorFieldMarker').nextSiblings('.scEditorFieldMarker').invoke('hide');
}
您可以通过在控制台中运行上述内容来测试此功能,并使用您的字段的ID更改关键字this
,例如$('FIELD2292054')
。
我不确定的是如何在初始加载时触发隐藏,即当某人返回现有项目时,可能可以添加到其中一个管道,但使用JS会更好解决方案如果可能我会考虑这个并在接下来的几天内获得正确的代码示例。
编辑:您可以向sc:contenteditorupdated
添加一个事件处理程序来处理正在重新加载的内容编辑器。
document.observe("sc:contenteditorupdated", myFunction);
如果您有兴趣,我写了blog post并放了code on GitHub。
答案 1 :(得分:0)
不确定您是否遇到Andy Uzick's此blog post。
他明智地谈到了在内容编辑器中隐藏字段,并且还创建了一个名为Hide Field Template Extension的Sitecore模块,该模块托管在Sitecore Marketplace上,并full source code进行扩展。
阅读并尝试扩展后,我觉得它不会完全解决您的问题(您在问题中如何描述它)。 但它会给你:
要记住的一件事是它在Sitecore 6.5&的要求中提到了6.6。我没有在Sitecore 7中测试它。如果您使用Sitecore 7,我认为您可以修改源代码并使其适用于Sitecore 7。
看看并分享您的发现。
快乐的Sitecoring!