On Friday 02 March 2007 17:06, Tres Seaver wrote: > Gaute Amundsen wrote: > > On Friday 02 March 2007 11:20, Andreas Jung wrote: > >> --On 2. März 2007 11:10:57 +0100 Gaute Amundsen <[EMAIL PROTECTED]> wrote: > >>> I have tried many varieties, but I can't remember ever getting it to > >>> work... > >>> <snip> > > foo = restrictedTraverse('/foo/bar/index.html/macros/mymacro') > > return foo() > > > > But of course foo is a list, and I can't see a way I can use any of the > > contents.. > > You can't "use it", only inline it into a calling template. E.g.: > > ##Script (Python) "random_macro" > from random import choice # may need module security assertion > macros = context.some_template.macros > macro1 = macros['one'] > macro2 = macros['two'] > macro3 = macros['three'] > return choice((macro1, macro2, macro3)) > > The template would just do: > > <div metal:use-macro="context/random_macro" /> > > > > Tres.
I see.. So it is the use-macro statement that takes the datastructure, and turns it into a tempate/html. I my case I think I will rather try to use a wrapper approach. In script: return container.ajax_tpl(mcr=my_macro_from_big_tpl) In ajax_tpl: <div metal:use-macro="options/mcr" /> But it's good to know the other option allso. Thanks. On Friday 02 March 2007 22:36, David H wrote: > > With Zope 2 I use python scripts to fill my "content" area (2-3 column > css) with macros like so: > # python script: > return container.Budget.BudgetMaint.macros['budgetMaint'] > > It works > > All best, > > David H In other words, a script can return a macro, but is has to be into a use-macro tag. OK Thanks. _______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )