Re: [htmltmpl] Re: H::T future
Brought to you by:
samtregar
From: Puneet K. <pk...@ei...> - 2003-12-09 21:53:49
|
Karen J. Cravens wrote: > On Tue, 9 Dec 2003, Puneet Kishor wrote: > > PK>I achieve consistent look and feel via css. I achieve consistent layout > PK>via H::T. > > I use CSS as well, but that doesn't change how the title gets handled. > Perhaps if you could give an example of how you build the headers, it > might be clearer to us. > well, now that you put it that way, I feel I might be the one who is not really understanding what you all are saying, and hence, am perhaps barking tangentially ;-). Anyway, here are a couple of examples (there might be typos, but should be sufficient for explanation purpose). Does this make sense? Btw, I prefer Setup 1 over Setup 2 because designer types can actually visualize different pages and the entire site layout -- even more easily if they are using Golive or Dreamweaver or somesuch. ======================================================================== Setup 1. Using separate templates for each page ======================================================================== .. my $act = !defined(param('act')) ? 'welcome' : scalar(param('act')); # Invoke template based on act. There are separate templates for # each page. The templates are stored in a separate directory so # "designer" types can work on them without worrying the scripts. my $template = HTML::Template->new(filename => "$act.tmpl"); $template->param('content'=>&content($act), 'title'=>&title($act)); .. -------------------------------------------------------------------- meantime, in the templates (this one is called "welcome.tmpl") -------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <head> <title><tmpl_var title></title> <link rel="stylesheet" type="text/css" href="../myapp.css"> </head> <body> <div class="content"><tmpl_var content></div> </body> </html> ====================================================================== Setup 2. Using one template for all the pages ====================================================================== .. my $act = !defined(param('act')) ? 'welcome' : scalar(param('act')); # Invoke template. A single template for the entire app, but the # header and footer can be changed based on act. The templates are # stored in a separate directory so "designer" types can work on # them without worrying the scripts. my $template = HTML::Template->new(filename => 'index.tmpl'); $template->param('content'=>&content($act), 'title'=>&title($act)); .. -------------------------------------------------------------------- meantime, in the templates -------------------------------------------------------------------- header.tmpl -------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <head> <title><tmpl_var title></title> <link rel="stylesheet" type="text/css" href="../myapp.css"> </head> <body> -------------------------------------------------------------------- index.tmpl -------------------------------------------------------------------- <tmpl_include header.tmpl> <div class="content"><tmpl_var content></div> <tmpl_include footer.tmpl> -------------------------------------------------------------------- footer.tmpl -------------------------------------------------------------------- <hr> another app served by the wonders of Perl and HTML::Template </body> </html> |