Plone 如何覆盖';基本编辑';使用portal\u factory查看类型?
似乎当我使用Plone 如何覆盖';基本编辑';使用portal\u factory查看类型?,plone,Plone,似乎当我使用portal\u factory工具创建类型实例时,它忽略了我指定的覆盖base\u edit的视图 以下是我的设置: 别名从类型工具中的edit到base\u edit 呈现视图的视图类 将视图类挂钩到适当接口的ZCML 实现适当接口的内容类 我知道我的被覆盖的base\u edit视图可以工作,因为它呈现: 创建对象后,它将进行渲染 当我禁用该类型的portal\u factory工具时 当我使用另一个名称,如custom\u edit时,它也会呈现被覆盖的视图,尽管在porta
portal\u factory
工具创建类型实例时,它忽略了我指定的覆盖base\u edit
的视图
以下是我的设置:
edit
到base\u edit
base\u edit
视图可以工作,因为它呈现:
portal\u factory
工具时当我使用另一个名称,如
custom\u edit
时,它也会呈现被覆盖的视图,尽管在portal\u factory
工具中启用了类型。您不需要自定义base\u edit.cpt
,您只需要创建一个名为yourtypenamenormalized\u edit.pt
的新CMF皮肤模板,其中“yourtypenamenormalized”是您的门户网站类型名称,小写,不带空格。
在应用所有默认宏之前,请使用原始原型base_edit.cpt
之后,我建议您使用默认模板中的所有代码填充这个新模板,也就是说,然后开始应用更改
通常,您要覆盖的唯一宏是主体宏。将别名更改为@base\u edit也可以。 这样,zope遍历将进行适配器查找,而不是属性访问,并且将使用编辑视图 afaik@强制进行适配器查找,而不@调用通过采集的第一个对象,然后调用适配器
cc@juriejan这毫无意义;
portal\u factory
不会更改正在使用的编辑视图。进行了更多解释并添加了一个临时解决方案。请尝试使用@base\u edit作为来自edit的别名。您是否也设置了“立即”视图“财产?@mat-那真是一种享受。你能不能把它写进一个答案,解释一下它为什么会起作用?不必对“immediate_view”属性执行任何操作。是否有方法为此解决方案连接视图类?我也意识到我可以使用这个方法,但是我将视图逻辑分离成一个视图类,并且只对显示逻辑使用模板。如果这有意义的话。