在不触摸模板的情况下自定义Plone视图类

时间:2014-11-11 10:50:52

标签: plone zope zcml

如果视图是这样注册的,则使用zcml中的模板定义:

<browser:page
    name="original-view"
    class=".original_view.View"
    permission="zope2.View"
    for="*"
    template="original_template.pt"
    />

我想在我的产品中仅自定义他的课程,有没有办法在不定制模板的情况下进行?

1 个答案:

答案 0 :(得分:8)

您必须按<configure package='XXXX'>

打包浏览器:页面

这意味着你在这个包装的范围内。

示例:

<configure package="original.package.browser">
    <!-- custom view -->
    <browser:page
        name="original-view"
        class="your.package.browser.View" <!-- Full dotted name to you custom view class -->
        permission="zope2.View"
        for="*"
        layer="your.package.interfaces.IYourPackageLayer" <!-- You should provide a browserlayer, otherwise you got a configuration conflict -->
        template="original_template.pt" <!-- template from original.package.browser -->
    />

</configure>

编辑:

正如@sdupton所提到的,我更新了用图层剪切的示例代码 如果您不能使用图层(BrowserLayer),则可以将代码(不带图层属性)放入overrides.zcml

您还可以在Interface属性

中指定更精确的for