繁体   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