防止某些类型出现在plone.app.theming中的文件夹列表中

时间:2012-05-03 07:49:40

标签: plone theming diazo

我有一个网站,其中有一个公共网址,通过plone.app.theming / Diazo主题显示,网址限制为通过森伯斯特显示的内容编辑。

我希望某些门户网站类型只出现在cms编辑器的列表中,而不是出现在公共站点上。我注意到如果已定义,folder_listing模板将使用request/contentFilter。有没有办法为主题视图添加内容过滤器到请求?

1 个答案:

答案 0 :(得分:1)

我最终使用Plone网站上的预遍历钩子解决了这个问题。这在我的案例中起作用,因为我可以根据请求的某些属性可靠地确定请求是针对主题视图还是编辑视图。

def SetupThemeView(site, before_traverse):
    """ If we're serving the public, themed, version then supplement the request
    """
    request = before_traverse.request
    if serving_theme_view(request):
        request.set('contentFilter', {'portal_type' : listable_types})

serving_theme_view确定我们是否正在为主题或编辑器视图提供服务,而listable_types是我们希望在主题视图中的列表中显示的类型名称类型的元组。

然后我在configure.zcml

中将其注册为订阅者
<subscriber
    for="Products.CMFCore.interfaces.ISiteRoot
         zope.traversing.interfaces.IBeforeTraverseEvent"
    handler=".events.SetupThemeView"
    />