8

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

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

到目前为止,我所做的和使用的工作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 方面,我也可以看到分类表上的信息。

4

2 回答 2

3

我在玩 Odata 服务时,偶然发现我可以从 Odata Web 服务中获取我所有的结构组信息。

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

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

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

于 2012-09-22T13:20:18.780 回答
0

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

根据文档,当您发布结构组信息时,结构组层次结构将发布到内容交付端,并在其中存储为分类

您是否尝试过使用分类 API 来获取您需要的信息?

于 2012-09-11T11:31:31.383 回答