我有一个名为All Recipes的项目,其中包含名为R1,R2和R3的食谱。我有另一个名为My Recipes的项目,它有一个名为Recipes的treelist字段,它包含All Recipes项目中的选定值R2和R3。我正在尝试编写的查询是针对RSS Feed的Items字段。
在My Recipes的Recipes字段中显示所有食谱中的项目的查询语法是什么?
答案 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的复杂查询会更加昂贵。
答案 3 :(得分:0)
我无法评论adam上面的帖子,所以我会留下答案:没有名为sc:listfielditems
的Sitecore函数/方法。你能仔细检查你的代码吗?