2

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

    • 产品
      • AE
        • 样品产品 A
        • B 样品产品 B
      • 缩略词
      • KO
        • L 样品产品 L
      • PT
      • 乌兹别克斯坦

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

4

3 回答 3

1

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

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

在您的情况下,您可以设置IncludeTemplatesForDisplayProducts 项目的模板,然后是 AE 等项目,以及实际的 Products 模板。如果您随后选择IncludeTemplatesForSelection,则可以确保内容编辑器仍然只能选择实际的产品项目。

其他参数是ExcludeTemplatesForSelectionDatabaseNameExcludeTemplatesForDisplayIncludeItemsForDisplay和。ExcludeItemsForDisplayAllowMultipleSelection

请记住,不允许在选中复选框的情况下进行选择,但您可以考虑基于字段创建自定义字段TreeList,该字段具有检查字段是否已设置的附加属性Active

于 2013-04-26T08:46:22.640 回答
1

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

不过,并非所有字段类型都支持 Sitecore 查询,因此您需要使用支持的字段类型(Multilist)。或者,您可以实现与 query 一起使用的自定义 TreeList 字段类型

于 2013-04-25T23:40:43.390 回答
0

我不确定是否有一种开箱即用的方法将树列表(或任何基于列表的字段)的数据源设置为一组项目并按其字段的值进行过滤。

换个角度想想怎么样。

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

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

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

于 2013-05-01T00:17:14.770 回答