gpt4 book ai didi

ektron - 从分类法中获取 Ektron 9 的所有 SmartForm 项目

转载 作者:行者123 更新时间:2023-12-01 15:50:02 25 4
gpt4 key购买 nike

我正在使用 Ektron CMS 9.0 版

我有分配给分类法的智能表单内容,例如我可能有五个智能表单内容项(全部相同)类型分配给一个分类法,另外三个分配给不同的分类法:

我需要从分类法中获取智能表单类型的所有内容:

public IEnumerable<T> GetListOfSmartFormFromTaxonomy<T>(long taxonomyId, bool isRecursive) where T : class
{
// TODO
}

根据下面的链接,我的工作是这样的:

public IEnumerable<TaxonomyItemData> GetListOfSmartFormFromTaxonomy(long taxonomyId)
{
TaxonomyItemCriteria criteria = new TaxonomyItemCriteria();
criteria.AddFilter(TaxonomyItemProperty.TaxonomyId, CriteriaFilterOperator.EqualTo, taxonomyId);

TaxonomyItemManager taxonomyItemManager = new TaxonomyItemManager();
List<TaxonomyItemData> taxonomyItemList = taxonomyItemManager.GetList(criteria);

return taxonomyItemList;
}

但这只是获取项目的标题和 ID,而不是智能表单数据本身。

作为 Ektron 的新手,我不知道如何只使用一次调用来获取一种智能表单类型的所有项目(而不是循环遍历每个项目并通过 ID 获取它,这效率不高)

我错过了什么?我今天正在积极开展这项工作,并将在此处发布我的发现。

到目前为止使用的引用资料:

编辑

在下面发布了我刚刚得到它的工作解决方案作为引用,并授予最接近的答案作为接受。谢谢大家的帮助。请提出任何改进;)

最佳答案

我建议将 ContentTaxonomyCriteria 与 ContentManager 结合使用。

long smartFormId = 42;
long taxonomyId = 127;
bool isRecursive = true;

var cm = new ContentManager();

var taxonomyCriteria = new ContentTaxonomyCriteria();
taxonomyCriteria.AddFilter(ContentProperty.XmlConfigurationId, CriteriaFilterOperator.EqualTo, smartFormId);
taxonomyCriteria.AddFilter(taxonomyId, isRecursive);

var content = cm.GetList(taxonomyCriteria);

更新

ContentData 对象有一个名为 XmlConfiguration 的属性。当内容基于 smartform 时,此属性将为非 null 并具有正(非零)Id:例如 content[0].XmlConfiguration.Id

我经常在我的代码中添加一个扩展方法,它会告诉我给定的 ContentData 是否基于智能表单:

public static class ContentDataExtensions
{
public static bool IsSmartFormContent(this ContentData content)
{
return content != null && content.XmlConfiguration != null && content.XmlConfiguration.Id > 0;
}
}

这样我就可以获取内容(或内容列表)并在代码中快速检查它是否基于智能表单:

foreach (var contentData in contentList)
{
if (contentData.IsSmartFormContent())
{
// Do smart-form stuff here...
}
}

当然,如果您的内容来自框架 api,并且您使用了基于特定 XmlConfigurationId 进行选择的标准对象,那么理论上您不必使用它,但它仍然经常派上用场.

关于ektron - 从分类法中获取 Ektron 9 的所有 SmartForm 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22608874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com