zeitform Internet Dienste      

[Inhalt] -> [Template]

[info]


           

Template: Text-Templates zur Ausgabe nutzen


HTML::Template im Zusammenspiel mit CGI-Skripten

Da CGI-Skripte in der Regel größere Mengen an HTML-Code ausgeben und die Verwendung der HTML-Methoden des Moduls CGI nicht besonders freundlich mit Web-Designern umgehen, bietet sich die Trennung von HTML-Code und Skript an.

HTML::Template stellt die Funktionalität zur Verfügung:

   use CGI;
   use HTML::Template;

   my $q = CGI->new;
   my $template = HTML::Template->new(filename => "/path/to/template");

   my @loop;  # fill the loop
   foreach (method_to_generate_rows()) {

     push @loop, { foo => $foo,
                   bar => $bar,
                   baz => $baz,
                 };
   }

   $template->param(
                     loop  => [ @loop ],     # TMPL_LOOP
                     name  => $some_name,    # TMPL_VAR
                     text  => $some_text,    # TMPL_VAR
                     bool  => 1,             # TMPL_IF
                    );

   print $q->header();
   print $template->output;

In der korrespondierenden HTML-Template werden die gesetzten Variablen vor der Ausgabe eingefügt:

   <html>
     <head><title>Something</title></head>
     <body>
  
       <!-- hier die Verwendung von Variablen -->
       <p>Hier die Aufstellung von <TMPL_VAR NAME=name> und etwas Text:</p>
       <p><TMPL_VAR NAME=text></p>

       <!-- hier die Verwendung einer Schleife -->
       <table>
         <TMPL_LOOP NAME=loop>    <!-- Schleifenanfang -->
         <tr>
           <td><TMPL_VAR NAME=foo></td>
           <td><TMPL_VAR NAME=bar></td>
           <td><TMPL_VAR NAME=baz></td>
         </tr>
         </TMPL_LOOP>             <!-- Schleifenende -->
       </table>

       <!-- hier die Verwendung einer Abfrage -->
       <TMPL_IF NAME=bool>        
          <p>Gib diesen Text aus</p>
       <TMPL_ELSE>
          <p>oder diesen</p>
       </TMPL_IF>

     </body>
   </html>

Seitenanfang


Zusammengestellt von Alex Pleiner
© 2001-2003 zeitform Internet Dienste   Bei Problemen wenden Sie sich bitte an den Webmaster
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1.