我在Sitecore中有以下内容结构:
此外,每个产品都有一个名为“Active”的复选框字段。我希望有一个让用户选择一个或多个产品的Treelist - 但是只允许他们选择选中Active复选框的产品。这可能吗?
答案 0 :(得分:1)
听起来您可以使用Sitecore查询实现所需。查看documentation了解确切的语法规则。
并非所有字段类型都支持Sitecore查询,因此您需要使用(Multilist)字段类型。或者您可以实施custom TreeList field type that works with query。
答案 1 :(得分:1)
您还可以使用属性IncludeTemplatesForDisplay
或IncludeTemplatesForSelection
来保持TreeList字段清洁。
IncludeTemplatesForDisplay
确保只有那些模板会显示在TreeList中
IncludeTemplatesForSelection
允许您定义可在TreeList字段中实际选择的模板。
在您的情况下,您可以设置IncludeTemplatesForDisplay
产品项目的模板,然后设置A-E等项目,以及实际的产品模板。如果您然后选择IncludeTemplatesForSelection
,则可以确保内容编辑者仍然只能选择实际的产品项目。
其他参数包括ExcludeTemplatesForSelection
,DatabaseName
,ExcludeTemplatesForDisplay
,IncludeItemsForDisplay
,ExcludeItemsForDisplay
和AllowMultipleSelection
。
请注意,不允许选中勾选复选框的选项,但您可以考虑根据TreeList
字段创建自定义字段,该字段具有检查{{1}的附加属性}字段已设置。
答案 2 :(得分:0)
我不确定是否有开箱即用的方法可以将treelist(或任何基于列表的字段)的数据源设置为一组Items并按其字段值进行过滤。 / p>
如何以不同的方式思考它。
如果您在树的其他位置拥有树的产品部分的镜像,但是,您只拥有活动的产品,而不是拥有此镜像部分中的所有产品。此镜像部分中的项目将具有一个drop-link字段,该字段映射到树的原始部分中的原始产品。要使此列表保持最新,您可以在保存原始产品时使用自定义操作。保存产品时,如果选中“活动”复选框,则在树的“镜像产品”部分中创建镜像产品类型的项目(例如),并将drop-link设置为原始产品。保存产品时,如果未选中“活动”复选框,请找到映射到此产品的镜像产品并将其删除。
最后,树形图的数据源将是树的这些镜像产品部分的根,而不是原始产品本身。这样,您的树形图的选项将始终只有映射到已选中“活动”复选框的产品的项目。
要记住的一件事是:当您删除镜像产品时,如果它被树形图片引用,则该引用将保留;在尝试使用treelist项目之前,您需要让代码检查null。