Повторно использовать один и тот же шаблон для разных типов контента - PullRequest
3 голосов
/ 21 июля 2011

Я создаю довольно много типов контента Dexterity (спасибо zopeskel.dexterity devs !!), но даже если мне нужно, чтобы они были разных типов контента (поиски, коллекции ...), некоторые из они будут отображаться одинаково.

Итак, есть ли способ повторно использовать один и тот же шаблон для разных типов контента?

Хорошо, я заставил это работать, но мне интересно, правильный ли это подход:

from my.product.parent_type import IParentType, ParentType, TwoColumnsView

... code omitted ...

# Common folder for templates
grok.templatedir('parent_type_templates')

class SameTwoColumnsView(TwoColumnsView):
    grok.context(CustomClass)
    grok.require('zope2.View')

    grok.template("twocolumnsview")

Есть мысли? Как использовать шаблоны в разных типах контента?

1 Ответ

6 голосов
/ 21 июля 2011

Создайте для этого интерфейс:

from zope.interface import Interface

class ITwoColumnViewable(Interface):
    """Can be viewed in a 2-column layout"""

Затем вы назначаете этот интерфейс для различных типов контента и вместо этого регистрируете представление для этого интерфейса непосредственно для типа:

class SameTwoColumnsView(TwoColumnsView):
    grok.context(ITwoColumnViewable)
...