我使用的CMS晔版8.5 SP2。
我有一个分类的一些项目。 有些是实际的网页,有些是库项目(如Word文件和PDF文档)。
比方说,有3页,共在我的分类5个项目2个库项目。
我使用下面的代码...
ContentManager cManager = new Ektron.Cms.Framework.Content.ContentManager();
Ektron.Cms.Content.ContentTaxonomyCriteria ctCriteria = new Ektron.Cms.Content.ContentTaxonomyCriteria();
ctCriteria.AddFilter(1707, true); // hard coded taxonomy ID
List<ContentData> list = cManager.GetList(ctCriteria);
Label1.Text = list.Count.ToString();
运行此代码时,项目的列表中的计数为3。如果我输出的实际列表,我可以看到它的只有在分类页面,而不是2个库项目。
看来,ContentManager.getList()函数没有得到库中的项目,即使这些项目已被添加到分类。 我可以证实,在管理工作区,图书馆项目在分类学可见。
为了澄清,这是与检索已经被添加到该分类项的问题。
有谁知道我可以在分类retirieve 所有物品的清单,其中包括有任何库项目。
注:如果我将文件添加到文件系统枭雄,而不是图书馆,它完美的作品。 但是,在直播系统,我有数百个库中的项目,我希望那里有的方式通过分类进行查看,而无需将它们都移动到DMS。
我已经张贴在晔开发商论坛这个问题为好,但我已经没有回答。 我希望有人在这里可以提供帮助。
干杯。
的后续行动从@ nedlud的答案有一天我的意见,我觉得这虽然值得自己的答案。
根据该框架API文档 :
如果意图是检索已在分类法被归类CMS项目,使用TaxonomyItemManager。
但由于已经注意到,在评论中, TaxonomyItemData
通过这个API返回的对象有很多空的特性如QuickLink
和Html
。 我发现,使用TaxonomyManager
,一个可以成功查询分配给特定分类类别的商品。
下面是一个使用框架的API的简短片断(版本> = 8.5); 这种感觉让人想起与旧的工作的(版本<= 8.0)分类学API,其中一个将创建一个TaxonomyRequest
和获取封装不仅分类法iteself,但分类成分类项目的对象结构回:
//e.g. for a single-level taxonomy
long taxRoot = 1707; //from OP's question
TaxonomyManager taxManager = new TaxonomyManager();
//GetTree overload supplying includeItems parameter
TaxonomyData taxTree = taxManager.GetTree(taxRoot, includeItems: true);
foreach(TaxonomyItemData taxItem in taxTree.TaxonomyItems)
{
//these should print true
Response.Write(!String.IsNullOrEmpty(taxItem.QuickLink));
Response.Write(!String.IsNullOrEmpty(taxItem.Html));
}
我目前正在重构了一些8.0版代码到8.6版本,并转换为框架API。 直到晔固定的(错误?) TaxonomyItemManager
返回TaxonomyItemData
具有空性能,我将使用上述方法+ LINQ
用于排序/过滤/等。
我会看着TaxonomyItemManager而非ContentManager。
由于@maddoxej使用TaxonomyItemManager,我有工作的解决方案代码的建议...
TaxonomyItemCriteria criteria = new TaxonomyItemCriteria();
criteria.AddFilter(TaxonomyItemProperty.TaxonomyId, CriteriaFilterOperator.EqualTo, 1707);
TaxonomyItemManager taxonomyItemManager = new TaxonomyItemManager();
List<TaxonomyItemData> taxonomyItemList = taxonomyItemManager.GetList(criteria);
Label1.Text = taxonomyItemList.Count.ToString();
现在该代码显示的“5”预计计,我可以显示所有itmes :)
这么多的“经理”班班晔。