对不同的内容类型重复使用相同的模板

发布于 2024-11-25 22:38:51 字数 632 浏览 2 评论 0原文

我正在创建相当多的 Dexterity 内容类型(感谢 zopeskel.dexterity 开发者!!)但即使我需要它们是不同的内容类型(搜索、集合......),其中一些也会被同等地呈现。

那么,有什么方法可以为不同的内容类型重用相同的模板吗?

好的,我成功了,但我想知道这是否是正确的方法:

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")

有什么想法吗? 如何跨内容类型重复使用模板?

I'm creating quite a few Dexterity content types (thanks zopeskel.dexterity devs!!) but even if I need them to be different content types (searches, collections...), some of them will be rendered equally.

So, there's any way to reuse the same template for different content types?

Ok, I made it work but I'm wondering if it's the correct approach:

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")

Any thought? How do you reuse templates across content types?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橪书 2024-12-02 22:38:51

为此创建一个接口:

from zope.interface import Interface

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

然后将此接口分配给您的各种内容类型,并注册该接口的视图,而不是直接注册类型:

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

Create an interface for this:

from zope.interface import Interface

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

You then assign this interface to your various content types, and register the view for that interface instead directly for a type:

class SameTwoColumnsView(TwoColumnsView):
    grok.context(ITwoColumnViewable)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文