在我的开发环境中,我有以下分类:
const string eventsTaxonomyPath = "\\Upcoming Events";
const long eventsTaxonomyId = 89;
听起来你已经在我喜欢称之为“Legacy API”的地方找到了这个方法(或类似的东西):
var taxonomyApi = new Ektron.Cms.API.Content.Taxonomy();
var taxonomyId = taxonomyApi.GetTaxonomyIdByPath(eventsTaxonomyPath);
如果没有关于您使用的版本的任何信息,我会假设它是最新的 (8.5+) 版本。框架 API 使得从给定分类中获取内容变得非常容易。以下是适用于 v9.0 并且很可能适用于任何 8.5+ 的几种方式——在 developer briefing webcast 中,v9 中框架 API 的唯一主要变化是包含电子商务命名空间。
通过TaxonomyManager获取完整的分类树:
var taxonomyItemManager = new Ektron.Cms.Framework.Organization.TaxonomyManager();
var taxData = taxonomyItemManager.GetTree(eventsTaxonomyId, includeItems: true);
通过ContentManager从给定分类文件夹中递归获取所有内容:
var contentManager = new Ektron.Cms.Framework.Content.ContentManager();
var criteria = new ContentTaxonomyCriteria();
criteria.AddFilter(eventsTaxonomyPath, true);
criteria.ReturnMetadata = true;
var content = contentManager.GetList(criteria);
ContentManager 方式的潜在缺点是您丢失了分层分类结构。使用ContentManager 的好处是您可以告诉它包含每个内容块的所有元数据。 TaxonomyManager 或 TaxonomyItemManager 无法做到这一点。