有一种方法可以隐藏我的目录结果的特定对象吗? 我有一个我不想显示的配置文件。 我正在过滤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 :(得分: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 :(得分:1)
使用Products.AdvancedQuery,您可以创建高级查询并过滤目录结果。另请参阅此how to。
答案 2 :(得分:1)
在一般情况下,将内容项的过期日期设置为某个过去日期会将其隐藏在搜索结果中(只要用户没有 Access非活动门户内容权限)。
这是隐藏所有人都应该看到的内容的简单方法,但是您不希望混淆搜索结果,例如:作为主页的文件。
我总是使用 2001年1月1日作为日期,所以当我使用这个小“黑客”时我很容易识别。