我正在尝试在页面模板中显示三个集合的结果。我怎样才能做到这一点?
答案 0 :(得分:1)
我找到了解决方案。
示例:
<ul tal:repeat="data context/list-open/queryCatalog">
<li tal:content="data/Title">title</li>
</ul>
对象“list-open”是集合。
答案 1 :(得分:1)
对于TTW解决方案,如果只需要在一个位置,也可以安装Products.ContentWellPortlets,创建一个页面并为页面分配三个集合portlet。
答案 2 :(得分:0)
首先,您需要创建一个browserView。
在此browserView中,添加一个返回合并的3个集合的方法,您可以在结果列表中进行某种排序或其他处理。
def myNewCompiledCollection(self):
""" """
list1 = self.context.list1.queryCatalog()
list2 = self.context.list2.queryCatalog()
list3 = self.context.list3.queryCatalog()
resultList = list1 + list2 + list3
return resultList
在浏览器模板中,只需执行以下操作:
<ul tal:repeat="data view/myNewCompiledCollection">
<li tal:content="data/Title">title</li>
</ul>
答案 3 :(得分:0)
只需将每个集合的结果添加到列表中,您就可能在结果中获得重复的条目。
brains1 = collection1.ueryCatalog()
brains2 = collection2.ueryCatalog()
brains3 = collection3.ueryCatalog()
results = brains1 + brains2 + brains3
afaik你不能使用一套来清理你的清单,因为同一个对象的大脑不一定是同一个对象。 所以这很可能也不起作用:
set(results)
然而,您可以从集合中提取查询并使用Products.AdvancedQuery或 - 可能更容易实现 - 将结果列表转换为uid列表并进行附加目录搜索:
uids = [brain.UID for brain in results]
results_without_dups = catalog(UID=uids)