在旧网站中,我们正在从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
和我的自定义编辑模板)
是否有新的方法来替换用于特定类型的主模板,特别是默认的编辑视图将使用它(我可以覆盖“视图”视图,但不想重新创建编辑/添加表单,只需在新模板中使用它们吗?
答案 0 :(得分:2)
通常的做法是为您的类型注册一个@@ edit视图,该类型在其页面模板中使用您的宏,并确保将其设置为FTI(portal_types)中“edit”方法别名的目标。显然,您可以将标准base_edit.pt文件复制为新视图的起点。