[英]Ektron taxonomy and library items (in v9)
我们最近从Ektron 8.6升级到9.0(Ektron CMS400.NET,版本:9.00 SP2(内部版本9.0.0.249))。
我有一些代码(如下),用于显示分类法中项目的链接。 在8.6下,如果已将图书馆项目添加到分类法中,则将显示这些项目。 从9.0开始,它不再显示库项目。 它仍然适用于DMS项目和常规页面(Ektron中所有一流的内容)。
private List<ContentData> getTaxonomyItems(long TaxonomyId)
{
listContentManager = new ContentManager();
criteria = new ContentTaxonomyCriteria(ContentProperty.Id, EkEnumeration.OrderByDirection.Ascending);
criteria.PagingInfo = new Ektron.Cms.PagingInfo(400); // there's a lot of items and I don't want to page them.
criteria.AddFilter(TaxonomyId, true); // this gets sub taxonomies too :)
List<ContentData> contentList = listContentManager.GetList(criteria);
return contentList;
}
(我只想简单地告诉用户使用DMS而不是库,但是我们有一个安全性要求,而且我不知道我可以像这样通过删除webconfig来对库项目执行DMS项安全性的方法库文件夹中的文件。)
这是其他任何人都遇到过的错误吗? 还是我的代码有问题(升级到9.0后API是否进行了更改)?
谢谢。
我最终通过电子邮件向悉尼的Ektron支持小组发送邮件(我在澳大利亚),他们说:
我希望ContentManager仅返回内容,而不返回库项目–必须是一个漏洞,该漏洞已关闭。 分类学是必经之路。
因此,我使用了他们提供的一些代码,并提出了以下建议,这些建议似乎起作用了……
private List<TaxonomyItemData> getTaxonomyItems(long TaxonomyId)
{
List<TaxonomyItemData> list = new List<TaxonomyItemData>();
TaxonomyManager taxManager = new TaxonomyManager(Ektron.Cms.Framework.ApiAccessMode.Admin);
TaxonomyCriteria taxonomyCriteria = new Ektron.Cms.Organization.TaxonomyCriteria();
taxonomyCriteria.AddFilter(Ektron.Cms.Organization.TaxonomyProperty.Path,
Ektron.Cms.Common.CriteriaFilterOperator.StartsWith, GetTaxonomyPathById(TaxonomyId));
List<TaxonomyData> TaxonomyDataList = taxManager.GetList(taxonomyCriteria);
foreach (TaxonomyData taxd in TaxonomyDataList)
{
TaxonomyData taxTree = taxManager.GetTree(taxd.Path,
1, // depth. doesn't seem to work. have to manually tranverse lower taxonomies.
true, // include items
null,
Ektron.Cms.Common.EkEnumeration.TaxonomyType.Content,
Ektron.Cms.Common.EkEnumeration.TaxonomyItemsSortOrder.taxonomy_item_display_order);
foreach (TaxonomyItemData taxItem in taxTree.TaxonomyItems)
{
list.Add(taxItem);
}
}
return list;
}
private static String GetTaxonomyPathById(long taxonomyId)
{
TaxonomyManager tMgr = new TaxonomyManager();
TaxonomyData tData = tMgr.GetItem(taxonomyId);
if (tData != null)
{
return tData.Path;
}
return "";
}
该代码获取所有子分类法的项目以及返回库项目。 一个问题是,它获取某些项目的重复项,但这些项很容易清除。
Ektron还告诉我...
TaxonomyManager.GetItem(“ {path}”)是获取类别的更有效方法
这就是为什么我包括GetTaxonomyPathById()方法(受此博客文章启发: http ://www.nimbleuser.com/blog/posts/2009/iterating-through-ektron-content-in-multiple-taxonomies-via- 与搜索索引服务直接接口/ )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.