Deseo obtener todos los elementos hijos de un elemento Blueprint utilizando el enfoque GetListUsingItems con el servicio Tridion Core. Obtengo resultados diferentes (más) con el Servicio principal que con la forma antigua en TOM. Parece que también recibo otros Componentes que hacen referencia a mi Componente fuente a través de un Enlace de componente. ¿Me falta una opción de filtro en el Servicio principal?GetListUsingItems con Tridion Core Service devuelve más elementos que 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 Servicio básico:
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;
}
Hola Robert. No debería afectar la cantidad de Componentes que está recibiendo (ya que su elemento de origen es un Componente), pero podría valer la pena señalar que su código R5.3 establece un filtro de fila 'Tipo de elemento' (lo que significa que solo obtendrá Componentes) de vuelta) pero su código de servicio central no. Esto puede afectar su número total de resultados, pero no la cantidad de Componentes (como usted describe). –
Agregué la condición ItemTypes pero todavía obtengo los componentes y los elementos relacionados también. ¿Alguna otra idea? – robrtc