在 Sitecore 中使用 QueryBuilder 字段类型限制 Bucket Search

Limiting Bucket Search using QueryBuilder field type in Sitecore

在我们的 Sitecore 应用程序中,我们有一个名为 NewsArticleSlide 的模板,它在轮播幻灯片上呈现新闻文章。此模板有一个名为 "News article" 的字段,其中包含正在呈现的新闻文章的 ID。到目前为止,此字段的类型一直是 droplink,这非常适合 select 从树中提取单个项目,并指定该树的根应该是什么。

现在我们决定将所有新闻文章包含在一个名为 "News" 的存储桶中。问题是我们现在不能使用 droplink 到 select 存储桶中的项目,并且不存在 "droplink with search" 字段类型。

QueryBuilder 似乎是最合适的,因为它使我们能够 select 存储桶中的单个项目。但是,当我们最初 运行 搜索时,Sitecore 中的所有内容都是 returned,然后我们必须按模板过滤以仅查看新闻文章。

我们想要做的是通过指定搜索的起点来预过滤搜索,并将搜索限制为特定模板的 return 项。我们假设我们可以使用模板字段源中的参数来做到这一点,但没有成功。

有谁知道我们该怎么做? QueryBuilder 是正确的方法吗?

您可以通过将 Droplink 字段更改为 Multilist with Search 字段来完成此操作。 Here's a blog post 显示用于限制存储桶列表中的值的选项。

这里的一个关键是这个字段类型是一个多 select 字段,但您可能只想将它用于 select 一篇新闻文章。您可以使用 RegEx 来强制只有一个 selection:

  1. 在树中找到代表字段的项目(在模板项目下方的字段部分项目下方)
  2. 查看功能区
  3. 上打开标准字段
  4. Validation 字段中输入此正则表达式:^(\{[^}]+\}\|?){0,1}$
  5. Validation Text 字段中输入消息,例如"您最多只能select 1 项。"

这将允许您使用 Multilist with Search 字段来 select 存储桶中的单个项目。