如何声明仅为一个plone站点启用的订阅服务器?

如何声明仅为一个plone站点启用的订阅服务器?,plone,Plone,在Plone实例中,我有两个Plone站点。 在其中一个项目中,我有一个专门的产品 我想在该产品中为Products.PluggableAuthService.interfaces.events.IPrincipalCreatedEvent声明一个订阅者,该订阅者将仅为此plone站点触发 我尝试过使用zcml:condition=“installed my.product”,但它只测试是否可以导入,因此订户也可用于其他plone站点 将第二个plone站点移动到另一个实例不是一个选项 谢谢。在

在Plone实例中,我有两个Plone站点。 在其中一个项目中,我有一个专门的产品

我想在该产品中为
Products.PluggableAuthService.interfaces.events.IPrincipalCreatedEvent
声明一个订阅者,该订阅者将仅为此plone站点触发

我尝试过使用
zcml:condition=“installed my.product”
,但它只测试是否可以导入,因此订户也可用于其他plone站点

将第二个plone站点移动到另一个实例不是一个选项


谢谢。

在plone中,您有了

由于您可以通过通用设置安装browserlayer,因此您可以在每个plone站点上激活/停用它

我将在订阅服务器中实现一个条件,检查是否安装了browserlayer

注: Browserlayers应用于
请求
,带有一个before-travel钩子

订阅服务器的功能示例:

从my.package.interfaces导入IMyPackageLayer
def my_功能(obj,事件):
如果IMyPackageLayer.providedBy(对象请求):
#做点什么
其他:
#无所事事
您可以通过以下方式在包中注册/创建浏览器层:

  • 创建一个interfaces.py

    从zope.interface导入接口
    类IMyPackageLayer(接口):
    “”“特定于我的包的层
    """
    
  • 在包配置文件中创建
    browserlayer.xml

    
    
  • browserlayer示例取自