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
  • 呈现视图的视图类
  • 将视图类挂钩到适当接口的ZCML
  • 实现适当接口的内容类
  • 我知道我的被覆盖的
    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”属性执行任何操作。是否有方法为此解决方案连接视图类?我也意识到我可以使用这个方法,但是我将视图逻辑分离成一个视图类,并且只对显示逻辑使用模板。如果这有意义的话。