仅在特定上下文(文件夹或集合)中列出过期的plone内容

时间:2014-05-21 16:01:22

标签: plone

我要在特定文件夹或集合中列出对象也已过期到匿名用户。 你知道,portal_catalog只返回未过期的大脑。这是一种有用的行为,但在这种情况下不是......

要强制目录返回过期内容,我们必须传递一个特定参数:show_inactive。

浏览folder_listing(& family)代码我注意到可以通过请求将选项参数(contentFilter)传递给query / getFolderContents。这是一个很好的功能,可以自定义查询,避免创建非常相似的列表模板。

我认为有必要创建一个标记界面来标记上下文(文件夹或集合),我想列出过期内容。对于前者IListExpired。

我想办法:

1)使订阅者拦截before_traverse,并在处理程序中进行测试以验证上下文是否实现了IListExpired。在积极的情况下,我做了一个

request.set('folderListing', {'show_inactive':True})

2)为IListExpired创建一个Viewlet ,在调用集中

request.set('folderListing', {'show_inactive':True})

最好的方法是什么?我想第一个可能是不必要的开销。

维托

1 个答案:

答案 0 :(得分:0)

AFAIK,这是两个独立的事情:folderListing使用a method available to all CMF-based Folderish content types; show_inactive是Plone目录的一个选项,所以你不打算按照你的计划让它工作。

我认为您应该覆盖这些视图并使用目录调用重写列表。

您最好使用浏览器图层来执行此操作,或者在您计划时使用标记界面。