Viewlets (2) -- 利用grok.context 限制 viewlet 出現時機

利用grok來製作Viewlet,強大功能,這節我們來配合grok.context,指定viewlet出現時機,同時指定template

#-*- coding:utf-8 -*-
from five import grok
from plone.app.layout.viewlets.interfaces import IPortalHeader  #把需要的viewlet manager import進來
from my.addon.interfaces import IEventInfo, IArticle
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile


class TestViewlet(grok.Viewlet):
    grok.viewletmanager(IPortalHeader)
    grok.context(IEventInfo)
    template = ViewPageTemplateFile('template/viewlet1.pt')

    def render(self):
        return self.template()


class TestViewlet2(grok.Viewlet):
    grok.viewletmanager(IPortalHeader)
    grok.context(IArticle)
    template = ViewPageTemplateFile('template/viewlet1.pt')

    def render(self):
        return self.template()

上例,我們設計了2個viewlet,一個指定出現在IEventInfo, 一定指定出現在IArticle

同時都指定了同一個模版tmeplate, viewlet1.pt