Sitecore Droptree 不会排除项目

Sitecore Droptree won't exclude items

我正在安装 Sitecore 8.1。我正在尝试使用 droptree 字段允许内容编辑器从项目树中选择一个项目(数据模板 A)。每个有效的 selection 项都保证具有不同数据模板(数据模板 B)的一个或多个子项。根据文档,这应该很容易做到:只需将源设置为参数化数据源:

Datasource=/sitecore/Media Library/Images/Folder&IncludeTemplatesForDisplay=Data Template A

或查询:

query:/sitecore/Media Library/Images/Folder/*[@@templatename='Data Template A']

但是,出于某种原因,该字段似乎忽略了路径之外的任何内容。它将显示树的正确部分,但会显示所有项目(包括数据模板 B 的项目)并允许对它们进行 selected。我已经尝试了 [Exclude|Include]TemplatesFor[Selection|Display]、none 的各种排列,其中已被证明是有效的。我还尝试使用 [@@templatename!='Data Template B'] 或使用 templateid.

的两种方法从查询中排除 B

除了偶尔模糊地提及 droptree 不支持排除之外,我找不到很多关于此的信息。常见的解决方案似乎是使用带有正则表达式验证的 TreeList 将其限制为一个 selection。这种方法是足够的,但不是我真正喜欢的:TreeList UI 对于单个 selection 有点奇怪,我宁愿不允许用户 select 多个项目,而不是在他们这样做时抛出验证错误。

还有一些我可以使用的其他字段,它们支持排除但不显示树视图:同样,有用但不是想法,因为这里可能有很多项目,树视图提供了具有一些有用上下文的用户。

我可能会写一个新的字段类型来模仿 Droptree 但实际上尊重排除——我很固执,这可能是我采取的路线——但我想先检查一下以确保我不只是错过了什么。这就是问题所在:在我继续编写自己的代码之前,有人知道一种方法可以使 Droptree 成为荣誉 ExcludeTemplatesForSelection/Display 或通过查询进行过滤吗?

Sitecore DropTree 字段不支持 IncludeTemplatesForSelectionIncludeTemplatesForDisplay 参数。

它们仅适用于 TreelistTreelistExMulitlist 字段。

您可以使用 FilteredTree 由 Richard Cabral 创建的字段类型。

您可以从 git 此处找到它:Filtered Tree by Richard Cabral at github