簡體   English   中英

Ektron分類法和圖書館項目(在v9中)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM