如何使用portal_factory覆盖类型的“base_edit”视图?

时间:2013-08-15 11:58:36

标签: plone

当我使用portal_factory工具创建类型实例时,它似乎忽略了我指定覆盖base_edit的视图。

以下是我的设置:

  1. 类型工具中的editbase_edit的别名。
  2. 查看呈现视图的类。
  3. 将视图类挂钩到相应接口的ZCML。
  4. 实现适当接口的内容类。
  5. 我知道我的被覆盖的base_edit视图有效,因为它呈现:

    1. 创建对象后,它会渲染。
    2. 当我停用该类型的portal_factory工具时。
    3. 当我使用custom_edit这样的其他名称时,尽管在portal_factory工具中启用了类型,但它也会渲染已覆盖的视图。

2 个答案:

答案 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