仅针对特定文件夹显示操作

时间:2011-05-11 02:17:27

标签: plone

我在/ mysite / portal_actions / object / rename添加了一个自定义CMF Action。 “条件(表达式)”字段的值为python:plone_context_state.is_folderish() or plone_context_state.is_default_page(),这使得操作在每个文件夹的选项卡上都可见。我希望它只显示在folder1,folder2和folder3的选项卡上。我应该在Condition字段中使用什么?

2 个答案:

答案 0 :(得分:3)

你有几种选择;条件表达式几乎可以无限扩展。

按文件夹ID

明显的测试是测试一组文件夹ID:

python:(plone_context_state.is_folderish() or plone_context_state.is_default_page()) and
        folder.getId() in ('folder1', 'folder2', 'folder3')

使用collective.flag

collective.flag让您的内容编辑者确定标签应显示的位置。它为您的内容添加了一个简单的布尔复选框,您可以轻松地测试文件夹上设置的标志。该标志仅显示具有正确接口的内容类型,因此您可以轻松地执行此操作

python:(plone_context_state.is_folderish() or plone_context_state.is_default_page()) and 
        folder.restrictedTraverse('@@plone_interface_info').provides('collective.flag.interfaces.IFlaggableObject')

使用脚本测试

您可以使用任何可获取的方法进行测试,包括皮肤中的Python脚本。这不是最佳实践,但它可能只是为您提供所需的额外灵活性。

python:(plone_context_state.is_folderish() or plone_context_state.is_default_page()) and
        folder.yourScriptName()

请记住在folder上测试条件。

答案 1 :(得分:-1)

python:(plone_context_state.is_folderish()和(object.getId()=='folder1'或object.getId()=='folder2'或object.getId()=='folder3'))或(plone_context_state .is_default_page()和(plone_context_state.parent.getId()=='folder1'或plone_context_state.parent.getId()=='folder2'或plone_context_state.parent.getId()=='folder3'))

像这样的事情。您可以使用文件夹路径来确保它们是那些文件夹,而不仅仅是包含这些ID的文件夹。