【问题标题】:How to filter items that display in a Sitecore Treelist?如何过滤显示在 Sitecore 树列表中的项目?
【发布时间】:2013-04-25 18:42:38
【问题描述】:

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

  • 首页
    • 产品
      • A-E
        • 产品样品A
        • B 样品产品 B
      • F-J
      • K-O
        • L 样品产品 L
      • P-T
      • U-Z

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

【问题讨论】:

    标签: sitecore sitecore6


    【解决方案1】:

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

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

    【讨论】:

    • 我查看了您包含的支持 Sitecore 查询的自定义 TreeList 的链接。通过查看链接中的代码,它支持使用 Sitecore Query 将源设置为特定的单个内容节点。这不正是我想要做的。我想要做的是将 TreeList 的源设置为特定节点的所有子节点,并从列表中排除某些内容项。我不认为我完全理解如何做到这一点。
    • 我还没有实现这个,但是从我读到的,一旦你创建了自定义字段类型,你应该能够使用任何查询作为数据源。您的查询将确定哪些项目出现在您的列表中(例如 query:/[path_to_your_source_item]//*[@your_field_name= 'somevalue']
    【解决方案2】:

    您还可以使用属性IncludeTemplatesForDisplayIncludeTemplatesForSelection 来保持您的TreeList 字段干净。

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

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

    其他参数有ExcludeTemplatesForSelectionDatabaseNameExcludeTemplatesForDisplayIncludeItemsForDisplayExcludeItemsForDisplayAllowMultipleSelection

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

    【讨论】:

      【解决方案3】:

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

      换个角度想想怎么样。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        • 2014-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多