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...
> > 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" />
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.
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
Zope maillist - Zope@zope.org
** No cross posts or HTML encoding! **
(Related lists -