如果像这样注册视图,在 zcml 中使用模板定义:
<browser:page
name="original-view"
class=".original_view.View"
permission="zope2.View"
for="*"
template="original_template.pt"
/>
我只想在我的产品中自定义他的课程,有没有办法在不自定义模板的情况下做到这一点?
您必须包装浏览器:页面<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
属性中指定更精确的