Overriding 如何覆盖Plone事件订阅服务器

Overriding 如何覆盖Plone事件订阅服务器,overriding,plone,Overriding,Plone,我需要用第二个产品扩展Plone产品(Products.Poi)。 在扩展产品中,我需要覆盖原始的订阅服务器事件。 我试图在override.zcml中订阅一个同名的事件,但第二个事件没有覆盖第一个事件,但这两个事件都已执行 这似乎是不可能的: 与适配器不同,您不能通过使用更具体的接口覆盖事件订阅服务器。触发事件时,将执行每个适用的事件订阅服务器 有人有把戏吗 感谢Alex当您指定overrides.zcml时,您还需要在buildout中注册zcml override吗?看一看:它类似于:zc

我需要用第二个产品扩展Plone产品(Products.Poi)。 在扩展产品中,我需要覆盖原始的订阅服务器事件。 我试图在override.zcml中订阅一个同名的事件,但第二个事件没有覆盖第一个事件,但这两个事件都已执行

这似乎是不可能的:

与适配器不同,您不能通过使用更具体的接口覆盖事件订阅服务器。触发事件时,将执行每个适用的事件订阅服务器

有人有把戏吗


感谢Alex

当您指定overrides.zcml时,您还需要在buildout中注册zcml override吗?看一看:它类似于:zcml=my.package-overrides


此外,您可以尝试使用z3c.unconfigure包:

Simone Orsi给了我一个解决方案:

此产品允许禁用zcml配置

为了使用它,我在我的扩展Poi产品上执行了以下步骤:

  • 根据安装要求在setup.py中添加了“z3c.unconfigure”
  • 使用update_tracker_watchers的新定义创建event.py
  • 在overrides.zcml中,将此行添加到unconfigure Products.Poi.events.update_tracker_watchers并注册我的新事件






  • 不能使用覆盖覆盖订阅服务器。订阅服务器是一个处理程序列表,与适配器和实用程序不同(因此覆盖将替换现有的注册);对于订阅者,将添加新的处理程序。对不起,Vangheem,我已经看到了您稍后的答案。我打开这个问题来分享解决方案,但我是新来的,我必须等11个小时才能回答我发布的一个问题:(我只想找一只猴子。)