gpt4 book ai didi

c# - Ektron 分类法和图书馆项目(在 v9 中)

转载 作者:行者123 更新时间:2023-12-04 04:33:20 25 4
gpt4 key购买 nike

我们最近从 Ektron 8.6 升级到 9.0(Ektron CMS400.NET,版本:9.00 SP2(Build 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 支持,他们说:

I would expect ContentManager to only return content, not library items – must have been a loophole which is now closed. Taxonomy is the way to go.



所以我使用了他们提供的一些代码并提出了以下内容,这似乎有效......
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}”) is a more efficient way to get the categories



这就是我包含 GetTaxonomyPathById() 方法的原因(受此博客文章的启发: http://www.nimbleuser.com/blog/posts/2009/iterating-through-ektron-content-in-multiple-taxonomies-via-directly-interfacing-with-search-indexing-services/)

关于c# - Ektron 分类法和图书馆项目(在 v9 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com