我们只使用ZTK (Zope3)视图来开发Plone 4.1产品,因此还没有定义门户皮肤。我正在尝试覆盖来自不同包的视图,并且在过去使用layer属性来完成此操作。
plone.theme允许您以当前选定的皮肤为条件,使用“层”接口标记请求。如果我的产品已经安装,我想用一个“层”接口来标记请求,而不是创建一个皮肤层。我该怎么做?
我已经在zcml中定义了我的接口。
<interface
interface=".interfaces.IThemeSpecific"
type="zope.publisher.interfaces.browser.IBrowserSkinType"
name="My Theme"
/>并声明
from zope.interface import Interface
class IThemeSpecific(Interface):
"""Marker interface for skins part of 'My Theme'
"""发布于 2011-09-14 18:26:17
您必须使用browserlayer。
因此,如果您不需要它来做其他事情,您可以删除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>之后,您可以像往常一样使用layer属性:
<browser:page
name="my-view"
for="*"
layer="my.package.browser.interfaces.IThemeSpecific"
/>只需记住重新启动zope并重新安装您的产品即可应用新的genericsetup配置。
就这样。
https://stackoverflow.com/questions/7414502
复制相似问题