4

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

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

假设我的分类中有 3 页和 2 个库项目,总共 5 个项目。

我使用以下代码...

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

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

有谁知道我如何检索分类中所有项目的列表,包括那里的任何图书馆项目。

注意:如果我将文件添加到文档管理系统而不是库中,它会完美运行。但是在实时系统中,我在图书馆中有数百个项目,我希望有一种方法可以通过分类法查看它们,而无需将它们全部移入 DMS。

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

干杯。

4

3 回答 3

2

我会看 TaxonomyItemManager 而不是 ContentManager。

于 2012-09-12T23:40:27.830 回答
2

前几天我对@nedlud 的回答的评论的后续行动,我觉得这应该得到自己的回答。

根据框架 API 文档

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

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

这是使用框架 API(版本 >= 8.5)的简短片段;这让人想起使用旧的(版本 <= 8.0)分类 API,其中一个人将创建一个TaxonomyRequest并获取一个对象结构,该结构不仅封装了分类本身,还封装了分类到该分类中的项目:

//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 修复TaxonomyItemManager返回TaxonomyItemDatanull 属性的(错误?)之前,我将使用上述方法 +LINQ进行排序/过滤/等。

于 2012-12-07T20:19:19.973 回答
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 中有这么多“经理”课程。

于 2012-09-13T23:23:48.953 回答