2015-04-21 2 views
1

У меня есть элемент дерева Sitecore, в котором есть элементы bucket, поэтому к ним нельзя получить доступ с помощью обычного иерархического API.Итерация над элементами ковша Sitecore

Есть ли пример того, как программно перебирать элементы ведра в определенном ведре?

ответ

1

Есть ли какая-то конкретная причина, по которой вы пытаетесь перебрать элементы? Я думаю, вам будет лучше использовать поиск, чтобы найти предметы, которые вы ищете. Я рекомендую вам ознакомиться с документацией Sitecore для получения дополнительной информации: Developer's Guide to Item Buckets and Search

+0

есть причина, мне нужно, чтобы импортировать все элементы в ведре с другой системой на запланированное задание – lurscher

1

Основываясь на вашем ответе на Крейга Тейлора, я бы сказал, что вы должны выполнить поиск по индексу, чтобы получить все предметы из ковша, выполнить поиск и то вы можете просмотреть результаты.

Крейг указал на этот документ Developer's Guide to Item Buckets and Search, который должен быть полезен.

Строго говоря, ведра просто скрывают основную структуру дерева, и поиск работает так же, как и в другом месте Sitecore. Вы можете использовать индексы по умолчанию sitecore_web_index/sitecore_master_index или собственный индекс. Содержимое ковша будет включено до тех пор, пока оно находится в одном из указанных мест индекса.

Если вы не знакомы с поиском в Sitecore, эта статья является хорошим местом для начала: Sitecore 7 Search – Quick Start Guide

+0

вы знаете, где я могу найти пример индексирования элементов ковша? – lurscher

1
public List<T> GetAllItemsFromBucket(string bucketPath) 
    { 
     var index = ContentSearchManager.GetIndex("content_index"); 
     using (var context = index.CreateSearchContext()) 
     { 
      var results = context.GetQueryable<T>().Where(x => x.Path.StartsWith(bucketPath)).ToList(); 
      foreach (var result in results) _service.Map(result); 
      return results; 
     } 
    } 
1

Все в Sitecore рассматривается как элементы. Поэтому, даже если у вас есть сконфигурированные ведра предметов, и если вы пытаетесь получить доступ к программному обеспечению или перепрограммировать его, вы можете выполнить эту задачу обычным способом.

Если вы ищете объект в Ведрах товаров, то, возможно, вы можете использовать приведенный ниже код для поиска содержимого.

var itemBuckets= Sitecore.Context.Database.GetItem(bucketPath); 
    if (itemBuckets!= null && BucketManager.IsBucket(itemBuckets)) 
    {  
    using (var searchContext = ContentSearchManager.GetIndex(itemBuckets as IIndexable).CreateSearchContext()) 
    { 
     var result = searchContext.GetQueryable<SearchResultItem().Where(x => x.Name == itemName).FirstOrDefault(); 
     if(result != null) 
      Context.Item = result.GetItem(); 
    } 
    } 

заказ мой блог для получения полной информации о Configuring Sitecore Item Buckets

+1

Я пробовал это, и он не работает. Вы не можете наложить элемент на IIndexable. Было бы неплохо. –

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