【发布时间】:2014-05-01 18:41:05
【问题描述】:
我正在使用 Ektron CMS 9.0 版
我有分配给分类的智能表单内容,例如我可能有五个智能表单内容项(全部相同)类型分配给一个分类,另外三个分配给不同的分类:
我需要从分类中获取智能表单类型的所有内容:
public IEnumerable<T> GetListOfSmartFormFromTaxonomy<T>(long taxonomyId, bool isRecursive) where T : class
{
// TODO
}
根据下面的链接,我的工作是这样的:
public IEnumerable<TaxonomyItemData> GetListOfSmartFormFromTaxonomy(long taxonomyId)
{
TaxonomyItemCriteria criteria = new TaxonomyItemCriteria();
criteria.AddFilter(TaxonomyItemProperty.TaxonomyId, CriteriaFilterOperator.EqualTo, taxonomyId);
TaxonomyItemManager taxonomyItemManager = new TaxonomyItemManager();
List<TaxonomyItemData> taxonomyItemList = taxonomyItemManager.GetList(criteria);
return taxonomyItemList;
}
但这只是获取项目的标题和 ID,而不是智能表单数据本身。
作为一个 Ektron 新手,我不知道如何只使用一次调用来获取一种 Smart Form 类型的所有项目(而不是循环遍历每个项目并通过 ID 获取它,这效率不高)
我错过了什么?我今天正在积极开展这项工作,并将在此处发布我的发现。
目前使用的参考资料:
- http://reference.ektron.com/developer/framework/Organization/TaxonomyItemManager/GetList.asp
- Ektron taxonomy and library items (in v9)
编辑
在下面发布了我刚刚得到它的工作解决方案作为参考,并授予最接近的答案作为接受。感谢大家的帮助。请加入任何改进;)
【问题讨论】:
-
完全正确 - 您想使用 ContentTaxonomyCriteria 和 ContentManager。 TaxonomyItem 对象和管理器更像是获取内容和分类之间关系的属性。
-
如果您有兴趣,用例是常见问题解答。许多单独的问题可以在一个或多个分类法中,根据分类法拉入一个小部件并按标题排序 - 因此可以有一个通用、全部等的常见问题解答小部件。
-
注 2,也发布到带有标签 #ektron 的推特(在这篇文章中阅读过它:stackoverflow.com/questions/10747792/…) - 我会向其他人推荐这种方法 - egandalf 几乎立刻回复了 TQ ;)
-
基于您的代码的一个想法 - 由于框架 api 返回一个 List
,因此从您的方法返回 IEnumerable 可能会产生误导。您的结果是 List ,返回 IEnumerable 可能会给人一种尚未枚举的印象。这里有一个很好的讨论这样的含义:stackoverflow.com/questions/7969354/…
标签: ektron