如何在Ektron中选择属于分类的库项目

时间:2012-09-12 04:05:12

标签: c# asp.net ektron

我正在使用Ektron CMS版本8.5 SP2。

我在分类中有一些项目。有些是实际页面,有些是库项目(Word文件和PDF文档)。

假设我的分类中共有5个项目,共有3页和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()函数没有获取库项目,即使这些项目已添加到分类法中也是如此。我可以确认在管理工作区中,库项目在分类中可见。

为了澄清,这是检索已添加到分类中的项目的问题。

有没有人知道如何重新分类分类中的所有项目列表,包括其中的所有库项目。

注意:如果我将文件添加到Document Managment System而不是库中,它可以很好地工作。但是在实时系统中,我在库中有数百个项目,我希望有一种方法可以通过分类法查看它们,而无需将它们全部移动到DMS中。

我也在Ektron开发者论坛上发布了这个问题,但我没有回复。我希望这里有人可以提供帮助。

干杯。

3 个答案:

答案 0 :(得分:2)

我会查看TaxonomyItemManager而不是ContentManager。

答案 1 :(得分:2)

感谢@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”计数,我可以显示所有的主题:)

Ektron中有这么多“经理”课程。

答案 2 :(得分:2)

关于@ nedlud回答的前几天的评论后续跟进,我觉得这应该得到自己的回答。

根据Framework API docs

  

如果要检索已在分类中分类的CMS项目,请使用 TaxonomyItemManager

但正如评论中已经提到的,此API返回的TaxonomyItemData对象有许多空属性,例如QuickLinkHtml。我发现使用TaxonomyManager,可以成功查询分配给特定分类法类别的项目。

以下是使用Framework API的简短代码段(版本&gt; = 8.5);这让人联想到使用较旧的(版本<= 8.0)分类API,其中一个人会创建一个TaxonomyRequest并获得一个对象结构,不仅包含了分类学自身,而且还包含了分类到该分类中的项目: / p>

//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版并转换为Framework API。在Ektron使用null属性修复TaxonomyItemManager返回TaxonomyItemData的(bug?)之前,我将使用上述方法+ LINQ进行排序/过滤/等。