3

如果像这样注册视图,在 zcml 中使用模板定义:

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

我只想在我的产品中自定义他的课程,有没有办法在不自定义模板的情况下做到这一点?

4

1 回答 1

9

您必须包装浏览器:页面<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属性中指定更精确的

于 2014-11-11T13:43:46.320 回答