首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Plone 4中没有Zope2皮肤层的情况下如何使用Zope3/ ztk层?

在Plone 4中没有Zope2皮肤层的情况下如何使用Zope3/ ztk层?
EN

Stack Overflow用户
提问于 2011-09-14 18:04:01
回答 1查看 165关注 0票数 3

我们只使用ZTK (Zope3)视图来开发Plone 4.1产品,因此还没有定义门户皮肤。我正在尝试覆盖来自不同包的视图,并且在过去使用layer属性来完成此操作。

plone.theme允许您以当前选定的皮肤为条件,使用“层”接口标记请求。如果我的产品已经安装,我想用一个“层”接口来标记请求,而不是创建一个皮肤层。我该怎么做?

我已经在zcml中定义了我的接口。

代码语言:javascript
复制
<interface
    interface=".interfaces.IThemeSpecific"
    type="zope.publisher.interfaces.browser.IBrowserSkinType"
    name="My Theme"
/>

并声明

代码语言:javascript
复制
from zope.interface import Interface
class IThemeSpecific(Interface):
    """Marker interface for skins part of 'My Theme'
    """
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-14 18:26:17

您必须使用browserlayer

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

代码语言:javascript
复制
<?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>

之后,您可以像往常一样使用layer属性:

代码语言:javascript
复制
<browser:page
    name="my-view"
    for="*"
    layer="my.package.browser.interfaces.IThemeSpecific"
    />

只需记住重新启动zope并重新安装您的产品即可应用新的genericsetup配置。

就这样。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7414502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档