在Plone 4+中替换getMainTemplate覆盖

时间:2011-09-20 15:04:50

标签: plone zope

在旧网站中,我们正在从Plone 2迁移到Plone 4,我们使用在内容类型上定义的getMainTemplate方法覆盖了用于特定基于Archtypes的内容类型的主模板:

def getMainTemplate(self):
    """ this defines the main template to use in base_edit/view/etc for this
    item of content """
    return 'a_different_main_template'

在Plone 4中,这似乎不再起作用。该方法中的pdb未被命中,因此可能已将其删除。可能有充分的理由,因为这种模型/视图混合看起来很混乱。

我已尝试按照http://plone.org/documentation/manual/theme-reference/buildingblocks/skin/templates/how-to-customise-view-or-edit-on-archetypes-content-items中的说明覆盖编辑表单,但无法理解如何更改用于编辑表单的主模板。我只能通过填充插槽来向页面添加内容。我尝试更改开始的HTML标记但未成功:

<html xmlns="http://www.w3.org/1999/xhtml"

  xml:lang="en"

  lang="en"

  xmlns:tal="http://xml.zope.org/namespaces/tal"

  xmlns:metal="http://xml.zope.org/namespaces/metal"

  xmlns:i18n="http://xml.zope.org/namespaces/i18n"

  metal:use-macro="here/a_different_main_template/macros/master"

  i18n:domain="plone">

(其中我的皮肤图层中定义了a_different_main_template和我的自定义编辑模板)

是否有新的方法来替换用于特定类型的主模板,特别是默认的编辑视图将使用它(我可以覆盖“视图”视图,但不想重新创建编辑/添加表单,只需在新模板中使用它们吗?

1 个答案:

答案 0 :(得分:2)

通常的做法是为您的类型注册一个@@ edit视图,该类型在其页面模板中使用您的宏,并确保将其设置为FTI(portal_types)中“edit”方法别名的目标。显然,您可以将标准base_edit.pt文件复制为新视图的起点。