Collections 按GetObjPositionParent对集合项进行排序

Collections 按GetObjPositionParent对集合项进行排序,collections,criteria,plone,Collections,Criteria,Plone,我希望将GetObjPositionParent作为集合中的排序条件。我在集合视图的站点设置中将其配置为“可用”。但它不可用。我忘了什么吗?你什么都没忘,但在Plone中发现了一个bug。plone.app.folder中的GopipIndex用于GetObjPositionParent索引。但此索引类型未针对任何集合条件注册。Products.ATContentTypes.criteria中的标准注册表需要包含GopipIndex的映射。将其添加到SORT_索引列表中可能是正确的做法。要从外部

我希望将GetObjPositionParent作为集合中的排序条件。我在集合视图的站点设置中将其配置为“可用”。但它不可用。我忘了什么吗?

你什么都没忘,但在Plone中发现了一个bug。plone.app.folder中的GopipIndex用于GetObjPositionParent索引。但此索引类型未针对任何集合条件注册。Products.ATContentTypes.criteria中的标准注册表需要包含GopipIndex的映射。将其添加到SORT_索引列表中可能是正确的做法。要从外部执行此操作,您可以执行以下操作:

# Make sort criteria available for the GopipIndex
from Products.ATContentTypes.criteria import _criterionRegistry
crit_reg = _criterionRegistry
crit_id = 'ATSortCriterion'
index = 'GopipIndex'

indices = crit_reg.criterion2index.get(crit_id, ())
crit_reg.criterion2index[crit_id] = indices + (index, )

value = crit_reg.index2criterion.get(index, ())
crit_reg.index2criterion[index] = value + (crit_id, )