[Zope] metal:use-macro

David Sumner david at dragontail.com
Tue Dec 30 11:30:50 EST 2003


Hello,
Is it possible to use a variable value for metal:use-macro. I have a
site that is using page templates and I have implemented a scheme that
can have different layouts. Each layout may have different skins.
Layouts allow me to have multiple site designs with the same basic
elements and the same content, but I can position elements such as the
logo or menus in different places. Layouts also allow me to use
different methods for defining a layout, i.e. tables for older browsers
and layers for newer browsers. Each layer may have different skins. A
skin defines which graphical elements and css file to use with a certain
layout.
 
Ideally the layout and the skin for the layout would be changeable by me
or the visitor to the site. The functionality I want to have is to
support older browsers with a basic layout and support new browsers with
a more advanced layout, or having a layout geared to those with bad
eyesight, or allowing those with logins to choose their preferred layout
and skin, or to change the layout or skin of the entire site for basic
design updates by changing a variable.
 
To start off with I just have two properties on the root folder, layout
and skin. I have two scripts, get_skin and get_layout. Calling each
returns the skin or layout using the variables in the layout and skin
properties. In the future I may also check a session variable or perhaps
a querystring parameter for these values. Each page template in the site
currently begins with a metal:use statement and so far the value is a
static string. What I want to accomplish is to insert a variable for the
value. Everything I have tried thus far has failed to work. Can you use
statements in the metal directives that you can use in the tal
directives? Does metal except string: and python: combinations and how
could I best insert a dynamic value for this directive given a layout
variable. Different pages use different templates within the layout. I
have a frontpage template, sub_page template and sub_page_index
template.
 
<html
metal:use-macro="container/layouts/default/frontpage/macros/standard">
<div metal:fill-slot="content"></div>
</html>
 
The value for metal shown above consists of the layout variable portion
'container/layouts/default' and the static layout template portion
'/frontpage/macros/standard'. How could I set the value of the
metal:use-macro directive to a string value containing the layout
variable and a static string portion as show above?
 
Thanks,
David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope/attachments/20031230/adb00557/attachment.html


More information about the Zope mailing list