我指的是这篇文章用于查询相关数据的动态内容:
https://docs.sitefinity.com/example-query-dynamic-content-by-related-data
在处理单个相关项目时,这一切都很好,但目前我正在处理这种情况:
我有一个Human的自定义内容项,以及两种相关的Hair Color和Eye Color类型的数据项(当然这些只是示例类型)
假设我想用榛子眼睛和黑发查询所有人类物品,我该怎么做才能干净利落?
我提出了一个hacky解决方案,但是我需要一些可以使用无需相关数据查询,或者使用一个或两个(所有组合)的东西
使用Sitefinity的本机API是否有尝试和真实的方法?
答案 0 :(得分:0)
我认为除了DynamicModuleManager之外,最简洁的方法是使用ContentLinksManager。
这是伪代码:
使用DynamicModuleManager获取HairColor项目的OriginalContentId(来自HairColor模块),其中Color ==“Black”
使用DynamicModuleManager获取EyeColor项目的OriginalContentId(来自EyeColor模块)EyeColor ==“Hazel”
然后
var cmanager = ContentLinksManager.GetManager(); var humanWithBlackHairMasterIds = cmanager
.GetContentLinks()
.Where(c => c.ParentItemType == "Human type" &&
c.ChildItemType == "HairColor type" &&
c.IsParentDeleted == false &&
c.IsChildDeleted == false &&
c.ChildItemId == ID_From_Point1)
.Select(c => c.ParentItemId);
现在,humanWithBlackHairMasterIds将拥有黑头发的所有人的masterIds。
您可以使用眼睛颜色模块做类似的事情,让所有人都使用榛眼,最后将两个结果相交,以使人类满足这两种条件。