如何选择属于在一个晔分类库项目(How to select library items that b

2019-09-22 07:34发布

我使用的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。

我已经张贴在晔开发商论坛这个问题为好,但我已经没有回答。 我希望有人在这里可以提供帮助。

干杯。

Answer 1:

的后续行动从@ nedlud的答案有一天我的意见,我觉得这虽然值得自己的答案。

根据该框架API文档 :

如果意图是检索已在分类法被归类CMS项目,使用TaxonomyItemManager。

但由于已经注意到,在评论中, TaxonomyItemData通过这个API返回的对象有很多空的特性如QuickLinkHtml 。 我发现,使用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用于排序/过滤/等。



Answer 2:

我会看着TaxonomyItemManager而非ContentManager。



Answer 3:

由于@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 :)

这么多的“经理”班班晔。



文章来源: How to select library items that belong to a taxonomy in Ektron