Hi Michael

On Tue, 2010-10-12 at 16:33 -0400, Michael De Soto wrote:
> On Tue, Oct 12, 2010 at 3:32 PM, Michael Peters <[email protected]>wrote:

The other way would be to use a different templating module, with a
different syntax than HTML::Template, which - hopefully - MT would
ignore.

I've switched to Text::Xslate, which uses <: $var_name :>.

I don't use MT.

What's good about Text::Xslate is that you pass in a hashref of options,
which is much more efficient than calling param() once for each option.

See also http://xslate.org/benchmark.html

In cgiapp_prerun() I do:

$self -> param
(
 templater =>
   Text::Xslate -> new
   (
        input_layer => '',
        path        => ${$self -> param('config')}{template_path},
   )
);

which gets passed into a viewer as the value of a templater() attribute,
after which I can do:

my($param)      =
{
 context           => $context,
 current_page_name => $$page{name},
 design_name       => $$design{name},
 homepage          => $$page{homepage} eq 'Yes' ? 'checked' : '',
 name              => $$page{name},
 sid               => $self -> session -> id,
 site_name         => $$site{name},
 submit_text       => 'Save',
 template_name     => mark_raw($self -> build_select('asset_types',
$asset{asset_type_id}) ),
};

return $self -> templater -> render('page.tx', $param);

That single call to render() is very nice.

mark_raw() is part of Text::Xslate.

-- 
Ron Savage
http://savage.net.au/
Ph: 0421 920 622


#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to