2012-07-17 95 views

回答

4

我知道的唯一方法是使用搜索功能:

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); 
+0

顯然,我完全誤解了這個問題。我很驚訝任何人都希望在一本出版物中列出所有本地化項目。但事實上,如果是這樣的話,尋找像你這樣的項目是一個很好的解決方案。 – 2012-07-17 12:01:05

+0

感謝您的建議。我如何鏈接上述代碼獲取出版物的組件 – user1523958 2012-07-18 11:14:26

+0

@ user1523958只需添加'searchQuery.ItemTypes = new [] {ItemType.Component};'或'BasedOnSchema'搜索參數 – 2012-07-18 13:00:27

9

我會用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)); 
+0

此代碼將查找給定項目的所有本地副本,但問題是'一個publication'的本地化項目,因此從被本地化 – 2012-07-17 11:25:56

+0

我不怪阿爾揚誤解了問題的一個發佈的所有項目的清單。我肯定給了他一個使用這個很酷的API的投票權。 :-) – 2012-07-17 11:41:37

+0

@ user978511,你是對的我已經添加了一個例子。 – 2012-07-17 11:55:11