TridionコアサービスでGetListUsingItemsアプローチを使用して、ブループリントアイテムのすべての子を取得したいと思います。コアサービスでは、TOMの古い方法とは異なる結果(より多く)が返されます。コンポーネントリンクを介してソースコンポーネントを参照している他のコンポーネントも取得しているようです。コアサービスにフィルターオプションがありませんか?
Tridion 5.3:
Function GetLocalizedItemNodes(itemUri)
Dim tridionItem : set tridionItem = tdse.GetObject(itemUri,1)
Dim rowFilter : set rowFilter = tdse.CreateListRowFilter()
call rowFilter.SetCondition("ItemType", GetItemType(itemUri))
call rowFilter.SetCondition("InclLocalCopies", true)
Dim usingItemsXml : usingItemsXml = tridionItem.Info.GetListUsingItems(1919, rowFilter)
Dim domDoc : set domDoc = GetNewDOMDocument()
domDoc.LoadXml(usingItemsXml)
Dim nodeList : set nodeList = domDoc.SelectNodes("/tcm:ListUsingItems/tcm:Item[@CommentToken='LocalCopy']")
set tridionItem = nothing
set domDoc = nothing
set GetLocalizedItemNodes = nodeList
End Function
Tridion 2011 SP1コアサービス:
private XElement GetLocalizedItems(string itemUri)
{
XElement usingXML = null;
try
{
CoreServiceClient client = new CoreServiceClient();
client.ClientCredentials.Windows.ClientCredential.UserName = ConfigurationManager.AppSettings["impersonationUser"].ToString(); // "administrator";
client.ClientCredentials.Windows.ClientCredential.Password = ConfigurationManager.AppSettings["impersonationPassword"].ToString();
client.ClientCredentials.Windows.ClientCredential.Domain = ConfigurationManager.AppSettings["impersonationDomain"].ToString();
// original code from http://www.tridiondeveloper.com/getting-used-items-using-the-core-service
// Create a filter
UsingItemsFilterData usingItemsFilterData = new UsingItemsFilterData
{
BaseColumns = ListBaseColumns.IdAndTitle, // to specify the detail in the XML
IncludeLocalCopies = true,
ItemTypes = new[] { ItemType.Component }
};
// Get the XML by calling .GetListXml on the client (assumes you have a 'client' object already)
usingXML = client.GetListXml(itemUri, usingItemsFilterData);
}
catch (Exception ex)
{
throw;
}
return usingXML;
}