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 回答