Получить список локализованных элементов

Мне нужно получить список локализованных элементов публикации программно, используя coreservice в tridion. Может ли кто-нибудь предложить мне.


person user1523958    schedule 17.07.2012    source источник


Ответы (2)


Единственный способ, который я знаю, - использовать функцию поиска:

var searchQuery = new SearchQueryData();
searchQuery.BlueprintStatus = SearchBlueprintStatus.Localized;
searchQuery.FromRepository = new LinkToRepositoryData{IdRef = "tcm:0-5-1"};
var resultXml = ClientAdmin.GetSearchResultsXml(searchQuery);
var result = ClientAdmin.GetSearchResults(searchQuery);
person Andrey Marchuk    schedule 17.07.2012
comment
Видимо, я совершенно неправильно понял вопрос. Я удивлен, что кому-то нужен список всех локализованных элементов в одной публикации. Но действительно, если это так, поиск предметов, как вы предложили, является хорошим решением. - person Arjen Stobbe; 17.07.2012
comment
Спасибо за ваше предложение. Как я могу связать приведенный выше код для получения компонентов публикации? - person user1523958; 18.07.2012
comment
@user1523958 user1523958 Просто добавьте параметр поиска searchQuery.ItemTypes = new[] {ItemType.Component}; или BasedOnSchema - person Andrey Marchuk; 18.07.2012

Я бы использовал метод GetListXml и указал объект фильтра BluePrintChainFilterData.

var subjectId = "[TCM Uri of your item]";
var filter = new BluePrintChainFilterData
                 {
                     Direction = BluePrintChainDirection.Down
                 };

var subjectBluePrintChainList = coreServiceClient.GetListXml(subjectId, filter);

Затем вам все еще нужно проверить локализованные элементы из полученного списка.

Этого не было в моем первоначальном ответе, и, вероятно, он не является полным, потому что я не принимаю во внимание пространства имен, но следующее будет работать для выбора локализованных (не общих) элементов.

var localizedItems = subjectBluePrintChainList.Elements("Item")
    .Where(element => "false".Equals(element.Attribute("IsShared").Value, StringComparison.OrdinalIgnoreCase));
person Arjen Stobbe    schedule 17.07.2012
comment
Этот код найдет все локальные копии данного элемента, но вопрос list of localized items of a publication, поэтому все элементы из одной публикации, которые локализованы - person Andrey Marchuk; 17.07.2012
comment
Я не виню Арьяна за непонимание вопроса. И я определенно дал ему голос за использование этого классного API. :-) - person Frank van Puffelen; 17.07.2012