【问题标题】:Ektron taxonomy and library items (in v9)Ektron 分类和库项目(在 v9 中)
【发布时间】:2013-11-25 04:00:52
【问题描述】:

我们最近从 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 而不是图书馆,但我们有安全要求,我不知道有一种方法可以像使用图书馆项目一样对 DMS 项目实施安全性将 webconfig 文件放到库文件夹中。)

这是其他人经历过的错误吗? 还是我的代码有问题(升级到 9.0 时 API 发生了变化)?

谢谢。

【问题讨论】:

  • 我有一篇较旧的相关帖子 (stackoverflow.com/questions/12381065/…),该帖子的解决方案适用于库项目,但不适用于嵌套分类法。无论搜索深度的给定值如何,它似乎只返回分类的最顶层(深度=1)

标签: c# asp.net ektron


【解决方案1】:

我最终给悉尼的 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-directly-interfacing-with-search-indexing-services/

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多