Manual Reference Pages - HTML::TEMPLATE::FAQ (3)
HTML::Template::FAQ - Frequently Asked Questions about HTML::Template
In the interest of greater understanding Ive started a FAQ section of
the perldocs. Please look in here before you send me email.
FREQUENTLY ASKED QUESTIONS
Is there a place to go to discuss HTML::Template and/or get help?
Theres a mailing-list for discussing HTML::Template at
firstname.lastname@example.org. Join at:
If you just want to get email when new releases are available you can
join the announcements mailing-list here:
Is there a searchable archive for the mailing-list?
Yes, you can find an archive of the SourceForge list here:
I want support for <TMPL_XXX>! How about it?
Maybe. I definitely encourage people to discuss their ideas for
HTML::Template on the mailing list. Please be ready to explain to me
how the new tag fits in with HTML::Templates mission to provide a fast,
lightweight system for using HTML templates.
NOTE: Offering to program said addition and provide it in the form of
a patch to the most recent version of HTML::Template will definitely
have a softening effect on potential opponents!
I found a bug, can you fix it?
That depends. Did you send me the VERSION of HTML::Template, a test
script and a test template? If so, then almost certainly.
If youre feeling really adventurous, HTML::Template is publicly
available on GitHub (https://github.com/mpeters/html-template). Please
feel free to fork it and send me a pull request with any changes you have.
<TMPL_VAR>s from the main template arent working inside a <TMPL_LOOP>! Why?
This is the intended behavior. <TMPL_LOOP> introduces a separate
scope for <TMPL_VAR>s much like a subroutine call in Perl
introduces a separate scope for my variables.
If you want your <TMPL_VAR>s to be global you can set the
global_vars option when you call new(). See above for documentation
of the global_vars new() option.
How can I pre-load my templates using cache-mode and mod_perl?
Add something like this to your startup.pl:
print STDERR "Pre-loading HTML Templates...\n";
return unless /\.tmpl$/;
filename => "$File::Find::dir/$_",
cache => 1,
Note that youll need to modify the return unless line to specify
the extension you use for your template files - I use .tmpl, as you
can see. Youll also need to specify the path to your template files.
One potential problem: the /path/to/templates/ must be <B>EXACTLYB> the
same path you use when you call HTML::Template->new(). Otherwise
the cache wont know theyre the same file and will load a new copy -
instead getting a speed increase, youll 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.
What characters are allowed in TMPL_* names?
Numbers, letters, ., /, +, - and _.
How can I execute a program from inside my template?
Short answer: you cant. Longer answer: you shouldnt since this violates
the fundamental concept behind HTML::Template - that design and code
should be separate.
But, inevitably some people still want to do it. If that describes
you then you should take a look at HTML::Template::Expr. Using
HTML::Template::Expr it should be easy to write a run_program()
function. Then you can do awful stuff like:
Just, please, dont tell me about it. Im feeling guilty enough just
for writing HTML::Template::Expr in the first place.
Whats the best way to create a <select> form element using HTML::Template?
There is much disagreement on this issue. My personal preference is
to use CGI.pms 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 Id say
that HTML is a violation of the principle of separating design from
programming. Theres no clear separation between the programmatic
elements of the <form> tags and the layout of the <form> tags. Youll have to draw the line somewhere - clearly the designer
cant be entirely in charge of form creation.
Its 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 rats 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.
|perl v5.20.3 ||HTML::TEMPLATE::FAQ (3) ||2013-10-21 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.