2014-03-31 43 views
1

的条件显示所以我相当新的Sitecore的,这是我的训练过程中没有涉及的话题。我的问题仅仅是为了帮助我指出正确的术语,或者是关于执行以下操作的方法的文档。Sitecore的字段

我有一个定义项,一吨领域群体,我想要做的是一样的东西:

如果字段X的值是“yes”,那么崩溃/隐藏字段X或字段组X.

这是否有意义?这是一个验证规则吗?或其他类型的规则,是否需要附加一个工作流程?你把它放在我想隐藏的领域,还是触发动作的领域?

我明白任何指导。

+1

你的意思是,当在内容编辑器界面?即项目上的模板部分? –

+0

是的,这是正确的。 – thematt

+1

听起来像你会想改变内容编辑器的工作方式,虽然这是可能的,但它不是真正的建议。这听起来像是你的数据太多了。 – IvanL

回答

0

不确定您是否遇到过Andy Uzick'sblog post

他明智地谈论了在内容编辑器中隐藏字段,并且还创建了一个名为Hide Field Template Extension的Sitecore模块,该模块托管在Sitecore Marketplace上,full source code用于扩展。

通读并尝试扩展后,我确实认为它不会完全解决您的问题(您如何在问题中描述它)。 但它会给你:

  1. 一个中期解决方案来隐藏一些内容编辑不喜欢观看一些不必要的字段。只能由管理员需要管理的目的
  2. 领域 - 脱杂波这些领域可能会被隐藏。

只要记住一点,它提到了要求Sitecore 6.5 & 6.6。我没有在Sitecore 7中进行测试。如果您使用Sitecore 7,我认为您可以修改源代码并使其适用于Sitecore 7.

查看并分享您的发现。

快乐Sitecoring!

+0

谢谢,这就像你说的是一个中期解决方案,但我有点同意,如果我甚至需要这个,那么也许我有太多的领域。我需要它的唯一原因是根据用户选择隐藏不需要的内容。 – thematt

+0

好吧,我承认你来自哪里。请你可以通过某种想法/屏幕截图来更新你的问题,我们所讨论的领域和领域有多少。有多少人想隐藏等等?让我们努力解决这个问题。 – Shriroop

1

Sitecore中没有任何东西可以实现您想要的功能,但没有理由不能创建组合自定义字段类型来执行此操作。下面的文章将帮助您实现这一目标:

创建一个新的控制,无论是从Droplist继承(如果该值的比较是基于文本)或Droplink (用于比较ID)。您可以在控件的Source字段中添加一个参数,以指定触发隐藏的值应该是什么。

内容编辑器中的底层控件只是一个标准的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如果你有兴趣。