2013-03-06 35 views
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' 
+0

有幾種方法可以避免您的項目出現在搜索結果中,但它們都針對不同的使用情況。不要在導航樹中顯示,不要在沒有權限等情況下顯示。您的用例是什麼? – 2013-03-06 15:06:52

+0

真的,我不是很清楚。我正在做一個顯示新聞的簡單視圖,用戶有權查看對象,但我不想顯示它。我已經隱藏了導航樹中的對象。 – 2013-03-06 17:23:55

回答

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. 

這是很難過濾掉的東西,比賽一標準。使用上述大腦對象測試是從結果集中移除一小部分子集的絕佳方法。

如果您需要處理大量的「例外」,您可能需要重新考慮您的架構。

1

隨着Products.AdvancedQuery您可以創建目錄結果高級查詢和過濾。另請參閱此how to

+1

我不知道這個產品。這看起來不錯,但在這種情況下,我認爲這是沒有必要的。無論如何,感謝您的幫助。 – 2013-03-06 18:12:30

1

在一般情況下,將內容項目的過期日期設置爲某個過去的日期會將其從搜索結果中隱藏(只要用戶沒有訪問非活動門戶內容權限)。

這是一種隱藏應該對所有人都可見的內容的簡單方法,但您不希望混淆搜索結果,例如作爲主頁的文檔。

我總是使用2001年1月1日作爲日期,所以當我使用這個小小的'黑客'時我可以輕鬆識別。