2010-03-16 3 views
0

У меня есть элемент с именем All Recipes, который содержит рецепты с именем R1, R2 и R3. У меня есть другой элемент с именем My Recipes, в котором есть поле treelist с именем Recipes, и оно содержит выбранные значения R2 и R3 из элемента All Recipes. Запрос, который я пытаюсь написать, относится к полю Items в RSS-канале.

Что такое синтаксис запроса для отображения элементов во всех рецептах, которые появляются в поле «Рецепты» «Мои рецепты»?Использование значений Treelist для запроса Sitecore Item

ответ

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 фида, в разделе расширяемости, введите путь класса и сборки для пользовательского класса:

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


Оставьте поле Items RSS Feed пустым, поскольку этот пользовательский класс займет свое место.

0

Если вы пишете это в xslt, вы можете использовать sc:listfielditems('fieldname',$item), чтобы получить набор узлов из списка, который вы можете перебрать с помощью for-each.

Если вы пишете это в .net, я не знаю, но я знаю парня, который это делает, и я пошлю ему свой путь.

+0

Я действительно ищу запрос, который я могу поместить в поле «Элементы» RSS-канала. Что-то в форме «query:/sitecore/content/home/* [QUERY TO Get ITEMS FROM TREELIST HERE]». –

0

Используете ли вы SQL Server? В поваренном Sitecore советует вам сделать что-то вроде этого:

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

Полагает, что запрашивая/дома/любой/Allrecipes оптимизирован провайдером, в то время как сложный запрос проверки MyRecipes будет более дорогостоящим.

Reference.

0

Я не могу комментировать сообщение Адама выше, поэтому я оставлю в качестве ответа: нет функции/метода Sitecore с именем sc:listfielditems. Можете ли вы дважды проверить свой код?

 Смежные вопросы

  • Нет связанных вопросов^_^