我正在尝试使用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表上的信息。
答案 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获取所需信息?