Замена для переопределения getMainTemplate в Plone 4+ - PullRequest
2 голосов
/ 20 сентября 2011

На более старом сайте, который мы переносим с Plone 2 на Plone 4, мы переопределили основной шаблон, используемый для определенного типа контента на основе Archtypes, используя метод getMainTemplate, определенный для типа контента:

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 Ответ

2 голосов
/ 20 сентября 2011

Обычный подход состоит в том, чтобы зарегистрировать представление @@ edit для вашего типа, которое использует ваш макрос в своем шаблоне страницы, и убедиться, что оно установлено как цель псевдонима метода edit в FTI (portal_types). Очевидно, вы можете скопировать стандартный файл base_edit.pt в качестве отправной точки для вашего нового представления.

...