[Petal] macro substitution?

Corey corey_s at qwest.net
Thu Apr 6 01:03:58 BST 2006


Hello!

I'm new to petal - have a question regarding best-practices, specifically regarding
metal includes/macros.

In summary, I want to be able to dynamically utilize 'metal:use-macro', so that my
calling cgi can set a variable, which will be passed to a base/common petal template,
which will then use the intended macro, as defined/set in the aformentioned variable.

Say I have:

.../dir/foo.html
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">

<head>
  <title>Foo</title>
</head>

<body metal:define-macro="body">
   <p>FOO!</p>
</body>

</html>


and I also have a:

.../dir/bar.html
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">

<head>
  <title>Bar</title>
</head>

<body metal:define-macro="body">
   <p>BAR!</p>
</body>

</html>


finally, I have a:

.../index.html
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">

<head>
  <title>Foo or Bar?</title>
</head>

<body metal:use-macro="dir/bar.html#body" petal:omit-tag="">

</body>

</html>


Here's the question:

What's the best/proper way of changing that use-macro include in 'index.html' to
dynamically decide on which macro to use - for instance if I have a variable defined,
say, $action, which is either 'foo.html' or 'bar.html'?

Basically, somthing along the lines of the following ( which doesn't work ):

<body metal:use-macro="dir/${action}#body" petal:omit-tag="">



Many thanks!



More information about the Petal mailing list