Как получить только компоненты из папки с помощью coreservices


1

У меня есть папка с подпапками и компонентами. Теперь я хочу получить только компоненты, которые используют указанную схему. Как я это делаю, используя основные службы.

6

попробовать что-то вроде этого:

using System.Xml.Linq; 
using Tridion.ContentManager.CoreService.Client;    

... 

      string folderUri = ""; 
      string schemaUri = ""; 

      OrganizationalItemItemsFilterData filter = new OrganizationalItemItemsFilterData(); 
      filter.ItemTypes = new ItemType[] { ItemType.Component }; 
      filter.ComponentTypes = new ComponentType[] { ComponentType.Normal }; 
      filter.Recursive = true; 

      XElement items = Client.GetListXml(folderUri, filter); 
      foreach (XElement item in items.Elements()) 
      { 
       ComponentData component = Client.Read(item.Attribute("ID").Value, null) as ComponentData; 

       if (component.Schema.IdRef.Equals(schemaUri)) 
       { 

        // Do something with components of specific schema 

       } 

      } 

переменная Клиент имеет тип SessionAwareCoreServiceClient. Вы можете найти более подробное описание кода выше на блоге http://codedweapon.com/2013/03/changing-components-schemas-with-core-service/

Нечто подобное уже задавала на пост Get all component from selected folder and subfolder based on Schema