在Plone实例中,我有两个plone站点.在其中一个,我有一个专门的产品.
我想在该产品中声明一个订户,Products.PluggableAuthService.interfaces.events.IPrincipalCreatedEvent只有这个plone网站才会被激活.
我试过zcml:condition="installed my.product"但它只测试是否可以导入,所以订阅者也可以访问另一个plone站点.
将第二个plone站点移动到另一个实例不是一种选择.
谢谢.
在 plon 中你有 的概念Browserlayer。
由于您可以通过通用设置安装浏览器层,因此您可以在每个克隆站点上激活/停用它。
我将在订阅者中实现一个条件,该条件检查已安装的浏览器层。
注意:Browserlayers 应用在
REQUEST带有 before traverse 钩子上。
订阅者的示例函数:
from my.package.interfaces import IMyPackageLayer
def my_function(obj, event):
if IMyPackageLayer.providedBy(obj.REQUEST):
# Do something
else:
# Do nothing
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式在包中注册/创建浏览器层:
创建一个接口.py
from zope.interface import Interface
class IMyPackageLayer(Interface):
"""A layer specific to my package
"""
Run Code Online (Sandbox Code Playgroud)browserlayer.xml在您的包配置文件中创建一个
<layers>
<layer name="my.package"
interface="my.package.interfaces.IMyPackageLayer" />
</layers>
Run Code Online (Sandbox Code Playgroud)browserlayer 示例取自plone.browserlayer 自述文件
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |