2012-01-11 11 views
0

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"> 
    ... 

答えて

8

カタログは、内部順序で項目を返します。 sort_onパラメータを使用すると、並べ替えに使用するインデックスの名前を指定できます。

ほとんどのインデックスはソートに使用できますが、例外的にフルテキストインデックスがあります(これがPloneカタログにsortable_titleインデックスがある理由です)。

あなたはおそらくそれのコンテナ内の各オブジェクトのインデックスを保持getObjPositionInParent指数、上でソートする:

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

あなたは、このインデックスによって結果をソートする必要があります:あなたが明示的に順序を要求しない限り、

getObjPositionInParent 
関連する問題