3

本页描述了如何检索项目、(直接)子项目以及Sitecore9使用RESTful API(通过PostMan)进行搜索。

它似乎没有说明如何组合这些查询。

我想搜索由children指定itempath。所以,目前,我有这个返回一个项目:

GET https://{{sitecorehost}}/sitecore/api/ssc/aggregate/content/Items('{{sitecorehome}}/banners-tests')?sc_apikey={{sitecore-master-apikey}}

我也有这个返回该项目的子项目:

GET https://{{sitecorehost}}/sitecore/api/ssc/aggregate/content/Items('{{sitecorehome}}/banners-tests/Subcontent/Image and Texts')/Children?sc_apikey={{sitecore-master-apikey}}

然而,因为孩子们不是直系孩子——他们比他们低两层/Subcontent/Image and Texts——我不能要求他们。是的,我可以搜索它们,但是任何项目都会返回匹配条件,我只想搜索该特定路径下的项目。

我想要一些我想看起来像这样的东西:

GET https://{{sitecorehost}}/sitecore/api/ssc/aggregate/content/Items?sc_apikey={{sitecore-master-apikey}}&$filter=Name eq 'banner' and Path eq 'banners-tests'

或者也许是这样:

GET https://{{sitecorehost}}/sitecore/api/ssc/aggregate/content/Items('{{sitecorehome}}/banners-tests')/Children?sc_apikey={{sitecore-master-apikey}}&$filter=Name eq 'banner'

但这些都行不通。

4

1 回答 1

1

@Matt我们可以根据项目路径进行过滤。例如,将项目路径视为:

  • 'sitecore/content/home/tenant1/Subcontent/Image and Texts/neededitem' - 需要的

  • 'sitecore/content/home/tenant1/Subcontent/Image and Texts/item1/neededitem/notneededitem' - 我们需要排除的那个

因为“/”不是 Sitecore 项目名称中的有效字符,它表示所需项目的子项。因此,它可以用作 javascript 中的过滤器。所以我们可以通过“图像和文本”进行拆分,然后找到项目。例如,考虑一个结果数组,让我们说具有项目集合的对象是项目,每个项目的项目路径由 Path 表示(假设这也可以是其他一些属性)属性

let items = [{
  Path: 'sitecore/content/home/tenant1/Subcontent/Image and Texts/neededitem',
  anotherProperty: 'text-val1'
}, {
  Path: 'sitecore/content/home/tenant1/Subcontent/Image and Texts/item1/neededitem/notneededitem',
  anotherProperty: 'text-val2'
}];
const results = items.filter(item => {
  const splittedPath = item.Path.split('Image and Texts');
  if (splittedPath[1].split("/").length <= 2) {
    return item;
  }
});
console.log(results);

如果您的 SSC 控制器 (C#) 是自定义控制器并且可以访问 Sitecore Context 对象或 Sitecore API,则 Item 类的 GetChildren() 方法将只带入第一级的子级。我希望这有帮助。

于 2020-01-11T20:24:29.273 回答