如何过滤Sitecore Treelist中显示的项目?

时间:2013-04-25 18:42:39

标签: sitecore sitecore6

我在Sitecore中有以下内容结构:

  • 主页
    • 产品
      • A-E
        • 样本产品A
        • B样本产品B
      • F-Ĵ
      • K-Ò
        • L样品L
      • 对叔
      • ù-Z

此外,每个产品都有一个名为“Active”的复选框字段。我希望有一个让用户选择一个或多个产品的Treelist - 但是只允许他们选择选中Active复选框的产品。这可能吗?

3 个答案:

答案 0 :(得分:1)

听起来您可以使用Sitecore查询实现所需。查看documentation了解确切的语法规则。

并非所有字段类型都支持Sitecore查询,因​​此您需要使用(Multilist)字段类型。或者您可以实施custom TreeList field type that works with query

答案 1 :(得分:1)

您还可以使用属性IncludeTemplatesForDisplayIncludeTemplatesForSelection来保持TreeList字段清洁。

IncludeTemplatesForDisplay确保只有那些模板会显示在TreeList中 IncludeTemplatesForSelection允许您定义可在TreeList字段中实际选择的模板。

在您的情况下,您可以设置IncludeTemplatesForDisplay产品项目的模板,然后设置A-E等项目,以及实际的产品模板。如果您然后选择IncludeTemplatesForSelection,则可以确保内容编辑者仍然只能选择实际的产品项目。

其他参数包括ExcludeTemplatesForSelectionDatabaseNameExcludeTemplatesForDisplayIncludeItemsForDisplayExcludeItemsForDisplayAllowMultipleSelection

请注意,不允许选中勾选复选框的选项,但您可以考虑根据TreeList字段创建自定义字段,该字段具有检查{{1}的附加属性}字段已设置。

答案 2 :(得分:0)

我不确定是否有开箱即用的方法可以将treelist(或任何基于列表的字段)的数据源设置为一组Items并按其字段值进行过滤。 / p>

如何以不同的方式思考它。

如果您在树的其他位置拥有树的产品部分的镜像,但是,您只拥有活动的产品,而不是拥有此镜像部分中的所有产品。此镜像部分中的项目将具有一个drop-link字段,该字段映射到树的原始部分中的原始产品。要使此列表保持最新,您可以在保存原始产品时使用自定义操作。保存产品时,如果选中“活动”复选框,则在树的“镜像产品”部分中创建镜像产品类型的项目(例如),并将drop-link设置为原始产品。保存产品时,如果未选中“活动”复选框,请找到映射到此产品的镜像产品并将其删除。

最后,树形图的数据源将是树的这些镜像产品部分的根,而不是原始产品本身。这样,您的树形图的选项将始终只有映射到已选中“活动”复选框的产品的项目。

要记住的一件事是:当您删除镜像产品时,如果它被树形图片引用,则该引用将保留;在尝试使用treelist项目之前,您需要让代码检查null。