3

フォルダ内で検索を実行しています。残念ながら、ルート フォルダも取得してしまいます。これは望ましくありません。

以下に例を示します。以下のようなディレクトリ構造があるとします。

RootFolder
    ... SubFolder1
    ... SubFolder2

RootFolderディレクトリ内を検索すると、次のようになると予想されます。

SubFolder1
SubFolder2

しかし、代わりに、これは私が得るものです:

RootFolder
SubFolder1
SubFolder2

ルートを表示したくありません。以下は、フォルダー内のアイテムを取得/検索するために使用するコードです。

def queryItemRepository(self):
    """
    Perform a search
    """

    query = {}

    portal_catalog = getToolByName(self, 'portal_catalog')
    folder_path = '/'.join( self.context.getPhysicalPath() )

    query['path'] = {'query' : folder_path, 'depth' : 2 }
    query['sort_on'] = "sortable_title"
    query['sort_order'] = "ascending"

    return portal_catalog.searchResults(query)
4

1 に答える 1

4

パス検索のdepthパラメーターは、検索の深さを制限します。最小レベルは設定しません。したがって、検索では、folder_pathネストされた 2 レベルまでの子を含むすべてのパスが返されます。

ルート パスを除外するだけです。すでにコンテキストがあるので、各アイテムの URL を比較するだけです。

for match in portal_catalog.searchResults(query):
    if match.getPath() == folder_path:
        continue
    yield match
于 2012-09-17T10:31:19.587 に答える