目录结果按内容中的位置顺序排列

时间:2012-01-11 10:54:40

标签: plone

我希望使用我的Archetypes包中的以下代码显示目录结果。问题是显示的列表不符合“内容”选项卡中的位置顺序。我错过了什么?

class BookView(BrowserView):

    implements(IBookView)

    def get_chapters(self):
        context = aq_inner(self.context)
        catalog = getToolByName(context, 'portal_catalog')
        folder_path = '/'.join(context.getPhysicalPath())
        results = catalog(
                      path={'query': folder_path, 'depth': 1},
                      portal_type=('File', 'Chapter')
                  )
        return results


<div class="books-pdf"
     tal:define="chapters view/get_chapters"
     tal:condition="chapters">
  <span class="listname"
        i18n:translate="">Chapter Name</span>
  <span class="iconname"
        i18n:translate="">File Type</span>
  <span class="sizename"
        i18n:translate="">File Size</span>
  <tal:chapters repeat="chapter chapters">
  ...

2 个答案:

答案 0 :(得分:8)

除非您明确请求订单,否则目录将按内部顺序返回项目。您可以使用sort_on参数执行此操作,该参数应该是用于排序的索引的名称。

大多数索引都可以用于排序,值得注意的例外是全文索引(这就是Plone目录中有sortable_title索引的原因。)

您可能希望对getObjPositionInParent索引进行排序,该索引保存容器中每个对象的索引:

    results = catalog(
        path=dict(query=folder_path, depth=1),
        portal_type=('File', 'Chapter'),
        sort_on='getObjPositionInParent',
    )

答案 1 :(得分:1)

您需要按此索引对结果进行排序:

getObjPositionInParent