2012-07-17 89 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