0

我有一个名为“所有食谱”的项目,其中包含名为 R1、R2 和 R3 的食谱。我有另一个名为“我的食谱”的项目,它有一个名为“食谱”的树列表字段,它包含从“所有食谱”项目中选择的值 R2 和 R3。我正在尝试编写的查询是针对 RSS Feed 的 Items 字段。

显示“我的食谱”的“食谱”字段中出现的“所有食谱”中的项目的查询语法是什么?

4

4 回答 4

1

这不能通过 Sitecore 查询来完成。相反,创建一个扩展Sitecore.Syndication.PublicFeed和覆盖的自定义提要类GetSourceItems()。这是一个例子:

public class MyCustomFeed : Sitecore.Syndication.PublicFeed
{
  public override IEnumerable<Sitecore.Data.Items.Item> GetSourceItems()
  {
    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    Item contentFolder = master.GetItem("/sitecore/content/Home/MyContentFolder");

    //Do your processing here to get your feed items

    //I'm just grabbing what's in the content folder, but it could be something complex.
    ChildList cl = contentFolder.GetChildren();

    return cl;
  }
}


在 RSS Feed 的 Type 字段中,在 Extensibility 部分下,输入自定义类的类路径和程序集:

Utility.SitecoreLibrary.RSS Folder.MyCustomFeed, Utility.SitecoreLibrary


将 RSS Feed 的 Items 字段留空,因为这个自定义类取代了它的位置。

于 2010-03-17T21:02:04.363 回答
0

如果您在 xslt 中编写此代码,您可以使用它sc:listfielditems('fieldname',$item)来获取树列表中项目的节点集,然后您可以使用for-each.

如果您在.net 中编写此内容,我不知道 - 但我认识一个这样做的人,我会按照他的方式发送。

于 2010-03-17T10:16:46.443 回答
0

你在使用 SQL Server 吗?Sitecore 食谱建议您执行以下操作:

MyItems = GetSomeItems("/home/whatever/allrecipes");
foreach(Item item in MyItems)
{
    if(item is in MyRecipes)
        do something
}

原因是对 /home/whatever/allrecipes 的查询由提供程序优化,而对 MyRecipes 的复杂查询检查成本更高。

参考

于 2010-03-17T19:57:39.480 回答
0

我无法对上面亚当的帖子发表评论,所以我将作为答案离开:没有名为的 Sitecore 函数/方法sc:listfielditems。你能仔细检查你的代码吗?

于 2010-11-22T19:58:44.587 回答