in reply to HTML::Template Question / Confusion

I would say what you really want to do is have a container.tmpl that defines the common header, footer, possibly navigation and so on (Once And Only Once principle), and then separate, probably very small templates for the pages to generate which are included into the container per a variable passed to it.

Makeshifts last the longest.

  • Comment on Re: HTML::Template Question / Confusion

Replies are listed 'Best First'.
Re: Re: HTML::Template Question / Confusion
by Anonymous Monk on Jan 11, 2003 at 23:57 UTC
    Aristotle,

    That actually makes sense to me .... I was wondering if you could explain a little more in this regard.

    Would greatly appreciate it.

    Thanks, Surya
      Just what is unclear? There's not much to explain I think, so I'm not sure what to clarify. What you'd do is basically something like this:
      # ... my @valid_page = qw(order cart shelf intro register); my %collected_data = (foo => 1, bar => 2, ); my $requested_page = $cgi->param('page'); my ($actual_page) = grep $requested_page eq $_, @valid_page; print("Content-type: text/plain\n\nNo valid page requested."), exit unless $actual_page; my $container = HTML::Template->new_file('container.tmpl'); my $template = HTML::Template->new_file($actual_page . '.tmpl'); $template->param(%collected_data); # fill in actual page $container->param( %collected_data, CONTENT => $template->output, # insert into container ); print "Content-type: text/html\n\n", $container->output; # we're done
      You would then have order.tmpl, cart.tmpl, shelf.tmpl, intro.tmpl, register.tmpl and container.tmpl in a directory, and the latter would have a <TMPL_VAR NAME="CONTENT"> somewhere, so that the other template's output is inserted at that point. If you need any pointers, tell me what you have trouble with.

      Makeshifts last the longest.