[英]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.