【问题标题】:How to select library items that belong to a taxonomy in Ektron如何在 Ektron 中选择属于某个分类的库项目
【发布时间】:2012-09-05 01:17:19
【问题描述】:

我正在使用 Ektron CMS 版本 8.5 SP2。

我在分类中有一些项目。有些是实际页面,有些是库项目(Word 文件和 PDF 等文档)。

假设我的分类中有 3 页和 2 个库项目,总共 5 个项目。

我使用下面的代码...

ContentManager cManager = new Ektron.Cms.Framework.Content.ContentManager();
Ektron.Cms.Content.ContentTaxonomyCriteria ctCriteria = new    Ektron.Cms.Content.ContentTaxonomyCriteria();
ctCriteria.AddFilter(1707, true); // hard coded taxonomy ID
List<ContentData> list = cManager.GetList(ctCriteria);
Label1.Text = list.Count.ToString();

当此代码运行时,列表中的项目数为 3。如果我输出实际列表,我可以看到它只是分类中的页面,而不是 2 个库项目。

似乎 ContentManager.getList() 函数没有获取库项目,即使这些项目已添加到分类中也是如此。我可以确认在管理工作区中,库项目在分类中可见。

为了澄清,这是检索已添加到分类中的项目的问题。

有谁知道我如何检索分类中所有项的列表,包括其中的任何图书馆项目。

注意:如果我将文件添加到文档管理系统而不是库中,它会完美运行。但在实时系统中,我在图书馆中有数百个项目,我希望有一种方法可以通过分类查看它们,而无需将它们全部移入 DMS。

我也在 E​​ktron 开发者论坛上发布了这个问题,但没有得到回复。我希望这里有人可以提供帮助。

干杯。

【问题讨论】:

    标签: c# asp.net ektron


    【解决方案1】:

    前几天我对@nedlud 的回答的评论的后续行动,我觉得这应该得到自己的回答。

    根据Framework API docs

    如果打算检索已在分类法中分类的 CMS 项目,请使用 TaxonomyItemManager

    但正如 cmets 中已经指出的,此 API 返回的 TaxonomyItemData 对象具有许多空属性,例如 QuickLinkHtml。我发现使用TaxonomyManager,可以成功查询分配给特定分类类别的项目。

    这是使用 Framework API(版本 >= 8.5)的简要 sn-p;这让人想起使用较旧的(版本 TaxonomyRequest 并返回一个对象结构,该结构不仅封装了分类本身,还封装了分类到该分类中的项目:

    //e.g. for a single-level taxonomy
    
    long taxRoot = 1707; //from OP's question
    TaxonomyManager taxManager = new TaxonomyManager();
    //GetTree overload supplying includeItems parameter
    TaxonomyData taxTree = taxManager.GetTree(taxRoot, includeItems: true);
    
    foreach(TaxonomyItemData taxItem in taxTree.TaxonomyItems)
    {
        //these should print true
        Response.Write(!String.IsNullOrEmpty(taxItem.QuickLink));
        Response.Write(!String.IsNullOrEmpty(taxItem.Html));
    }
    

    我目前正在将一些 8.0 版代码重构为 8.6 版并转换为 Framework API。在 Ektron 修复 TaxonomyItemManager 返回带有 null 属性的 TaxonomyItemData 的(错误?)之前,我将使用上述方法 + LINQ 进行排序/过滤/等。

    【讨论】:

    • 看起来我在第一次发布时看过这个答案。似乎它可以解决我最近的问题(stackoverflow.com/questions/20184540/…
    • 我现在遇到的问题是 GetTree() 调用上的“深度”参数似乎没有得到尊重。无论“深度”的值如何,只返回第一级项目。
    • 我对分类法有点困惑。我在 Ektron 有一些收藏。如何使用代码隐藏根据集合 ID 查看集合中有哪些项目?谢谢。
    • @SiKni8 似乎应该是一个单独的问题(而不是对此线程的评论)。简而言之,Ektron 中的“集合”与“分类”完全不同。随意发布一个新问题并在此处提供一个链接,我可以看看。
    • @kaveman 你能帮我吗:stackoverflow.com/questions/34314732/… 谢谢。
    【解决方案2】:

    我会查看 TaxonomyItemManager 而不是 ContentManager。

    【讨论】:

    • 谢谢。正是我需要的。我已经发布了工作代码,以防它帮助其他人。干杯。
    【解决方案3】:

    感谢@maddoxej 建议使用 TaxonomyItemManager,我有工作解决方案代码...

    TaxonomyItemCriteria criteria = new TaxonomyItemCriteria();
    criteria.AddFilter(TaxonomyItemProperty.TaxonomyId, CriteriaFilterOperator.EqualTo, 1707);
    TaxonomyItemManager taxonomyItemManager = new TaxonomyItemManager();
    List<TaxonomyItemData> taxonomyItemList = taxonomyItemManager.GetList(criteria);
    Label1.Text = taxonomyItemList.Count.ToString();
    

    这段代码现在显示“5”的预期计数,我可以显示所有的项目:)

    Ektron 中有这么多“经理”类。

    【讨论】:

    • 我现在面临的问题是库项目的“QuickLink”属性为空,所以虽然我可以显示项目的名称,但我无法链接到它们:(
    • 我在使用TaxonomyItemManager 尝试检索分配给特定分类类别的所有项目时遇到了同样的问题。我成功取回了完整的项目列表,但 QuickLink 更重要的是 Html 属性为空。你有进步吗?
    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2016-12-09
    • 2019-03-08
    • 2014-05-01
    • 1970-01-01
    • 2015-06-06
    • 2022-07-20
    相关资源
    最近更新 更多