HTML-Template-Pro
view release on metacpan or search on metacpan
lib/HTML/Template/SYNTAX.pod view on Meta::CPAN
return unless /\.tmpl$/;
HTML::Template->new(
filename => "$File::Find::dir/$_",
cache => 1,
);
},
'/path/to/templates',
'/another/path/to/templates/'
);
Note that you'll need to modify the "return unless" line to specify
the extension you use for your template files - I use .tmpl, as you
can see. You'll also need to specify the path to your template files.
One potential problem: the "/path/to/templates/" must be EXACTLY the
same path you use when you call HTML::Template->new(). Otherwise the
cache won't know they're the same file and will load a new copy -
instead getting a speed increase, you'll double your memory usage. To
find out if this is happening set cache_debug => 1 in your application
code and look for "CACHE MISS" messages in the logs.
=item 8
Q: What characters are allowed in TMPL_* NAMEs?
A: Numbers, letters, '.', '/', '+', '-' and '_'.
=item 9
Q: How can I execute a program from inside my template?
A: Short answer: you can't. Longer answer: you shouldn't since this
violates the fundamental concept behind HTML::Template - that design
and code should be seperate.
But, inevitably some people still want to do it. If that describes
you then you should take a look at
L<HTML::Template::Expr|HTML::Template::Expr>. Using
HTML::Template::Expr it should be easy to write a run_program()
function. Then you can do awful stuff like:
<tmpl_var expr="run_program('foo.pl')">
Just, please, don't tell me about it. I'm feeling guilty enough just
for writing HTML::Template::Expr in the first place.
=item 10
Q: Can I get a copy of these docs in Japanese?
A: Yes you can. See Kawai Takanori's translation at:
http://member.nifty.ne.jp/hippo2000/perltips/html/template.htm
=item 11
Q: What's the best way to create a <select> form element using
HTML::Template?
A: There is much disagreement on this issue. My personal preference
is to use CGI.pm's excellent popup_menu() and scrolling_list()
functions to fill in a single <tmpl_var select_foo> variable.
To some people this smacks of mixing HTML and code in a way that they
hoped HTML::Template would help them avoid. To them I'd say that HTML
is a violation of the principle of separating design from programming.
There's no clear separation between the programmatic elements of the
<form> tags and the layout of the <form> tags. You'll have to draw
the line somewhere - clearly the designer can't be entirely in charge
of form creation.
It's a balancing act and you have to weigh the pros and cons on each side.
It is certainly possible to produce a <select> element entirely inside the
template. What you end up with is a rat's nest of loops and conditionals.
Alternately you can give up a certain amount of flexibility in return for
vastly simplifying your templates. I generally choose the latter.
Another option is to investigate HTML::FillInForm which some have
reported success using to solve this problem.
=back
=head1 BUGS
I am aware of no bugs - if you find one, join the mailing list and
tell us about it. You can join the HTML::Template mailing-list by
visiting:
http://lists.sourceforge.net/lists/listinfo/html-template-users
Of course, you can still email me directly (sam@tregar.com) with bugs,
but I reserve the right to forward bug reports to the mailing list.
When submitting bug reports, be sure to include full details,
including the VERSION of the module, a test script and a test template
demonstrating the problem!
If you're feeling really adventurous, HTML::Template has a publically
available Subversion server. See below for more information in the
PUBLIC SUBVERSION SERVER section.
=head1 CREDITS
This module was the brain child of my boss, Jesse Erlbaum
( jesse@vm.com ) at Vanguard Media ( http://vm.com ) . The most original
idea in this module - the <TMPL_LOOP> - was entirely his.
Fixes, Bug Reports, Optimizations and Ideas have been generously
provided by:
Richard Chen
Mike Blazer
Adriano Nagelschmidt Rodrigues
Andrej Mikus
Ilya Obshadko
Kevin Puetz
Steve Reppucci
Richard Dice
Tom Hukins
Eric Zylberstejn
David Glasser
( run in 0.850 second using v1.01-cache-2.11-cpan-364913b4093 )