使用Treelist值查询Sitecore项目

时间:2010-03-16 21:04:50

标签: rss sitecore treelist

我有一个名为All Recipes的项目,其中包含名为R1,R2和R3的食谱。我有另一个名为My Recipes的项目,它有一个名为Recipes的treelist字段,它包含All Recipes项目中的选定值R2和R3。我正在尝试编写的查询是针对RSS Feed的Items字段。

在My Recipes的Recipes字段中显示所有食谱中的项目的查询语法是什么?

4 个答案:

答案 0 :(得分:1)

使用Sitecore查询无法完成。而是创建一个扩展Sitecore.Syndication.PublicFeed并覆盖GetSourceItems()的自定义Feed类。这是一个例子:

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的“类型”字段中,在“扩展性”部分下,输入自定义类的类路径和程序集:

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


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

答案 1 :(得分:0)

如果您在xslt中编写此内容,则可以使用sc:listfielditems('fieldname',$item)获取树状列表中项目的节点集,然后您可以使用for-each进行迭代。

如果你在.net中写这篇文章,我不知道 - 但我认识一个人,但我会按照他的方式发送。

答案 2 :(得分: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的复杂查询会更加昂贵。

Reference

答案 3 :(得分:0)

我无法评论adam上面的帖子,所以我会留下答案:没有名为sc:listfielditems的Sitecore函数/方法。你能仔细检查你的代码吗?