当我使用portal_factory
工具创建类型实例时,它似乎忽略了我指定覆盖base_edit
的视图。
以下是我的设置:
edit
到base_edit
的别名。我知道我的被覆盖的base_edit
视图有效,因为它呈现:
portal_factory
工具时。当我使用custom_edit
这样的其他名称时,尽管在portal_factory
工具中启用了类型,但它也会渲染已覆盖的视图。
答案 0 :(得分:3)
您不需要自定义base_edit.cpt
,只需创建一个名为yourtypenamenormalized_edit.pt
的新CMF皮肤模板,其中“yourtypenamenormalized”是您的portal_type名称小写且没有空格。
应用所有默认宏之前的原始Archetype base_edit.cpt will look for a template called this way。
之后,我建议您使用默认模板中的所有代码填充此新模板,即edit_macro.pt,然后开始应用更改。
通常,您要覆盖的唯一宏是 body 宏。
答案 1 :(得分:3)
将别名更改为@@ base_edit也可以。 这种方式zope遍历使得适配器查找而不是属性访问,并且将使用您的编辑视图。
afaik @@强制进行适配器查找,没有@@通过调用获取第一个对象,然后调用适配器
cc @juriejan