Как получить категории из Tridion, используя данные категорий

Я искал способ получить все категории из Tridion с помощью данных о категориях. Я пытался, как показано ниже, но показывал ошибку.

CoreServiceSession client = new CoreServiceSession();
SessionAwareCoreServiceClient csClient = client.GetClient();
ReadOptions readoption = new ReadOptions();

CategoriesFilterData filter = new CategoriesFilterData();
XElement xml = csClient.GetSystemWideList(filter);

person SDLBeginner    schedule 23.08.2012    source источник
comment
Я заметил в этом и предыдущих примерах кода, что вы создаете объект CoreServiceSession. Просто из любопытства: что это за класс и откуда он взялся? Вы, кажется, не используете его.   -  person Frank van Puffelen    schedule 23.08.2012


Ответы (1)


Вам нужно использовать GetListXml вместо GetSystemWideList и указать идентификатор публикации, из которой вы хотите получить категории:

CategoriesFilterData filterData = new CategoriesFilterData();
XElement resultXml = client.GetListXml(publicationId, filterData);

GetSystemWideList обычно предназначен для получения информации, которая является общесистемной и не привязана только к одной публикации, например PublicationTargets и MultimediaTypes.

Однако вы также можете попробовать поисковый запрос, например:

SearchQueryData filter = new SearchQueryData(); 
filter.ItemTypes = new ItemType[] { ItemType.Category }; 

IdentifiableObjectData[] results = client.GetSearchResults(filter);
foreach (IdentifiableObjectData obj in results)
{
    Console.WriteLine(String.Format("{0} - {1}", obj.Title, obj.Id));
}
person Reinder Wit    schedule 23.08.2012
comment
Спасибо, Рейндер, но что, если мне нужно получить все категории из tridion, а не из конкретной публикации. - person SDLBeginner; 23.08.2012
comment
Ах хорошо. вы можете попробовать использовать SearchQueryData и выполнить поиск в tridion. - person Reinder Wit; 23.08.2012
comment
вот так: SearchQueryData filter = new SearchQueryData(); filter.ItemTypes = новый ItemType[] { ItemType.Category}; filter.BaseColumns = ListBaseColumns.Extended; ИдентифицируемыеОбъектДанные[] результаты = client.GetSearchResults(фильтр); - person Reinder Wit; 23.08.2012