我有一个自定义的portlet管理器,我希望默认情况下将黑名单(也称为块)上下文(也称为父)portlet。我发现了一些方法,但它们要么需要一个特定的位置(所以不是整个网站),要么只有当我在定义portlet管理器的不同包中时才能工作(在portlets.xml之前运行setuphanders.py)导入,因此portlet管理器还不存在),这不是跑步者。
我真正想做的是在portlets.xml中使用genericSetup黑名单语法,并使用'*'作为这样的位置:
<blacklist
manager="custom.portletmanager"
location="*"
category="context"
status="block"
/>
但是,唉,这似乎不起作用。有什么建议吗?
答案 0 :(得分:0)
也许您可以覆盖portlet的某些权限(可能在overrides.zcml中),需要不存在的权限?
或者,有一个z3c.unconfigure
包可以完全取消注册portlet。
答案 1 :(得分:0)
迟到总比没有好,也许:在你的PortletManager的__init _ _中使用它将继承的默认值设置为false,但你仍然可以覆盖它TTW。 (这种方法没有扩展到其他两个东西,它们已经具有“块/显示/继承”的三元语义,所以我们无法区分默认值和用户设置值,并且每次调用__init _ _ 。)
def __init__(self, context, request, view, manager):
ColumnPortletManagerRenderer.__init__(self, context, request, view, manager)
assignable = getMultiAdapter((self.context, self.manager,),
ILocalPortletAssignmentManager)
if assignable.getBlacklistStatus(CONTEXT_CATEGORY)==None:
# hack: for CONTEXT, it's a binary flag.
# Nevertheless, getBlacklistStatus returns ternary True/False/None.
# None should be the creation default.
assignable.setBlacklistStatus(CONTEXT_CATEGORY, True)