2011-09-14 4 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" 
/> 

ですでに定義されており、あなたがbrowserlayerを使用する必要が

from zope.interface import Interface 
class IThemeSpecific(Interface): 
    """Marker interface for skins part of 'My Theme' 
    """ 

答えて

7

を宣言しました。

他に何も必要がない場合は、zcmlインターフェイス宣言を削除して、Pythonインターフェイスのみを保持することができます(IMyPackageLayerのようにもっと名前を変更することもできます)。あなたはいつものように層の属性を使用することができた後

<?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> 

:次に、これであなたの汎用的な設定プロファイル内のファイルbrowserlayer.xmlを追加

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

だけのzopeを再起動し、にあなたの製品を再インストールすることを忘れないでください新しいgenericsetup構成を適用します。

それだけです。

+0

完全に動作します。ありがとう! – scarba05

関連する問題