2011-09-14 60 views
3

我們正在嘗試僅使用ZTK(Zope 3)視圖來開發我們的Plone 4.1產品,因此尚未定義入口皮膚。我試圖從一個不同的包中覆蓋一個視圖,並且在過去已經使用了圖層屬性來完成此操作。如何在Plone 4中不使用zope 2皮膚圖層的情況下使用zope 3/ztk圖層?

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' 
    """ 

回答

7

你必須使用一個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> 

之後,你可以用一如既往的圖層屬性:

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

只記得重新啓動Zope和重新安裝你產品應用新的genericsetup配置。

就是這樣。

+0

完美地工作。謝謝! – scarba05

相關問題