我在/ mysite / portal_actions / object / rename添加了一个自定义CMF Action。 “条件(表达式)”字段的值为python:plone_context_state.is_folderish() or plone_context_state.is_default_page()
,这使得操作在每个文件夹的选项卡上都可见。我希望它只显示在folder1,folder2和folder3的选项卡上。我应该在Condition字段中使用什么?
答案 0 :(得分:3)
你有几种选择;条件表达式几乎可以无限扩展。
明显的测试是测试一组文件夹ID:
python:(plone_context_state.is_folderish() or plone_context_state.is_default_page()) and
folder.getId() in ('folder1', 'folder2', 'folder3')
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的文件夹。