我正在进行Sitecore 8.1安装。我试图使用droptree字段来允许内容编辑器从项目树中选择一个项目(数据模板A)。每个有效选择项都保证有一个或多个不同数据模板的子项(数据模板B)。根据文档,这应该是很容易做到:只需设置源到任何一个参数的数据源:Sitecore Droptree不会排除项目
Datasource=/sitecore/Media Library/Images/Folder&IncludeTemplatesForDisplay=Data Template A
或查询:
query:/sitecore/Media Library/Images/Folder/*[@@templatename='Data Template A']
出于某种原因,不过,本场似乎忽略路径以外的任何东西。它将显示树的正确部分,但显示所有项目(包括数据模板B的项目)并允许选择它们。我试过[Exclude|Include]TemplatesFor[Selection|Display]
的各种排列,其中没有一个证明有效。我也尝试使用[@@templatename!='Data Template B']
或两种方法与templateid
排除查询B.
我一直没能找到很多关于此的信息,除了偶尔模糊的引用droptree不尊重排除。常见的解决方案似乎是使用带有正则表达式验证的TreeList将其限制为一个选择。这种方法是适当的,但并不是真正的我喜欢的:TreeList UI对于单个选择有点奇怪,我宁愿只是不允许用户选择多个项目,而不是在他们抛出验证错误时做。
我还可以使用其他几个字段来排除排除事项但不显示树视图:再次,可用但不是想法,因为这里可能有很多项目,并且树视图为用户提供了有一些有用的上下文。
我或许可以编写一个模仿Droptree的新字段类型,但实际上尊重排除 - 而且我很固执,这可能是我采用的路线 - 但我想首先检查以确保我没有不要错过什么。所以这就是问题所在:任何人都知道在继续前写下我自己的方法之前,让Droptree能够对ExcludeTemplatesForSelection/Display或者通过查询进行过滤来实现的方式吗?
正在努力实现这一点,但是对于任何后续任何人都可以使用几个快速注释: 1.它还需要:https://github.com/sitecorerick/spark-sitecore-client/blob/master/Fields /FilterableDataTreeView.cs 2.我在使用语句中添加了'使用TreeNode = Sitecore.Web.UI.HtmlControls.TreeNode'。 –
现在可以确认这个工作。唯一的问题是你无法通过Sitecore Rocks访问树视图,但这对我来说只是一个烦恼,而不是内容编辑。 –