Thread: [htmltmpl] Setting TMPL_VAR from HTML
Brought to you by:
samtregar
From: Peter S. <pe...@ps...> - 2003-01-19 18:24:35
|
It would be nice to set a template variable from a template file itself as well as from code. Here's an example I just ran into of why: Several CGI programs use various .tmpl files which all TMPL_INCLUDE foo.inc. foo.inc itself includes bar.inc, although it is not the only file that does so. However, due to something unique about foo.inc, it would be desirable to pass a parameter from it to bar.inc to change its behavior slightly. In the case I encountered, foo.inc is in a different directory and some relative links in bar.inc therefore broke. bar.inc is a very complicated file and making an edited copy is unattractive. And symlinking is unappealing for other reasons. So using a TMPL_VAR in bar.inc to get the links right seems the best approach; being empty by default would be the right behavior for every use of bar.inc that didn't come from foo.inc. However, I would have to set this variable in each of the CGI programs that ends up using foo.inc. Obviously, I'd rather just change foo.inc. Now, maybe I'm missing some more obvious way of doing it, and maybe I'll find it when I think a bit more about a workaround, but what I'd like to do right now is put something like <TMPL_VAR NAME="fred" VALUE="flintstone"> in foo.inc and have "flintstone" become the value of any <TMPL_VAR NAME="fred"> thereafter in that file or any included files. I tried DEFAULT but it doesn't work that way, and it doesn't look like it's intended to either. I imagine this would throw a large wrench into the implementation model, but I thought I'd ask anyway. -- Peter Scott Pacific Systems Design Technologies http://www.perldebugged.com/ |
From: Roger B. W. <ro...@fi...> - 2003-01-19 18:35:10
|
On Sun, Jan 19, 2003 at 10:23:22AM -0800, Peter Scott wrote: >Now, maybe I'm missing some more obvious way of doing it, and maybe >I'll find it when I think a bit more about a workaround, but what I'd >like to do right now is put something like > <TMPL_VAR NAME="fred" VALUE="flintstone"> Here's a problem with that approach: maybe you don't want the value displayed at the same point at which you set it? I wrote an extension wrapper to HTML::Template which adds the <TMPL_SET> command for this reason; the syntax is much like your version, but it does not display the variable when it's being set. It's very basic but gets the job done. One particular benefit of either of these approaches is that you can query the value of the variable, defined in the template, from the CGI script that's doing it. Roger |
From: Peter S. <Peter@PSDT.com> - 2003-01-19 18:47:30
|
At 06:34 PM 1/19/03 +0000, Roger Burton West wrote: >On Sun, Jan 19, 2003 at 10:23:22AM -0800, Peter Scott wrote: > >Now, maybe I'm missing some more obvious way of doing it, and maybe > >I'll find it when I think a bit more about a workaround, but what I'd > >like to do right now is put something like > > <TMPL_VAR NAME="fred" VALUE="flintstone"> > >Here's a problem with that approach: maybe you don't want the value >displayed at the same point at which you set it? Doh! >I wrote an extension wrapper to HTML::Template which adds the <TMPL_SET> >command for this reason; the syntax is much like your version, but it >does not display the variable when it's being set. It's very basic but >gets the job done. Thanks, I'll check it out! Er... where is it? Doesn't appear to be listed under your CPAN id. >One particular benefit of either of these approaches is that you can >query the value of the variable, defined in the template, from the CGI >script that's doing it. -- Peter Scott Pacific Systems Design Technologies http://www.perldebugged.com/ |
From: Roger B. W. <ro...@fi...> - 2003-01-19 18:52:29
|
On Sun, Jan 19, 2003 at 10:46:38AM -0800, Peter Scott wrote: >Thanks, I'll check it out! Er... where is it? Doesn't appear to be >listed under your CPAN id. It's not published - far too basic. But I'll send a copy your way. Roger |