Am Mittwoch, 13. April 2005 16:16 schrieb Roger Ineichen: > > One more question: How can I use only a specific macro of the view? > > try this: > > def __init__(self, context, request): > self.context = context > self.request = request > > def getMacro(self): > > macrocode = "" > # get the childs of folder 'f' > childs = self.context.values() > > for item in childs: > > # get the 'childView' for each item > view = zapi.getMultiAdapter((self.context, item), name='childView') > > # call the view, this returns the html code of the view > macrocode += view.index['mymacroname'] > > # return all html code where get collected > return macrocode > > The result of getMacro can be used in the folder view like: > > <tal:block metal:use-macro="context/getMacro" /> > > > btw; don't use getView(), use getMultiAdapter(). > > The method getView is deprecated and you should seee a TraceBack > if you use getView()!
Here it does not really work. When I'm using this code: childs = homefolder.values() for item in childs: print item.__name__ view = getMultiAdapter((self.context, item), name="childInfo") <-- htmlcode += view.index["childInfo"] return htmlcode I get the following traceback: File "/home/florian/Zope3/src/zope/component/__init__.py", line 154, in getMultiAdapter raise ComponentLookupError(objects, interface, name) ComponentLookupError: ((<CS.centershock.centershock.Centershock object at 0xb76342ec>, <CS.Linklist.link.Link object at 0xb67ba38c>), <InterfaceClass zope.interface.Interface>, 'childInfo') childInfo is registered in the configure.zcml of the Link object: <page name="childInfo" for="CS.Linklist.interfaces.ILink" template="childInfo.pt" permission="zope.View" layer="centershock" /> When I change the code to use the deprecated getView method: childs = homefolder.values() for item in childs: print item.__name__ view = getView(item, "childInfo", self.request) htmlcode += view.index["childInfo"] <-- return htmlcode I get a traceback one instruction later: File "/home/florian/Desktop/zope/lib/python/CS/centershock/browser/skin/views.py", line 41, in getHTML htmlcode += view.index["childInfo"] TypeError: unsubscriptable object Altough the childInfo.py contains the macro: <metal:block define-macro="childInfo"> Maybe it is a problem that self.context != homefolder? Thx, Florian @Florent: You're perfectly right. Hope it's ok now. ;-) _______________________________________________ Zope3-dev mailing list Zope3-dev@zope.org Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com