使用Content Delivery / Broker API的StructureGroup详细信息

时间:2012-08-30 17:32:38

标签: tridion tridion-2011

我正在尝试使用PublicationID获取在给定出版物中发布的所有结构组。我希望通过传递根结构组TCM ID但获取页面ID(我期待SG)来获取StructureGroupCriteria的结构组。

现在我正在尝试遍历列表并获取每个结构组的详细信息。我没有找到任何API(.net)来获取这些详细信息,API也只返回Pages。

到目前为止我使用StructureGroupCriteria完成的工作,返回页面ID而非SG ID列表

  PublicationCriteria pubCriteria = new PublicationCriteria(pubID);
  // Root StructureGroup TCM ID -- tcm:45-3-4
  StructureGroupCriteria sgCriteria = new StructureGroupCriteria("tcm:45-3-4", true); 
  Criteria allSGsInPub = CriteriaFactory.And(pubCriteria, sgCriteria);
  Query allSGs = new Query(allSGsInPub);
  string[] sgInfo = allSGs.ExecuteQuery();
  Response.Write("Total : " + sgInfo.Length);
  foreach (string sgid in sgInfo ) {
    // HOW DO I get the Structure Group Details here
     //TCMURI sgURI = new TCMURI(sgid);
  }

Q#1 :如何获取所有结构组和单个结构组详细信息? (可能很简单,我无法找到合适的API)。

Q#2 :如何使用ItemTypeCriteria sgCriteria = new ItemTypeCriteria(4); // 4 is SG Item Type获取所有结构组。

当我尝试此选项时,查询成功运行但未返回任何结果。这是预期的行为吗?我们应该始终使用StructureGroupCriteria代替ItemTypeCriteria吗?

这种方法的原因,我想避免使用上述代码所需的Root StructureGroup ID。但目前,没有一种方法返回StructureGroup信息,我总是得到页面信息。

Tridion版本:2011 SP1,.net API。

注意:当我发布时,我正在检查发布SG信息复选框并成功发布。在Broker DB方面,我也可以看到taxnonomy表上的信息。

2 个答案:

答案 0 :(得分:3)

我正在玩Odata服务,不小心我发现我可以从Odata网络服务获取所有结构组信息。

/cd_webservice/odata.svc/StructureGroups?$filter=PublicationId%20eq%2045

此外,结果是返回具有depth参数的子结构组。

只是澄清一下,使用Broker API获取结构组是不可行的(我原来的问题)。但是,解决方法是使用OData Service来获取结构组。

答案 1 :(得分:0)

我认为您不会获得Query对象返回的结构组。

根据文档,当您发布结构组信息时,结构组层次结构将发布到Content Delivery端,并将其存储为分类

您是否尝试过使用Taxonomy API获取所需信息?