[Zope] Can one nest macros with slots?
Doyon, Jean-Francois
Jean-Francois.Doyon at CCRS.NRCan.gc.ca
Thu Jan 26 10:30:45 EST 2006
The situation:
I have a "main_template" that does the looks of the site, with a "main" slot
where the content goes, much like the standard templates give you.
Now I have objects that behave similarly and share some interface
components, so I figured I could try to create another macro, with another
slot to fit inside that "main" slot, that all of the objects/content types
could re-use.
So I end up doing what I said below ... But that doesn't work :(
I've come up with an alternative for now, though it's not as elegant as this
I think ... But it'll have to do.
If you care to keep reading, the details:
main_template:
<define-macro="master">
<... some html ...>
<define-slot="main" />
<... some html ...>
</define-macro>
shared template:
<use-macro="main_template/master">
<fill-slot="main">
<define-macro="shared">
<... some html ...>
<define-slot="sharedslot" />
<... some html ...>
</define-macro>
</fill-slot>
</use-macro>
Object specific template:
<use-macro="shared">
<fill-slot="sharedslot">
<... some html ...>
</fill-slot>
</use-macro>
This works without errors, except that only the first macro "shared" comes
out, the "master" one never gets processed :( I would've expected this to be
recursive ... Ah well :(
Thanks!
J.F.
-----Original Message-----
From: zope-bounces at zope.org [mailto:zope-bounces at zope.org] On Behalf Of J
Cameron Cooper
Sent: January 26, 2006 12:52 AM
To: Doyon, Jean-Francois
Cc: zope at zope.org
Subject: Re: [Zope] Can one nest macros with slots?
Doyon, Jean-Francois wrote:
> I can't seem to do this:
>
> <use-macro>
> <fill-slot>
> <define-macro>
> <... Some html ...>
> <define-slot></define-slot>
> <... Some html ...>
> </define-macro>
> </fill-slot>
> </use-macro>
>
> Allowing me to nest multiple reusable templates?
>
> I have objects with common interfaces which could easily share templates
...
> If I could do this! (The shared template still needs to endup in the
> "master" template).
>
> Or are there other techniques to achieve this?
Macros are decided at compile time so that you can ask a template (which is
not called) for its macros::
here/main_template/macros/master
The code above would have macros being created in some other template at the
time this macros is used, and I cannot imagine how they would be available.
Why is a macro with whatever uses your common interfaces not suitable?
You scenario is too vague for any other advice.
--jcc
--
Building Websites with Plone
http://plonebook.packtpub.com/
_______________________________________________
Zope maillist - Zope at 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 )
More information about the Zope
mailing list