3

カタログ結果の特定のオブジェクトを非表示にする方法はありますか? 表示したくない構成ファイルがあります。私はIDでフィルタリングしていますが、とても醜いようです。

from Products.CMFCore.utils import getToolByName
def search(context):
    catalog = getToolByName(context, 'portal_catalog')
    items = catalog()
    for item in items:
        if item.id != "config_file":
            'do something'
4

3 に答える 3

3

ナビゲーション ツリーからオブジェクトを既に非表示にしている場合は、以下をテストして、同じプロパティでフィルター処理できますexclude_from_nav

items = catalog()
for item in items:
    if item.exclude_from_nav:
        continue

    # do something with all objects *not* excluded from navigation.

基準に一致しないものを除外するのは困難です。上記のような脳オブジェクトのテストを使用することは、結果セットから小さなサブセットを削除するための完全に優れた方法です。

「例外」の大部分を処理する必要がある場合は、おそらくアーキテクチャを再考する必要があります。

于 2013-03-06T17:47:30.637 に答える
1

Products.AdvancedQueryを使用すると、カタログ結果に対する高度なクエリとフィルタリングを作成できます。このハウツーも参照してください。

于 2013-03-06T14:20:31.763 に答える
1

一般に、コンテンツ アイテムの有効期限を過去の日付に設定すると、検索結果から非表示になります (ユーザーが [非アクティブなポータル コンテンツへのアクセス] 権限を持っていない場合)。

これは、すべての人に表示されるべきであるが、検索結果を混乱させたくないコンテンツ (たとえば、ホームページとして機能するドキュメント) を非表示にする簡単な方法です。

私は常に2001 年 1 月 1日を日付として使用しているので、この小さな「ハック」をいつ使用したかを簡単に認識できます。

于 2013-03-06T18:51:07.110 に答える