我需要用第二种产品扩展Plone产品(Products.Poi).在扩展产品中,我需要覆盖原始订户事件.我试图在override.zcml中订阅一个具有相同名称的事件,但第二个事件不会覆盖第一个事件,但所有两个事件都是execute.
这里http://plone.org/products/dexterity/documentation/manual/five.grok/core-components/events似乎是不可能的:
与适配器不同,您不能使用更具体的接口覆盖事件订阅者.当事件被触发时,将执行每个适用的事件订阅者.
有人有诀窍吗?
谢谢Alex
Simone Orsi给了我一个解决方案:z3c.unconfigure.
此产品允许禁用zcml配置.
为了使用它,我在我的扩展Poi产品上执行了这一步:
<include package="z3c.unconfigure" file="meta.zcml" />
<unconfigure>
<subscriber
for="Products.Poi.interfaces.ITracker
Products.Archetypes.interfaces.IObjectEditedEvent"
handler="Products.Poi.events.update_tracker_watchers"
/>
</unconfigure>
<subscriber
for="Products.Poi.interfaces.ITracker
Products.Archetypes.interfaces.IObjectEditedEvent"
handler=".events.update_tracker_watchers"
/>
当您指定了 overrides.zcml 时,您还需要在 buildout 中注册 zcml override 吗?看一下: http: //developer.plone.org/components/zcml.html ?highlight=zcml#overrides 它会是这样的:zcml = my.package-overrides
此外,您可以尝试使用 z3c.unconfigure 包:http://pypi.python.org/pypi/z3c.unconfigure