Ektron taxonomy and library items (in v9)

后端 未结 1 1856
孤城傲影
孤城傲影 2021-01-23 03:43

We recently upgraded from Ektron 8.6 to 9.0 (Ektron CMS400.NET, Version: 9.00 SP2(Build 9.0.0.249)).

I have some code (below) which we use to display links to items in a

相关标签:
1条回答
  • I ended up emailing Ektron support in Sydney (I'm in Australia), and they said:

    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.

    So I used some of the code they provided and came up with the following, which appears to work...

    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 "";
    }
    

    This code fetches items for all the child taxonomies as well as returning library items. The one problem is that it fetches duplicates for some items, but those are easy to clean out.

    I was also told by Ektron that...

    TaxonomyManager.GetItem(“{path}”) is a more efficient way to get the categories

    That's why I've included the GetTaxonomyPathById() method (inspired by this blog post: http://www.nimbleuser.com/blog/posts/2009/iterating-through-ektron-content-in-multiple-taxonomies-via-directly-interfacing-with-search-indexing-services/ )

    0 讨论(0)
提交回复
热议问题