如何使用zope 3/ztk层而不在Plone 4中使用zope 2皮肤层?

如何使用zope 3/ztk层而不在Plone 4中使用zope 2皮肤层?,plone,zope,Plone,Zope,我们正在尝试使用ZTK(Zope3)视图开发Plone 4.1产品,因此没有定义门户皮肤。我试图覆盖来自不同软件包的视图,并且在过去使用layer属性来实现这一点 通过plone.theme,您可以根据当前选定的皮肤,使用“层”接口标记请求。如果安装了我的产品,我想用“层”界面标记请求,而不创建皮肤层。我该怎么做 我已经在zcml中定义了接口 宣布 从zope.interface导入接口 类特定(接口): “”“标记“我的主题”的皮肤部分的接口” """ 您必须使用密码 因此,如果您不需要它

我们正在尝试使用ZTK(Zope3)视图开发Plone 4.1产品,因此没有定义门户皮肤。我试图覆盖来自不同软件包的视图,并且在过去使用layer属性来实现这一点

通过plone.theme,您可以根据当前选定的皮肤,使用“层”接口标记请求。如果安装了我的产品,我想用“层”界面标记请求,而不创建皮肤层。我该怎么做

我已经在zcml中定义了接口


宣布

从zope.interface导入接口
类特定(接口):
“”“标记“我的主题”的皮肤部分的接口”
"""
您必须使用密码

因此,如果您不需要它来做其他事情,您可以删除zcml接口声明,只保留python接口(也许您可以将其重命名为更具体的名称,如IMyPackageLayer)。然后在通用设置配置文件中添加一个文件browserlayer.xml,如下所示:

<?xml version="1.0"?>
<!-- Register the package-specific browser layer, so that it will be activated
when this product is installed. -->
<layers>
    <layer name="my.package.browserlayer" 
           interface="my.package.browser.interfaces.IThemeSpecific" />
</layers>

之后,可以一如既往地使用图层属性:

<browser:page
    name="my-view"
    for="*"
    layer="my.package.browser.interfaces.IThemeSpecific"
    />

请记住重新启动zope并重新安装产品以应用新的genericsetup配置

就这些