GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  HTML::TEMPLATE::FAQ (3)

.ds Aq ’

NAME

HTML::Template::FAQ - Frequently Asked Questions about HTML::Template

CONTENTS

SYNOPSIS

In the interest of greater understanding I’ve 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?

There’s a mailing-list for discussing HTML::Template at html-template-users@lists.sourceforge.net. Join at:



   http://lists.sourceforge.net/lists/listinfo/html-template-users



If you just want to get email when new releases are available you can join the announcements mailing-list here:



    http://lists.sourceforge.net/lists/listinfo/html-template-announce



    Is there a searchable archive for the mailing-list?

Yes, you can find an archive of the SourceForge list here:



    http://dir.gmane.org/gmane.comp.lang.perl.modules.html-template



    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::Template’s 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 you’re 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 aren’t 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:



    use HTML::Template;
    use File::Find;

    print STDERR "Pre-loading HTML Templates...\n";
    find(
        sub {
            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 <B>EXACTLYB> 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.

    What characters are allowed in TMPL_* names?

Numbers, letters, ’.’, ’/’, ’+’, ’-’ and ’_’.

    How can I execute a program from inside my template?

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 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:



    <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.

    What’s 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.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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 HTML::TEMPLATE::FAQ (3) 2013-10-21

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.